Registration
A Registration is one person’s place at a Gathering: invited, requested, or waitlisted, then registered, then attended or no-show.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
status | string | required | One of invited, requested, waitlisted, registered, attended, or noShow. |
registeredAt | datetime | When the place was confirmed. |
Object
{
"$id": "https: //api.sb/ patentpad.com/ registrations/ registration_1",
"$type": "Registration",
"status": "invited",
"registeredAt": "2026-10-22T12: 00: 00Z"
}Relationships
- A Registration has one Gathering: a Gathering admits Registrations up to its capacity, then waitlists the rest.
gathering, inverseadmits. - A Registration names one Contact: each Registration holds one Contact’s place; one Contact registers for many Gatherings.
names, inverseregistrations.
Lifecycle
| State | Meaning | Moves to |
|---|---|---|
invited (first) | Offered a place, by the host’s invitation or the Gathering’s public Page, and not yet taken. | registered by Gathering.register; waitlisted by Gathering.register; requested by Gathering.register |
requested | Asked for a place at a Gathering whose host approves each one. | registered by Registration.approve; waitlisted by Registration.approve |
waitlisted | Next in line for a place, in the order they asked. | registered by Registration.admit |
registered | Holds a place; the reminders and the join link go to the Contact. | attended by Registration.attend; noShow on Registration.missed |
attended | Joined the Gathering. | None: it ends here. |
noShow | Held a place and never joined before the Gathering ended. | None: it ends here. |
Verbs
createCreates a Registration.POST /{namespace}/registrationsgetReturns one Registration by id.GET /{namespace}/registrations/{id}listReturns Registrations, newest first, one page at a time.GET /{namespace}/registrationsupdateChanges the given properties of a Registration.PATCH /{namespace}/registrations/{id}deleteDeletes a Registration; its history is kept.DELETE /{namespace}/registrations/{id}admitAdmit gives the next Contact in line a place at a Gathering when one frees up or its capacity rises.POST /{namespace}/registrations/{registration}/admitapproveApprove gives a requested place at a Gathering to the Contact who asked, or a place in line when the Gathering is full.POST /{namespace}/registrations/{registration}/approveattendAttend records that a registered Contact joined the Gathering; an online room calls it on join.POST /{namespace}/registrations/{registration}/attend
Events
Events no Verb emits. Each Verb’s Event is in the Verbs table above; every Event is delivered in the same shape.
Registration.missed
A Gathering ended, and a Contact who held a place never joined. Raised by a clock.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | required | Registration.missed. |
at | datetime | required | When it happened. |
seq | integer | Its position in the namespace, one more than the Event before; any seq is a cursor into the history. | |
data | json | required | The Thing as the Action left it. |
data.registration | Registration | required | The Registration as the change left it. |
data.registration.status | string | required | One of invited, requested, waitlisted, registered, attended, or noShow. |
data.registration.registeredAt | datetime | When the place was confirmed. | |
data.previous.status | string | required | The status before this Event: registered. |
{
"$id": "https: //api.sb/ patentpad.com/ events/ event_1",
"$type": "Event",
"name": "Registration.missed",
"at": "2026-10-22T12: 00: 00Z",
"data": {
"registration": {
"$id": "https: //api.sb/ patentpad.com/ registrations/ registration_1",
"$type": "Registration",
"status": "noShow",
"registeredAt": "2026-10-22T12: 00: 00Z"
},
"previous": {
"status": "registered"
}
},
"seq": 1
}Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.
| Operation | owner | admin | member | viewer |
|---|---|---|---|---|
Registration.create | Yes | Yes | Yes | No |
Registration.get | Yes | Yes | Yes | Yes |
Registration.list | Yes | Yes | Yes | Yes |
Registration.update | Yes | Yes | Yes | No |
Registration.delete | Yes | Yes | Yes | No |
Registration.admit | Yes | Yes | Yes | No |
Registration.approve | Yes | Yes | Yes | No |
Registration.attend | Yes | Yes | Yes | No |
Call it
Approve the latest registration.Example
A product manager registers for a pricing workshop and gets a calendar invite. She joins 10 minutes late, and her Registration moves from registered to attended.