studio.lerian.tracer.* contract on this page.
CloudEvents envelope
Every public JSON fact uses the shared envelope below. The headers carry routing and schema information. The Kafka value carries the JSONdata object.
Topics, manifest, and routing
The application topic identifies Midaz Tracer, not an individual event. Route a record byce-resourcetype and ce-eventtype, and validate ce-schemaversion before decoding its data value.
- Facts:
lerian.streaming.tracer - Route DLQ:
lerian.streaming.tracer.dlq - Manifest:
GET /v1/streaming/manifestexposes the public JSON catalog and topic mapping, including while publication is off.
Delivery and failure semantics
Publication is disabled untilSTREAMING_ENABLED=true and broker configuration succeeds. When enabled, Tracer emits after the business-state change. It does not use a transactional outbox.
- Policy: every public JSON definition is a
factwith direct delivery,on_routable_failureDLQ handling, andfallback_on_circuit_open. - Actual Tracer boundary: because Tracer has no outbox, the circuit-open fallback cannot persist an event. Emit paths log and swallow publication errors instead of returning them to the business command.
- Consumer requirement: broker delivery is at least once for published records. Make handlers idempotent and deduplicate with
(ce-source, ce-id).
Complete data contracts
These TypeScript-style declarations mirror the CloudEvent data JSON tags in Midaz. Every field name is its JSON name. ? means the field has omitempty. | null means the field is nullable and never absent. A source-type comment preserves the inventory type exactly. All fields in these 12 Tracer payloads are present (omitempty: false). Nullable fields still carry null when absent.
limit.activated
limit.activated
Definition key:
limit.activated (LimitActivatedDefinition)Event: studio.lerian.tracer.limit.activatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: ActivateLimitCommand successfully activates a limit.Subject: p.IDlimit.created
limit.created
Definition key:
limit.created (LimitCreatedDefinition)Event: studio.lerian.tracer.limit.createdTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.1.0 (application/json)Fires when: CreateLimitCommand successfully creates a limit.Subject: p.IDlimit.deactivated
limit.deactivated
Definition key:
limit.deactivated (LimitDeactivatedDefinition)Event: studio.lerian.tracer.limit.deactivatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DeactivateLimitCommand successfully deactivates a limit.Subject: p.IDlimit.deleted
limit.deleted
Definition key:
limit.deleted (LimitDeletedDefinition)Event: studio.lerian.tracer.limit.deletedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DeleteLimitCommand successfully deletes a limit.Subject: p.IDlimit.drafted
limit.drafted
Definition key:
limit.drafted (LimitDraftedDefinition)Event: studio.lerian.tracer.limit.draftedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DraftLimitCommand successfully moves a limit to DRAFT.Subject: p.IDlimit.updated
limit.updated
Definition key:
limit.updated (LimitUpdatedDefinition)Event: studio.lerian.tracer.limit.updatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.1.0 (application/json)Fires when: UpdateLimitCommand successfully updates a limit.Subject: p.IDrule.activated
rule.activated
Definition key:
rule.activated (RuleActivatedDefinition)Event: studio.lerian.tracer.rule.activatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: ActivateRuleService successfully activates a rule.Subject: p.IDrule.created
rule.created
Definition key:
rule.created (RuleCreatedDefinition)Event: studio.lerian.tracer.rule.createdTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: CreateRuleCommand successfully creates a rule.Subject: p.IDrule.deactivated
rule.deactivated
Definition key:
rule.deactivated (RuleDeactivatedDefinition)Event: studio.lerian.tracer.rule.deactivatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DeactivateRuleService successfully deactivates a rule.Subject: p.IDrule.deleted
rule.deleted
Definition key:
rule.deleted (RuleDeletedDefinition)Event: studio.lerian.tracer.rule.deletedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DeleteRuleService successfully deletes a rule.Subject: p.IDrule.drafted
rule.drafted
Definition key:
rule.drafted (RuleDraftedDefinition)Event: studio.lerian.tracer.rule.draftedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: DraftRuleService successfully moves a rule to DRAFT.Subject: p.IDrule.updated
rule.updated
Definition key:
rule.updated (RuleUpdatedDefinition)Event: studio.lerian.tracer.rule.updatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: UpdateRuleCommand successfully updates a rule.Subject: p.ID
