Skip to main content
Matcher’s catalog has 42 event definitions, and Matcher emits every one of them. It emits domain events as CloudEvents 1.0 messages in binary content mode. Every event travels in the shared envelope: ce-type names the event as studio.lerian.matcher.<resource>.<event>, ce-subject carries the aggregate id, ce-tenantid the owning tenant, and ce-schemaversion the payload version. The version is 1.0.0 for every event below. ce-source is matcher. Every event uses the application topic lerian.streaming.matcher and the source-qualified types shown below. Resource type, event type, and schema version remain in CloudEvents headers. Money amounts (fee values and adjustment amounts) cross the wire as decimal strings, never floats. Inbound resolution callbacks are a separate HTTP surface, documented in Webhooks and callbacks.

Delivery policies

Matcher’s catalog uses two delivery policies: 16 definitions use the outbox-backed policy and 26 definitions use direct delivery with circuit-open fallback.
  • Outbox-backed events go to the outbox in the same database transaction as the state change. A relay publishes committed rows and retries through broker outages. These are the audit-grade facts (matching outcomes, exception resolutions, disputes, governance). A deployment cannot weaken this policy.
  • Direct events publish after the transaction commits, best-effort, falling back to the outbox only when the broker circuit is open. These are configuration and operational lifecycle signals.
Each table below states the policy for its events.

Matching events

Outbox-backed: transaction.matched, transaction.pending_review. Direct: the rest.

Exception and dispute events

Outbox-backed except exception.assigned and the comment events, which are direct.

Configuration and data-intake events

All direct.

Governance and reporting events

Outbox-backed except the export-job family, which is direct.

Payload contracts

These types mirror the CloudEvent data objects emitted by Matcher v5.0.3. ? means the property can be absent. Timestamps are UTC RFC 3339 with nanosecond precision. UUID aliases document semantic identity. A field typed as string carries no UUID guarantee. stats is an open integer map, so consumers must tolerate new keys.
ingestion.completed includes the date range only when the pipeline calculated one. Terminal timestamps and stable error codes depend on the persisted aggregate. Export counters are absent while zero. dispute.won and dispute.lost do not repeat the category sent by dispute.opened.

Events consumed

Matcher consumes no streaming events. Its integration inputs arrive over HTTP, such as file uploads and Discovery extractions.