# GiftRegistry

object type

A GiftRegistry — ONE consumer-OWNED curated product list with purchase tracking (org-group-parented document): structurally a cousin of the Collection but consumer-owned + purchase-tracked. ownerConsumerId is a registered Consumer, IMMUTABLE at birth (ruling — the REGBOOK derived-index row minted in the create txn is thereby write-once; guests cannot own; transfer = deferral 14). registryType ∈ {wedding, baby, birthday, anniversary, holiday, wishlist, custom} (the seven VERBATIM — canned + AT-extensible, the caseType registry class; MUTABLE via update, a mislabel is routine correction). privacy ∈ {public | unlisted | private}, DEFAULT 'private' (strict — the owner opts INTO sharing); ⚠ the cross-consumer READ lanes that consume the gate are the storefront wave (ruling /deferrals 1–3) — until then privacy is enforced STRUCTURALLY (the consumer lane is owner-only). eventDate OPTIONAL — present ⇒ arms the scheduled active → expired (ruling — LIVE machinery, due == eventDate EXACTLY; the ExemptionCertificate optional-field class; grace/policy = deferral 7). FSM: active(i) → closed (caller_op:close · authority:own_registry) · active → expired (scheduled:scheduler — a LIVE non-terminal state: items stay readable, fulfillments still record \[ruling], the owner can still doom) · closed|expired → doomed (caller_op:doom · authority:own_registry + referential_integrity — the inbound-ref set is EMPTY by design, subordinates are FAMILY \[the CollectionMember vacuous-gate class]). Forbidden: active → doomed (close or let expire first). Ceilings: 16 ACTIVE registries/consumer · 200 ACTIVE items/registry. NOT searchable (consumer-owned, reached via its owner — the book law covers WHO, not their lists).

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | The record’s id — a UUID the platform assigned when the record was created; every reference to this record uses it. |
| `sysId` | [String](/types/#scalars) `String!` | The group-scoped human-facing system id (GR-…). |
| `type` | [String](/types/#scalars) `String!` | The kind of record — always `GiftRegistry` here. |
| `caption` | [String](/types/#scalars) `String!` | The record’s display name — what people see it called. |
| `status` | [String](/types/#scalars) `String!` | The FSM state: active \| closed \| expired \| doomed. |
| `parentId` | [ID](/types/#scalars) `ID!` | The parent org group; for a GiftRegistry parentId === rootId. |
| `rootId` | [ID](/types/#scalars) `ID!` | The org-group family root. |
| `createdAt` | [String](/types/#scalars) `String!` | When the record was created, as a UTC timestamp. |
| `updatedAt` | [String](/types/#scalars) `String!` | When the record last changed, as a UTC timestamp. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | How many times this record has been edited; the first save is 0. |
| `revision` | [ID](/types/#scalars) `ID!` | The OCC revision token — supply it on every mutation of this record; rotates on every write. |
| `refCaptions` | [RefCaption](/types/RefCaption/) `[RefCaption!]!` | The server-composed captions of this record's declared references (the referenced-caption rule) — one row per referenced id; see RefCaption. |
| `ownerConsumerId` | [ID](/types/#scalars) `ID!` | The OWNING registered Consumer. ⚠ IMMUTABLE at birth (ruling — the REGBOOK index row is write-once; ownership transfer = deferral 14). |
| `registryType` | [String](/types/#scalars) `String!` | wedding \| baby \| birthday \| anniversary \| holiday \| wishlist \| custom — the canned registry (AT-extensible, never merchant free-form). MUTABLE via update. |
| `privacy` | [String](/types/#scalars) `String!` | public \| unlisted \| private — born 'private' when the caller names none (strict). ⚠ Structurally DORMANT until gives it a cross-consumer reader (ruling — the consumer lane is owner-only). |
| `eventDate` | [String](/types/#scalars) | The event instant (ISO-8601, a FULL instant — the slaDueAt convention). Present ⇒ arms the scheduled expiry (ruling — due == eventDate EXACTLY; edits re-arm/disarm on write). |
| `shipTo` | [RegistryShipTo](/types/RegistryShipTo/) | The registry-specific ship-to override. |

## Used by

- [closeGiftRegistry](/reference/gift-registry/closeGiftRegistry/)
- [createGiftRegistry](/reference/gift-registry/createGiftRegistry/)
- [doomGiftRegistry](/reference/gift-registry/doomGiftRegistry/)
- [giftRegistry](/reference/gift-registry/giftRegistry/)
- [updateGiftRegistry](/reference/gift-registry/updateGiftRegistry/)
