Send an event to a machine instance.
Send an event to the machine instance that was previously created by
calling POST /machines/{machineSlug}
.
The allowWrite
function for the machine definition version will be called
to authorize the send and, if it fails, a 403 with code
rejected-by-machine-authorizer
will be returned.
Otherwise, the state of the machine instance after any transitions resulting from the event will be returned.
The request will wait for the machine to settle before returning a response. Settling means that the machine has reached a stable state and has no child services running.
All top-level events have a 10 second timeout for the machine to settle.
If the machine does not settle within 10 seconds but has completed at least one transition successfully, a 200 with the current state will be returned, the child services will be stopped, and error events will be delivered for each stopped service before the next event is sent.
Path parameters
-
The slug/name for the machine definition.
Minimum length is
1
. Format should match the following pattern:^[a-zA-Z0-9_-]{1,128}$
. -
The slug/name for the machine instance.
Minimum length is
1
. Format should match the following pattern:^[a-zA-Z0-9_-]{1,128}$
.
Body
Request to send an event to an instance of a machine.
curl \
-X POST https://api.statebacked.dev/machines/my-machine/i/user-1234/events \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"event":{"type":"string"}}'
{
"event": {
"type": "string"
}
}
{
"event": {
"type": "string"
}
}
{
"state": "idle",
"done": false,
"tags": [
"some-tag"
]
}
{
"state": {
"parent": {
"nested1": "idle"
}
},
"publicContext": {
"user": "u_1234"
},
"done": false,
"tags": [
"some-tag"
]
}
{
"values": {
"state": {
"parent": {
"nested1": "idle",
"nested2": "idle"
}
},
"publicContext": {
"connectedDocuments": [
"doc_1234",
"doc_5678"
]
},
"done": false,
"tags": [
"some-tag"
]
}
}
{
"done": false,
"tags": [
"some-tag"
],
"state": "idle"
}
{
"error": "string",
"code": "missing-scope"
}
{
"error": "string",
"code": "missing-scope"
}