notification.channel.register
Register a message channel and the SHAPE of its template (the fields the admin editor draws and the kernel validates). The channel key is open — the kernel never knows what ‘whatsapp’ means. Re-registering the same key updates the declaration, which is how a driver keeps its schema current across upgrades.
- Scope:
extensions.write - System: no
- Reachable from:
POST /v1/commands/notification.channel.register(tenant credential) · MCP toolnotification.channel.register· SDKclient.call('notification.channel.register', …) - Events:
notification.config.updated
Input (JSON Schema)
Section titled “Input (JSON Schema)”{ "properties": { "extension_id": { "anyOf": [ { "minLength": 1, "type": "string" }, { "type": "null" } ] }, "key": { "pattern": "^[a-z][a-z0-9_]*$", "type": "string" }, "label": { "maxLength": 80, "minLength": 1, "type": "string" }, "notice": { "anyOf": [ { "maxLength": 400, "minLength": 1, "type": "string" }, { "type": "null" } ] }, "variant_schema": { "items": { "properties": { "help": { "type": "string" }, "label": { "minLength": 1, "type": "string" }, "name": { "pattern": "^[a-z][a-z0-9_]*$", "type": "string" }, "options": { "items": { "properties": { "label": { "type": "string" }, "value": { "type": "string" } }, "required": [ "value", "label" ], "type": "object" }, "type": "array" }, "required": { "type": "boolean" }, "template": { "type": "boolean" }, "type": { "enum": [ "text", "multiline", "html", "select", "variable_list" ], "type": "string" } }, "required": [ "name", "label", "type" ], "type": "object" }, "type": "array" } }, "required": [ "key", "label", "variant_schema" ], "type": "object"}Result (200)
Section titled “Result (200)”{ "additionalProperties": false, "properties": { "channel_key": { "type": "string" } }, "required": [ "channel_key" ], "type": "object"}Errors
Section titled “Errors”validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)