API Reference
sessions
8 endpoints
/api/v1/sessions/{session_slug}/attendAttend Session
Check in to a session using a tagged-union identifier (wallet, card, username, etc).
Self-service: the resolved identity must match the token subject. On-behalf-of: requires activity:attendees:manage with an org-scoped token matching the session's parent activity.
Ticket-gated sessions (effective requires_ticket=True) require the resolved identity to hold a valid ticket for the activity before attendance is recorded; walk-in sessions skip this gate entirely.
Path parameters
| session_slug* | string |
Query parameters
| default_backend | string | default: "primary" |
Request body*application/json
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| identifier* | IdentifierRef | ||||||||||
object · IdentifierRef
| |||||||||||
| idempotency_key | string | null | ||||||||||
| proof_metadata | object | null | ||||||||||
Responses
| Field | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| status* | string | |||||||||||||
| action_taken* | string | |||||||||||||
| attendance_proof_tx_id | string | null | |||||||||||||
| ticket | HeldTicketRef | null | |||||||||||||
object · HeldTicketRef
| ||||||||||||||
| user | CheckinUser | null | |||||||||||||
object · CheckinUser
| ||||||||||||||
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X POST "https://api.davi.social/api/v1/sessions/{session_slug}/attend" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ /* request body */ }'/api/v1/sessions/{session_slug}/attendee-statusGet Attendee Status
Check attendee status for a wallet in a session.
Returns the attendee record if registered, or null if not registered. Useful for checking status before attempting registration or check-in.
Path parameters
| session_slug* | string |
Query parameters
| wallet_address* | string | Wallet address to check |
| default_backend | string | default: "primary" |
Responses
| Field | Type | Description |
|---|---|---|
| uuid* | string | |
| activity_uuid* | string | |
| session_uuid | string | null | |
| wallet_address* | string | |
| user_uuid | string | null | |
| status* | enum | |
| registered_at* | string (date-time) | |
| attended_at | string (date-time) | null | |
| additional_data | object | null | |
| created_at* | string (date-time) | |
| updated_at | string (date-time) | null | |
| username | string | null | |
| display_name | string | null | |
| avatar_url | string | null | |
| proof_tx_id | string | null | |
| proof_verified | boolean | null | |
| proof_tx_hash | string | null | |
| proof_amount | number | null |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X GET "https://api.davi.social/api/v1/sessions/{session_slug}/attendee-status" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}/eligibilityGet Session Eligibility
Tell a client what a tagged-union identifier can do for a session.
Read-only. Resolves the identifier, looks up attendee and ticket state, and reports the conclusion, so a door page does not reimplement the rules and cannot disagree with what check-in will actually do.
recommended_action is the one action worth offering: checkin when
check-in would succeed, register when a ticket is the only thing missing
and one can still be issued, none when neither applies. blocked_reason
names why, when something stands in the way:
checkin_closed— check-in is switched off for the session or its eventmembership_required— the session is gated on a membership or tier the identity does not holdregistration_closed— a ticket is required, the identity has none, and the ticket behind it is withdrawn or sold out
Unrecognized identifiers propagate as a 404, same as /attend.
Path parameters
| session_slug* | string |
Query parameters
| type* | string | Identifier type, e.g. 'wallet', 'card' |
| value* | string | Identifier value |
| default_backend | string | default: "primary" |
Responses
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| has_valid_ticket* | boolean | ||||||||||
| attendee_status* | string | ||||||||||
| can_checkin* | boolean | ||||||||||
| blocked_reason | string | null | What stands in the way, when something does. `checkin_closed`: check-in is switched off for the session or its event. `membership_required`: the session is gated on a membership or tier the identity does not hold. `registration_closed`: a ticket is required, the identity has none, and the ticket behind it is withdrawn or sold out. Treat an unfamiliar value as a plain refusal — the set grows. | |||||||||
| recommended_action* | string | The one action worth offering: `checkin` when it would succeed, `register` when a ticket is the only thing missing and one can still be issued, `none` when neither applies. | |||||||||
| user | CheckinUser | null | ||||||||||
object · CheckinUser
| |||||||||||
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X GET "https://api.davi.social/api/v1/sessions/{session_slug}/eligibility" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}/attendeesList Session Attendees
List attendees for a specific session.
Path parameters
| session_slug* | string |
Query parameters
| include_proof | boolean | Include proof transaction info in response default: false |
| default_backend | string | default: "primary" |
| page | integer | default: 1 · ≥ 1 |
| page_size | integer | default: 20 · ≥ 1 · ≤ 100 |
| sort_by | string | null | |
| sort_order | string | default: "asc" |
Responses
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| total_items* | integer | Total number of items available | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| total_pages* | integer | Total number of pages available | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| current_page* | integer | Current page number | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| items* | ActivityAttendeeResponse[] | List of items on the current page | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
array items · ActivityAttendeeResponse
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X GET "https://api.davi.social/api/v1/sessions/{session_slug}/attendees" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}/attendees/{wallet_address}Get Session Attendee
Read one attendee of a session.
The collection had a read and the item had a write, so a client that updated an attendee could not read back what it wrote.
Path parameters
| session_slug* | string | |
| wallet_address* | string |
Query parameters
| default_backend | string | default: "primary" |
Responses
| Field | Type | Description |
|---|---|---|
| uuid* | string | |
| activity_uuid* | string | |
| session_uuid | string | null | |
| wallet_address* | string | |
| user_uuid | string | null | |
| status* | enum | |
| registered_at* | string (date-time) | |
| attended_at | string (date-time) | null | |
| additional_data | object | null | |
| created_at* | string (date-time) | |
| updated_at | string (date-time) | null | |
| username | string | null | |
| display_name | string | null | |
| avatar_url | string | null | |
| proof_tx_id | string | null | |
| proof_verified | boolean | null | |
| proof_tx_hash | string | null | |
| proof_amount | number | null |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X GET "https://api.davi.social/api/v1/sessions/{session_slug}/attendees/{wallet_address}" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}/attendees/{wallet_address}Update Session Attendee
Update attendee status for a specific session.
Path parameters
| session_slug* | string | |
| wallet_address* | string |
Query parameters
| status* | string | |
| default_backend | string | default: "primary" |
Responses
| Field | Type | Description |
|---|---|---|
| uuid* | string | |
| activity_uuid* | string | |
| session_uuid | string | null | |
| wallet_address* | string | |
| user_uuid | string | null | |
| status* | enum | |
| registered_at* | string (date-time) | |
| attended_at | string (date-time) | null | |
| additional_data | object | null | |
| created_at* | string (date-time) | |
| updated_at | string (date-time) | null | |
| username | string | null | |
| display_name | string | null | |
| avatar_url | string | null | |
| proof_tx_id | string | null | |
| proof_verified | boolean | null | |
| proof_tx_hash | string | null | |
| proof_amount | number | null |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X PATCH "https://api.davi.social/api/v1/sessions/{session_slug}/attendees/{wallet_address}" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}Get Session
Get a session by slug (or uuid, until v1 is frozen).
Path parameters
| session_slug* | string |
Query parameters
| default_backend | string | default: "primary" |
Responses
| Field | Type | Description |
|---|---|---|
| uuid* | string | |
| slug* | string | |
| activity_uuid* | string | |
| name* | string | |
| description | string | null | |
| start_time* | string (date-time) | |
| end_time* | string (date-time) | |
| max_attendees | integer | null | |
| is_checkin_open | boolean | default: true |
| requires_ticket | boolean | null | |
| required_entitlement | string | null | |
| ticket_template_uuid | string | null | |
| sequence_number* | integer | |
| created_at* | string (date-time) | |
| updated_at | string (date-time) | null |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X GET "https://api.davi.social/api/v1/sessions/{session_slug}" \
-H "Authorization: Bearer <token>"/api/v1/sessions/{session_slug}Update Session
Update session details.
Only organization members with activity:update scope can update sessions.
Path parameters
| session_slug* | string |
Query parameters
| default_backend | string | default: "primary" |
Request body*application/json
| Field | Type | Description |
|---|---|---|
| name | string | null | Name of the session |
| description | string | null | Session description |
| start_time | string (date-time) | null | Session start time |
| end_time | string (date-time) | null | Session end time |
| max_attendees | integer | null | Optional capacity override (None = inherit from activity) ≥ 1 |
| is_checkin_open | boolean | null | Manual toggle for check-in |
| requires_ticket | boolean | null | Require a ticket for this session (None = inherit event default) |
| required_entitlement | string | null | Entitlement gate for this session (None = inherit event's) |
| ticket_template_uuid | string | string (uuid) | null | Per-session ticket override (None = inherit event default) |
Responses
| Field | Type | Description |
|---|---|---|
| uuid* | string | |
| slug* | string | |
| activity_uuid* | string | |
| name* | string | |
| description | string | null | |
| start_time* | string (date-time) | |
| end_time* | string (date-time) | |
| max_attendees | integer | null | |
| is_checkin_open | boolean | default: true |
| requires_ticket | boolean | null | |
| required_entitlement | string | null | |
| ticket_template_uuid | string | null | |
| sequence_number* | integer | |
| created_at* | string (date-time) | |
| updated_at | string (date-time) | null |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
| Field | Type | Description |
|---|---|---|
| errors* | object | Map of field names to error messages. Use '_root' for form-level errors. |
| message* | string | Human-readable error summary |
| code | string | null | Machine-readable error code |
Example request
curl -X PATCH "https://api.davi.social/api/v1/sessions/{session_slug}" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ /* request body */ }'