Send a fact
Sends one fact, validated against its contract version, stored and attached to a flow atomically; answered once durably stored.
Rules
- Validation covers the envelope, then
dataand references. A reference carries exactly the scope keys its type declares, non-empty, never trimmed. - Idempotent by
producerandfactId: resending the same content answers200,duplicate: true. Facts are immutable: a change needs a newfactId. - At most 256 KiB per envelope by default and five
exactreferences. - Strict envelope: a duplicate, or a member the envelope, its subject or a reference does not declare (exact, case-sensitive), is refused;
datafollows the contract’s schema. The tenant comes from the token. - Only the producer service the namespace is bound to may send facts under it; refusals are recorded for audit. In multi-tenant mode that is the producer’s service credential for the tenant.
- If an operator disabled fact emission for this tenant, keep the fact pending and retry.
x-sensitivityfields are stored protected, never echoed in errors. A reference whose type hasmask: documentmust have 11 or 14 digits.
Responses
201stored;200duplicate.403SF-0005,SF-0014,SF-0020,SF-0027,SF-0028.409SF-0016;413SF-0012.422SF-0001,SF-0006,SF-0007,SF-0008,SF-0019,SF-0026.503SF-0094correlation contention, withRetry-After: 1: resend the same envelope.
Autorizaciones
JWT issued by the identity provider. A producer calls with a service credential issued for the tenant it sends facts for; a reader calls with a user token or a service credential. The tenant is always taken from the token, never from the request path, query or body.
Cuerpo
Payload validated against the contract's JSON Schema.
Envelope format version. Always 1.
1
Identifier the producer assigns to this occurrence (UUID). Redelivering the same content with the same factId is an idempotent replay.
"01a15493-ba10-7b21-9d44-3c1f8e2a9b01"
Namespace the contract was registered under.
"acme.checkout"
When the business event happened, as an RFC 3339 timestamp; it is stored and returned in UTC.
"2026-10-19T14:32:10Z"
Producer that emits the fact, as declared in the contract.
"checkout-api"
Contract version (semantic version) the payload follows. The version must be active.
"1.0.0"
Business entity the fact is about.
Fact type, as declared in the contract.
"checkout.order_placed"
Typed references that correlate this fact with facts of other producers into one flow. Omit it only when the contract declares no required reference.
Respuesta
Duplicate delivery: this producer and factId are already stored with the same content. Nothing changed; the body carries duplicate: true.
True when this delivery repeated a stored fact with the same content: an idempotent replay that stored nothing new.
Identifier the producer assigned to the fact.
Current id of the flow the fact belongs to, assigned by the server and opaque.
When System Facts first stored the fact; a replay returns the original time. RFC 3339, UTC.
Producer that sent the fact.

