Skip to main content
The current Midaz components/tracer emits its public JSON business facts as CloudEvents 1.0 in binary content mode over Kafka through lib-streaming. This is the producer for the studio.lerian.tracer.* contract on this page. Tracer is the separately deployed Midaz component and the sole producer documented here; do not attribute these events to a separate repository.

Public JSON Tracer catalog

The Midaz components/tracer manifest contains the following verified definitions. All 12 definitions have non-test production callers; none is catalog-only. Midaz does not bootstrap a lib-streaming consumer for these facts.

CloudEvents envelope

Every public JSON fact uses the shared envelope below. The headers carry routing and schema information; the Kafka value carries the JSON data object.

Topics, manifest, and routing

The application topic identifies Midaz Tracer, not an individual event. Route a record by ce-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/manifest exposes the public JSON catalog and topic mapping, including while publication is disabled.

Delivery and failure semantics

Publication is disabled until STREAMING_ENABLED=true and broker configuration succeeds. When enabled, Midaz emits after the business-state change. It does not wire a lib-streaming outbox writer, outbox repository, transactional outbox, or outbox relay.
  • Policy: every public JSON definition is a fact with direct delivery, on_routable_failure DLQ handling, and fallback_on_circuit_open configured by lib-streaming v3.
  • Actual Midaz boundary: because no outbox writer is wired, the circuit-open fallback cannot persist an event. Emit paths log and swallow publication errors instead of returning them to the business command. This is not an atomic outbox contract.
  • Consumer boundary: Midaz wires no consumer for these facts, and the direct producer policy does not establish a transactional delivery guarantee. Consumers should 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 without omitting it. A source-type comment preserves the inventory type exactly. All fields in these 12 Tracer payloads are present (omitempty: false); nullable fields are still emitted with null when absent.
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.ID
Definition key: limit.created (LimitCreatedDefinition)Event: studio.lerian.tracer.limit.createdTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: CreateLimitCommand successfully creates a limit.Subject: p.ID
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.ID
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.ID
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.ID
Definition key: limit.updated (LimitUpdatedDefinition)Event: studio.lerian.tracer.limit.updatedTopic: lerian.streaming.tracerRoute DLQ: lerian.streaming.tracer.dlqSchema: 1.0.0 (application/json)Fires when: UpdateLimitCommand successfully updates a limit.Subject: p.ID
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.ID
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.ID
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.ID
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.ID
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.ID
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

Emitted event index