Skip to content
v0.3

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 tool notification.channel.register · SDK client.call('notification.channel.register', …)
  • Events: notification.config.updated
{
"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"
}
{
"additionalProperties": false,
"properties": {
"channel_key": {
"type": "string"
}
},
"required": [
"channel_key"
],
"type": "object"
}

validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)