Receipt example
What a real receipt looks like.
Open one change in KarmanFlow and you read the same shape: who asked, what policy decided, what state moved, what events fired. No tools to switch.
One command, one receipt
CreateReservation, shaped like the audit trail.
Every change in KarmanFlow lands here. Replay-able. Audit-friendly. Same shape whether a human, a system, or an agent caused it.
{
"commandId": "01928a4f-3b21-7c80-b3a9-8e2a4c1d92e0",
"tenantId": "01928a4f-1102-7c00-9a11-5e21bb2904f1",
"commandType": "CreateReservation",
"status": "SUCCEEDED",
"version": 1,
"idempotencyKey": "create-reservation-shopify-us-ord-9001",
"correlationId": "01928a4f-3b21-7c80-b3a9-8e2a4c1d92e1",
"causationId": "01928a4f-3b21-7c80-b3a9-8e2a4c1d92dd",
"actorType": "USER",
"actorId": "user_op_sam",
"requestedOn": "2026-05-16T14:02:31.118Z",
"completedOn": "2026-05-16T14:02:31.146Z",
"traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",
"policyContext": {
"scopes": [
"inventory.reservation:create"
],
"environmentId": "prod",
"authMethod": "session",
"oversellPolicy": "STRICT"
},
"payload": {
"variantId": "01928a4f-3b21-7c80-b3a9-8e2a4c1d9301",
"variantSku": "TSHIRT-NAVY-M",
"locationId": "01928a4f-3b21-7c80-b3a9-8e2a4c1d9311",
"salesChannelId": "shopify-us",
"quantity": 3,
"reservationType": "ORDER_HOLD",
"referenceType": "ORDER",
"referenceId": "ord_9001",
"expiresOn": "2026-05-16T14:17:31.146Z",
"expectedInventoryLevelVersion": 47
},
"response": {
"reservationId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9320",
"inventoryLevelId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9322",
"reservationStatus": "ACTIVE",
"reservedQuantity": 3,
"inventoryLevelVersion": 48
},
"events": [
{
"eventId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9330",
"eventType": "inventory.reservation.created",
"entityType": "RESERVATION",
"entityId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9320",
"entityVersion": 1,
"occurredOn": "2026-05-16T14:02:31.146Z"
},
{
"eventId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9331",
"eventType": "inventory.reservation.activated",
"entityType": "RESERVATION",
"entityId": "01928a4f-3b22-7c80-b3a9-8e2a4c1d9320",
"entityVersion": 1,
"occurredOn": "2026-05-16T14:02:31.146Z"
}
]
}Field guide
What each field is for.
Ten fields explain ninety percent of what an operator, a reviewer, or an agent needs to answer about any change.
- commandTypeThe named command that ran. CreateReservation is the single write path for new holds; the same name appears in the registry, GraphQL, and MCP tool surface.
- statusOutcome of the command. SUCCEEDED, FAILED, CONFLICT, or REJECTED. A FAILED receipt still exists; nothing is dropped silently.
- idempotencyKeyStable key scoped to the tenant and environment. A retry with the same key returns this receipt instead of running again.
- correlationId and causationIdHow this receipt connects to upstream work. correlationId binds related receipts together; causationId points at the direct cause.
- actorType and actorIdWho asked for the change. One of USER, SYSTEM, CONNECTOR, AGENT, or SERVICE. Every receipt is auditable back to a single actor.
- policyContextThe decision surface. Scopes, environment, auth method, and the oversell policy that applied. STRICT here means the command rejected the hold if it would have driven on-hand negative.
- traceparentW3C Trace Context. Carries distributed trace data so the receipt joins with logs, spans, and downstream worker output across services.
- expectedInventoryLevelVersionOptimistic concurrency. The aggregate version the caller expected; mismatch produces a VERSION_CONFLICT receipt instead of a clobbered row.
- responseWhat the command produced. The new reservation id, status, reserved quantity, and the post-write inventory level version that downstream readers should use.
- eventsImmutable domain events emitted in the same Postgres transaction. Every subscriber (read cache, datalake, billing, webhooks) sees the same record.
Try it on your data
See receipts from your own workflows.
The preview workspace runs against demo data shaped to your operating model. Every action you take leaves a receipt with the same fields shown here.