Skip to content
v0.3

notification.send

Send one of an app’s OWN message types (ext.<app>.<name>) to a customer. The caller names the type, the customer BY ID and the variables its type declared — never an address: the kernel resolves the contact, renders inside itself and drives the channel driver, so an app can message a shopper without ever learning how to reach them. The message goes out just after this command commits (it rides the outbox, so it retries and leaves a trail), fanning out to every channel switched on for the type, with one record per channel.

  • Scope: notification.send
  • System: no
  • Reachable from: POST /v1/commands/notification.send (tenant credential) · MCP tool notification.send · SDK client.call('notification.send', …)
  • Events: notification.send_requested
{
"properties": {
"customer_id": {
"minLength": 1,
"type": "string"
},
"data": {
"additionalProperties": {},
"default": {},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"store_id": {
"anyOf": [
{
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
]
},
"type_key": {
"minLength": 1,
"type": "string"
}
},
"required": [
"type_key",
"customer_id"
],
"type": "object"
}
{
"additionalProperties": false,
"properties": {
"customer_id": {
"type": "string"
},
"requested": {
"type": "boolean"
},
"type_key": {
"type": "string"
}
},
"required": [
"type_key",
"customer_id",
"requested"
],
"type": "object"
}

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