TrieOH
UniventsAPIPrograms

Check an attendee in at a checkpoint occurrence

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).

POST/occurrences/{occurrence_id}/check-in

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).

Authorization

bearerAuth
AuthorizationBearer <token>

JWT issued by IdentityX, signed with Ed25519

In: header

Path Parameters

occurrence_id*string

Occurrence ID.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Request body for checkpoint check-in. attendee_id is the IdentityX actor id resolved from the attendee's badge QR.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/occurrences/497f6eca-6276-4993-bfeb-53cbbbba6f08/check-in" \  -H "Content-Type: application/json" \  -d '{    "attendee_id": "2e6c6b0e-9c2a-4c1e-8d4f-9e1b7f3a5c2d"  }'
{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "edition_id": "aeda7fca-56fe-426a-8c37-1876faaaf005",
  "occurrence_id": "8508ee33-23a1-4a06-ae02-1eb167405e7b",
  "registration_id": "7b2966db-5b97-451d-80d4-713d3a44078b",
  "status": "registered",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z"
}
{
  "detail": "string",
  "instance": "../dictionary",
  "errors": [
    {
      "field": "string",
      "message": "string"
    }
  ],
  "type": "http://example.com",
  "status": 400,
  "title": "Validation Failed"
}
{
  "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"
}