What a connector submits
Events are submitted in a batch with a shared source and batch ID:What Groundhog adds
Committed events returned by replay and exposed in SQL include:Ordering and timestamps
Increasingevent_id is the authoritative history order. Replay returns events in that order.
occurred_at is source-provided data and may be missing or out of order. It never changes the
event’s position in Groundhog history. Use event_id for replay cursors and processing order.
SQL relations do not have an implicit order. Use ORDER BY event_id when event order matters.
Event kinds
upserted says the named record exists with the supplied payload. deleted says the record no
longer exists. Other kinds represent source-specific occurrences and do not implicitly replace
record state.
The binary does not publish a ready-made current-state relation. Consumers that need current
state derive it from the event history.
Idempotent batches
The pair(source, batch_id) identifies one batch for the life of the data directory.
- A new ID commits the batch and returns
status: "committed". - Retrying the same ID with identical content returns
status: "duplicate"and the original receipt. - Reusing the same ID for different content returns HTTP 409 and writes nothing.
Names, times, and limits
sourceandstreammatch[a-z0-9_][a-z0-9_.-]*and are at most 128 UTF-8 bytes.kindis non-empty and at most 128 bytes.record_keyis non-empty and at most 1,024 bytes.batch_idis non-empty and at most 256 bytes.- Source
systemand batch IDs beginning withgroundhog/are reserved. occurred_atuses UTC with aZsuffix when provided.- A JSON batch contains 1–10,000 events and is at most 32 MiB.