Dark Matter emits events for position lifecycle changes, transfer updates, and other platform activities. Events are delivered via webhooks and follow defined schemas. This document describes the event structure and payload schemas for each event type.
All events share a common envelope: id, type, created_at, data, and optional metadata. The type field identifies the event; data contains the event-specific payload. Events are immutable once emitted.
All event types are defined in the EventType enum in @dmtr/core. Events span position lifecycle, transfers, documents, identity, entity formation, regulatory filing, collateral, and payments.
Events form an immutable hash chain. Each event's event_hash is computed over its type, actor, timestamp, payload, and previous_event_hash. The first event in a chain has previous_event_hash set to a zero hash. This structure provides WORM-compliant (Write Once, Read Many) audit integrity analogous to SEC Rule 17a-4 requirements.
position.registered
Fired when a new position is first registered in the registry.
Field
Type
Description
type
string
position.registered
event_id
string
Unique event identifier
timestamp
datetime
When the event occurred
payload.entity_id
string
Position entity_id
payload.owner
string
Owner participant ID
payload.asset
object
Asset reference (issuer, vehicle_class)
event_hash
string
SHA-256 hash of this event
transfer.settled
Fired when a transfer settles and the registry is updated.