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 toolnotification.send· SDKclient.call('notification.send', …) - Events:
notification.send_requested
Input (JSON Schema)
Section titled “Input (JSON Schema)”{ "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"}Result (200)
Section titled “Result (200)”{ "additionalProperties": false, "properties": { "customer_id": { "type": "string" }, "requested": { "type": "boolean" }, "type_key": { "type": "string" } }, "required": [ "type_key", "customer_id", "requested" ], "type": "object"}Errors
Section titled “Errors”validation_failed (400) · unauthorized (401) · forbidden (403) · conflict (409) · internal (500)