record v1
A board event a push config subscribes to as a record event. The body names the cards and nothing else: a subscriber reads them back with its own credential, so a push never carries more than that credential could read. Mirrors SuperPipeline’s RecordPushBody (apps/api/src/push/events.ts).
CloudEvents
Section titled “CloudEvents”Every event below carries dataschema https://raw.githubusercontent.com/SuperJackfruitLabs/treaty/main/schemas/superpipeline/record.v1.json.
Body event |
CloudEvents type |
Subject |
|---|---|---|
card.created |
com.superjackfruit.superpipeline.card.created.v1 |
evt.<workspace>.superpipeline.card.created |
card.updated |
com.superjackfruit.superpipeline.card.updated.v1 |
evt.<workspace>.superpipeline.card.updated |
card.moved |
com.superjackfruit.superpipeline.card.moved.v1 |
evt.<workspace>.superpipeline.card.moved |
card.advanced |
com.superjackfruit.superpipeline.card.advanced.v1 |
evt.<workspace>.superpipeline.card.advanced |
card.completed |
com.superjackfruit.superpipeline.card.completed.v1 |
evt.<workspace>.superpipeline.card.completed |
card.rejected |
com.superjackfruit.superpipeline.card.rejected.v1 |
evt.<workspace>.superpipeline.card.rejected |
card.failed |
com.superjackfruit.superpipeline.card.failed.v1 |
evt.<workspace>.superpipeline.card.failed |
card.blocked |
com.superjackfruit.superpipeline.card.blocked.v1 |
evt.<workspace>.superpipeline.card.blocked |
card.deleted |
com.superjackfruit.superpipeline.card.deleted.v1 |
evt.<workspace>.superpipeline.card.deleted |
card.resumed |
com.superjackfruit.superpipeline.card.resumed.v1 |
evt.<workspace>.superpipeline.card.resumed |
card.comment.added |
com.superjackfruit.superpipeline.card_comment.added.v1 |
evt.<workspace>.superpipeline.card_comment.added |
card.comment.deleted |
com.superjackfruit.superpipeline.card_comment.deleted.v1 |
evt.<workspace>.superpipeline.card_comment.deleted |
gate.resolved |
com.superjackfruit.superpipeline.gate.resolved.v1 |
evt.<workspace>.superpipeline.gate.resolved |
link.added |
com.superjackfruit.superpipeline.link.added.v1 |
evt.<workspace>.superpipeline.link.added |
link.removed |
com.superjackfruit.superpipeline.link.removed.v1 |
evt.<workspace>.superpipeline.link.removed |
The subject is the NATS subject the relay files it under; <workspace> is the board’s workspace. See the envelope and subjects.
Who sends it, who reads it
Section titled “Who sends it, who reads it”- Produced by SuperPipeline, by direct push only (not relayed).
Record events are not relayed. SuperPipeline pushes them directly to each endpoint that has a push config subscribed to them, and treaty names no product that reads them.
Fields
Section titled “Fields”Readers ignore properties they do not know, so a field may be added without a new version.
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
event |
one of "card.created", "card.updated", "card.moved", "card.advanced", "card.completed", "card.rejected", "card.failed", "card.blocked", "card.deleted", "card.resumed", "card.comment.added", "card.comment.deleted", "gate.resolved", "link.added", "link.removed" |
yes | ||
boardId |
string | yes | ||
seq |
integer | yes | at least 0 | |
ts |
string | yes | format date-time |
|
cardIds |
array of string | yes | The cards the event is about: one, or a link’s two ends. |
Example
Section titled “Example”From fixtures/superpipeline-events/examples.json, case “card-moved”:
{ "event": "card.moved", "boardId": "brd_134a0ddb6d434478", "seq": 412, "ts": "2026-11-10T09:30:00.000Z", "cardIds": [ "crd_0f3c9a2b7d4e4a11" ]}The corpus has 3 valid cases in all:
link-added
{ "event": "link.added", "boardId": "brd_134a0ddb6d434478", "seq": 413, "ts": "2026-11-10T09:30:00.000Z", "cardIds": [ "crd_0f3c9a2b7d4e4a11", "crd_1a2b3c4d5e6f7a8b" ]}gate-resolved
{ "event": "gate.resolved", "boardId": "brd_134a0ddb6d434478", "seq": 414, "ts": "2026-11-10T09:30:00.000Z", "cardIds": [ "crd_0f3c9a2b7d4e4a11" ]}Refused
Section titled “Refused”Each of these must fail. The corpus says why:
- only record events
- seq is an integer
- cardIds is required
Source
Section titled “Source”- Schema:
schemas/superpipeline/record.v1.json - In the package:
import schema from "@superjackfruitlabs/treaty-event-schemas/superpipeline/record.v1.json" with { type: "json" };