List an occurrence's participants
The staff attendance surface: every live participation with the attendee's name/email from their registration. Any event staff (owner/admin/staff) may read it. Cancelled rows are history and are never listed — staff mark the people who are coming.
/occurrences/{occurrence_id}/participantsThe staff attendance surface: every live participation with the attendee's name/email from their registration. Any event staff (owner/admin/staff) may read it. Cancelled rows are history and are never listed — staff mark the people who are coming.
Authorization
bearerAuth JWT issued by IdentityX, signed with Ed25519
In: header
Path Parameters
Occurrence ID.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/occurrences/497f6eca-6276-4993-bfeb-53cbbbba6f08/participants"{
"items": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"occurrence_id": "8508ee33-23a1-4a06-ae02-1eb167405e7b",
"registration_id": "7b2966db-5b97-451d-80d4-713d3a44078b",
"status": "registered",
"created_at": "2019-08-24T14:15:22Z",
"attendee_user_id": "9c18a331-0221-4846-a613-e0dc057900be",
"attendee_email": "user@example.com",
"attendee_name": "string"
}
]
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 401,
"title": "Unauthenticated"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 403,
"title": "Insufficient Role"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 404,
"title": "Not Found"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 500,
"title": "Internal Server Error"
}Cancel the caller's sign-up for an occurrence DELETE
Self-service de-registration. Flips the caller's live participation to `cancelled` (history is kept; a re-registration inserts a fresh row). The spot is locked once attendance is marked: a guarded update only flips rows still in `registered`, so an `attended`/`no_show` participation returns 409. Unknown occurrence or not signed up is 404.
Check an attendee in at a checkpoint occurrence POST
Staff-only checkpoint check-in. Checkpoints are pass-through — attendees never register for them — so an attendee is marked present by identity, gating only on "can they pass": a confirmed edition ticket plus the checkpoint's access rules (`staff_only`, `min_access_level`). The first scan upserts an attended participation anchored to the attendee's edition-ticket registration; re-scanning the same attendee is idempotent (the live participation is flipped to `attended`, never duplicated). Only checkpoint occurrences are accepted — activities keep the mark-attended flow (400 otherwise).