The Skills Fest

Endpoints

Generated from the same document the server serves at openapi.json, so this page cannot drift from what the API enforces.

ping

GET/v1/ping

Verify a key and see what it can reach

Any valid key — no scope required

org

GET/v1/org

Read the workspace and its terminology

Requires org:read

members

GET/v1/members

List members

Requires members:read

Fields that need a data class
  • email — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • phone — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • date_of_birth — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • gender — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • username — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • dietary_needs — Requires the data:health scope. Without it the field is OMITTED entirely — never blank — and "health" appears in redacted_classes.
  • background_check — Requires the data:safeguarding scope. Without it the field is OMITTED entirely — never blank — and "safeguarding" appears in redacted_classes.
  • background_check_not_cleared — Requires the data:safeguarding scope. Without it the field is OMITTED entirely — never blank — and "safeguarding" appears in redacted_classes.
POST/v1/members

List members

Requires members:write

Fields that need a data class
  • email — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • phone — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • date_of_birth — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • gender — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • username — Requires the data:pii scope. Without it the field is OMITTED entirely — never blank — and "pii" appears in redacted_classes.
  • dietary_needs — Requires the data:health scope. Without it the field is OMITTED entirely — never blank — and "health" appears in redacted_classes.
  • background_check — Requires the data:safeguarding scope. Without it the field is OMITTED entirely — never blank — and "safeguarding" appears in redacted_classes.
  • background_check_not_cleared — Requires the data:safeguarding scope. Without it the field is OMITTED entirely — never blank — and "safeguarding" appears in redacted_classes.
GET/v1/members/{id}

Fetch one member

Requires members:read

PATCH/v1/members/{id}

Fetch one member

Requires members:write

POST/v1/members/{id}/safeguarding

List an event's safeguarding

Requires members:write

GET/v1/members/external/{source}/{external_id}

Fetch a member by its external id

Requires members:read

PUT/v1/members/external/{source}/{external_id}

Create or update a member by its external id

Requires members:write and sync:write

units

GET/v1/units

List units

Requires units:read

POST/v1/units

List units

Requires units:write

GET/v1/units/{id}

Fetch one unit

Requires units:read

PATCH/v1/units/{id}

Fetch one unit

Requires units:write

PUT/v1/units/external/{source}/{external_id}

Create or update a unit by its external id

Requires sync:write and units:write

events

GET/v1/events

List events

Requires events:read

POST/v1/events

List events

Requires events:write

GET/v1/events/{event_id}

Fetch one event

Requires events:read

GET/v1/events/{event_id}/attendance

List an event's attendance

Requires attendance:read

GET/v1/events/{event_id}/attending

List an event's attending

Requires registrations:read

GET/v1/events/{event_id}/checkins

List an event's checkins

Requires attendance:read

POST/v1/events/{event_id}/checkins

List an event's checkins

Requires attendance:write

GET/v1/events/{event_id}/classes

List an event's classes

Requires events:read

GET/v1/events/{event_id}/lodging/assignments

List an event's lodging assignments

Requires lodging:read

GET/v1/events/{event_id}/lodging/buildings

List an event's lodging buildings

Requires lodging:read

GET/v1/events/{event_id}/lodging/rooms

List an event's lodging rooms

Requires lodging:read

GET/v1/events/{event_id}/registrations

List an event's registrations

Requires registrations:read

POST/v1/events/{event_id}/registrations

List an event's registrations

Requires registrations:write

DELETE/v1/events/{event_id}/registrations/{reg_id}

List an event's registrations :regId

Requires registrations:write

GET/v1/events/{event_id}/tracks

List an event's tracks

Requires events:read

PATCH/v1/events/{id}

Fetch one event

Requires events:write

sync

POST/v1/sync/links

Confirm links between external records and members

Requires sync:write

POST/v1/sync/members

Sync a batch of members

Requires members:write and sync:write

GET/v1/sync/runs

List sync runs

Requires sync:read

GET/v1/sync/runs/{id}

Fetch one sync run

Requires sync:read

POST/v1/sync/units

Sync a batch of units

Requires sync:write and units:write

GET/v1/sync/unmatched

List unresolved match proposals

Requires sync:read

levels

GET/v1/levels

List levels

Requires org:read

curriculum

GET/v1/curriculum

List curriculum

Requires org:read

attendance

POST/v1/attendance

List attendance

Requires attendance:write