Emit event¶
Emits an event of the account : its listeners run with the data, and the call answers what they returned.
| Method | POST |
| URL | /api/system-api/admin/emit-event : admin is the user path of your account |
| Body | { name, eventData?, executeListeners? } or an array of them |
| Answer | data : the event with outputArr, one entry per listener |
| From code | g.sys.system.emitEvent |
The call¶
Body
{ "name": "order-placed", "eventData": { "order_no": 1001 }, "executeListeners": [ "send-invoice" ] }
Answer
{
"success": true,
"statusCode": 200,
"data": { "name": "order-placed", "eventData": { "order_no": 1001 }, "executeListeners": [ "send-invoice" ], "outputArr": [ { "listenerName": "send-invoice", "output": { "notified": true } } ] }
}
Body : several events
[
{ "name": "order-placed", "eventData": { "order_no": 1001 } },
{ "name": "stock-changed", "executeListeners": [ "sync-warehouse", "alert-low-stock" ] }
]
executeListenersnames the listeners to run ; absent, every listener of the event runs.- A chain which comes back to an event already running is stopped : no infinite loop.
From code¶
const result = await g.sys.system.emitEvent('order-placed', { order_no: 1001 }, [ 'send-invoice' ]);
g.logger.log(result.outputArr);
Access and settings¶
- Over HTTP, a system API answers once its settings give it
apiAccessType: TOKEN_ACCESS(the token of an API user whose group grants this system API, inx-am-authorization) orIS_PUBLIC. Without settings it isNO_ACCESS: your code calls it throughg.sys, the admin panel tests it, and an HTTP call is refused. The group must also grant the event. - The settings can also cache the answer or require person tokens (
authProviders) ; pre and post hooks run around it like around any API. - The request headers apply :
x-am-response-case,x-am-content-type-response,x-am-internationalization,x-am-tenant-username…
Errors¶
| Code | When |
|---|---|
400 |
The body is wrong : the message names the missing or invalid key. |
401 |
No valid API user token, or the API is NO_ACCESS : You are not authorized to access this API. |
403 |
No group grants this system API. |