Demostración: datos de ejemplo, se restablecen cada noche Acerca de esta demostración Próximo restablecimiento: lun 2 de nov de 2026, 03:15

Referencia de la API

Generada a partir del documento OpenAPI 3.1 en /api/v1/openapi.json. Las rutas de abajo son relativas a https://sportsmgnt.com/api/v1.

Versión 1.0.0 · Descargar el documento OpenAPI · Desarrolladores

REST API of the SportsMgnt demonstration platform built by WeldonPC. All data is sample data for the fictional Kestrel Basin Parks & Recreation District and resets nightly. Responses use the envelope {"data": ..., "meta": {...}}; errors use {"error": {"code", "message", "fields"}}.

catalog

Public activity catalog (no token needed)

GET /activities

Search activity sessions (same filters as the /activities page)

No necesita token

Parámetros: GET /activities
NombreDóndeTipoObligatorioDescripción
qquerystringNoKeyword (title, description or code)
categoryquerystringNoCategory slug, e.g. aquatics
agequeryintegerNoParticipant age
gradequerystringNoSchool grade K or 1-12
locationquerystringNoLocation code, e.g. L-HPCC
near_locationquerystringNoLocation code to measure distance from
distancequeryintegerNoKilometres from near_location: 1, 3, 5 or 10
day[]queryarray of string (mon, tue, wed, thu, fri, sat, sun)NoDays of week (mon..sun); repeat day[]
timequerystringNomorning, afternoon or evening
fromquerystringNoEarliest start time HH:MM
toquerystringNoLatest end time HH:MM
languagequerystringNoen, es or bilingual
adaptivequeryintegerNo1 = adaptive programs only
openqueryintegerNo1 = sessions with open seats only
seasonquerystringNoSeason code
pagequeryintegerNoPage number
per_pagequeryintegerNoRows per page (max 100)

Respuestas

  • 200 Paginated sessions
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/activities' \
  -H 'Accept: application/json'

GET /activities/{code}

One activity (program code like AQ-L2, or a session code) with its sessions

No necesita token

Parámetros: GET /activities/{code}
NombreDóndeTipoObligatorioDescripción
codepathstringSí

Respuestas

  • 200 Activity
  • 404 Not found
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/activities/AQ-L2' \
  -H 'Accept: application/json'

GET /locations

Locations of the fictional district with grid coordinates

No necesita token

Respuestas

  • 200 Locations
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/locations' \
  -H 'Accept: application/json'

core

Health and token information

GET /health

Service health

No necesita token

Respuestas

  • 200 OK
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/health' \
  -H 'Accept: application/json'

GET /me/token

Describe the calling token

Requiere token

Respuestas

  • 200 The token's user, scopes and expiry
  • 401 Missing, invalid, revoked or expired token
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/token' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

facilities

Facility inventory and availability (public)

GET /facilities

List facilities

Public. Filters match the web catalog.

No necesita token

Parámetros: GET /facilities
NombreDóndeTipoObligatorioDescripción
typequerystringNoFacility type
locationqueryintegerNoLocation id
capacityqueryintegerNoMinimum capacity
amenityquerystringNoAmenity key
accessiblequerystringNoAccessibility feature key
bookablequerystringNo1 = bookable online only
qquerystringNoSearch text
pagequeryintegerNoPage number
per_pagequeryintegerNoItems per page (max 100)

Respuestas

  • 200 OK
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/facilities' \
  -H 'Accept: application/json'

GET /facilities/{slug}

One facility

No necesita token

Parámetros: GET /facilities/{slug}
NombreDóndeTipoObligatorioDescripción
slugpathstringSí

Respuestas

  • 200 OK
  • 404 Unknown facility
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/facilities/riverbend-shelter-1' \
  -H 'Accept: application/json'

GET /facilities/{slug}/availability

Free and busy times per day

Agency-local times (meta.timezone). Busy blocks carry a state but never who booked them.

No necesita token

Parámetros: GET /facilities/{slug}/availability
NombreDóndeTipoObligatorioDescripción
slugpathstringSí
fromquerystringNoFirst date (YYYY-MM-DD, default today)
toquerystringNoLast date (default from + 6 days; at most 31 days)

Respuestas

  • 200 OK
  • 404 Unknown facility
  • 422 Invalid date range
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/facilities/riverbend-shelter-1/availability' \
  -H 'Accept: application/json'

household

The signed-in household (personal access token with household:read)

GET /me/calendar

Calendar items between two dates (agency time; default the next 30 days; scope household:read)

Requiere token

Parámetros: GET /me/calendar
NombreDóndeTipoObligatorioDescripción
fromquerystring (date)No
toquerystring (date)No

Respuestas

  • 200 Calendar items
  • 422 Invalid range
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/calendar' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

GET /me/cart

The household's open cart with seat-hold expiry times (scope household:read)

Requiere token

Respuestas

  • 200 Cart
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/cart' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

GET /me/enrollments

Enrolments of the household, newest first (scope household:read)

Requiere token

Parámetros: GET /me/enrollments
NombreDóndeTipoObligatorioDescripción
statusquerystringNo
pagequeryintegerNo
per_pagequeryintegerNo

Respuestas

  • 200 Enrolments
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/enrollments' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

GET /me/household

The token user's active household (scope household:read)

Requiere token

Respuestas

  • 200 Household
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/household' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

GET /me/members

Household members (scope household:read; no medical data)

Requiere token

Respuestas

  • 200 Members
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/me/members' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

reservations

Facility reservation requests (token)

GET /reservations

Your household's reservations

Token scope household:read.

Requiere token

Parámetros: GET /reservations
NombreDóndeTipoObligatorioDescripción
pagequeryintegerNoPage number
per_pagequeryintegerNoItems per page (max 100)

Respuestas

  • 200 OK
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/reservations' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

POST /reservations

Request a reservation

Token scope reservations:write. Creates a request only: no payment is taken and nothing is confirmed here. The same validation as the web form applies (booking windows, opening hours, capacity, slot locks). Pay, sign and upload paperwork from the reservation page.

Requiere token

Cuerpo de la solicitud

Cuerpo de la solicitud: POST /reservations
PropiedadTipoObligatorioDescripción
facilitystringSíFacility slug
householdstringNoH-number; defaults to the token user's active household
modestring (once, weekly, dates)No
datestring (date)No
daysarray of integerNoISO weekdays for mode=weekly
untilstring (date)No
datesarray of string (date)No
startstringSíAgency-local time, 15-minute steps
endstringSí
purposestring (private, nonprofit, school, commercial)No
attendeesintegerSí
titlestringNo
organisationstringNo
notesstringNo
on_conflictstring (block, drop)No
agreementobjectNoOptional: sign the rental agreement now

Respuestas

  • 201 Request created
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 409 A requested time is already taken (program, booking, league game or blackout)
  • 422 Validation failed
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl -X POST 'https://sportsmgnt.com/api/v1/reservations' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"facility":"string","household":"string","mode":"once","date":"2026-10-12","days":[1],"until":"2026-10-12","dates":["2026-10-12"],"start":"10:00","end":"13:00","purpose":"private","attendees":1,"title":"string","organisation":"string","notes":"string","on_conflict":"block","agreement":{"signer_name":"string","consent":true}}'

GET /reservations/{id}

One reservation

Token scope household:read.

Requiere token

Parámetros: GET /reservations/{id}
NombreDóndeTipoObligatorioDescripción
idpathstringSí

Respuestas

  • 200 OK
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 404 Not found or not yours
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/reservations/1' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

staff

Staff back office: rosters, attendance and reports. Requires a staff token with the matching scope; the token user's role and location scope apply, and an instructor-only user sees only the sessions they teach.

POST /staff/attendance

Record attendance for a meeting

Scope staff:attendance. The token user needs attendance.mark at the meeting's location (instructor-only users: their own sessions).

Requiere token

Cuerpo de la solicitud

Cuerpo de la solicitud: POST /staff/attendance
PropiedadTipoObligatorioDescripción
meeting_idintegerSí
recordsarray of objectSí

Respuestas

  • 200 Saved
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 404 No such meeting
  • 422 Invalid records
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl -X POST 'https://sportsmgnt.com/api/v1/staff/attendance' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"meeting_id":1,"records":[{"enrollment_id":1,"status":"present"}]}'

GET /staff/reports/{key}

Run a library report

Scope staff:reports. Rows are limited to the token user's location scope. Keys: enrolment, revenue_cost_center, daily_cash, transmittals, refunds_status, waitlists, facility_utilization, attendance_pct, instructor_hours, demographics, fee_assistance, inventory, donations_fund, passes, balances_aging, audit_summary.

Requiere token

Parámetros: GET /staff/reports/{key}
NombreDóndeTipoObligatorioDescripción
keypathstringSí
fromquerystring (date)No
toquerystring (date)No
locationqueryintegerNo
seasonqueryintegerNo

Respuestas

  • 200 Report rows (sample data)
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 404 Unknown report
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/staff/reports/key' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

GET /staff/rosters/{session}

Roster of a session

Scope staff:rosters. The token user needs rosters.view at the session's location; an instructor-only user must be assigned to the session.

Requiere token

Parámetros: GET /staff/rosters/{session}
NombreDóndeTipoObligatorioDescripción
sessionpathstringSíSession code (KB-F26-1012) or numeric id

Respuestas

  • 200 Roster
  • 401 Missing, invalid, revoked or expired token
  • 403 The token lacks a scope, or the user lacks a permission
  • 404 No such session
  • 429 Too many requests; see Retry-After
Ejemplo de solicitud
curl 'https://sportsmgnt.com/api/v1/staff/rosters/KB-F26-1001' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer SU_TOKEN'

Esquemas

Activity object

Activity
PropiedadTipoObligatorioDescripción
codestringSí
typestringSí
titlestringSí
descriptionstringSí
categorystringSí
agesobjectSí
gradesobjectNo
residents_onlybooleanNo
languagestringNo
adaptivebooleanNo
required_waiversarray of stringNo
required_documentsarray of stringNo
accessibility_notesstringNo
sessionsarray of ActivitySessionSí

ActivitySession object

ActivitySession
PropiedadTipoObligatorioDescripción
codestringSí
program_codestringSí
titlestringSí
typestring (class, camp, overnight_camp, league, child_care, dropin, event)Sí
categorystringNo
seasonstringNo
locationobjectSí
facilitystring | nullNo
start_datestring (date)Sí
end_datestring (date)Sí
daysarray of stringSí
start_timestringSí
end_timestringSí
agesobjectNo
languagestringNo
adaptivebooleanNo
capacityintegerSí
seats_leftintegerSí
waitlistedintegerSí
resident_price_centsintegerSí
registrationobjectSí
urlstringNo

AttendanceRequest object

AttendanceRequest
PropiedadTipoObligatorioDescripción
meeting_idintegerSí
recordsarray of objectSí

AttendanceResult object

AttendanceResult
PropiedadTipoObligatorioDescripción
dataobjectNo
metaMetaNo

AvailabilityDay object

AvailabilityDay
PropiedadTipoObligatorioDescripción
datestring (date)Sí
openbooleanSí
opens_atstringSí
closes_atstringSí
freearray of objectSí
busyarray of objectSí

CalendarItem object

CalendarItem
PropiedadTipoObligatorioDescripción
typestringSí
titlestringSí
personstring | nullNo
person_idinteger | nullNo
starts_atstring (date-time)Sí
ends_atstring (date-time)Sí
locationstringSí
facilitystring | nullNo
notesstring | nullNo

Cart object

Cart
PropiedadTipoObligatorioDescripción
itemsarray of objectSí
total_centsintegerSí

Enrollment object

Enrollment
PropiedadTipoObligatorioDescripción
idintegerSí
sessionstringSí
titlestringSí
person_idintegerSí
statusstring (pending_review, enrolled, waitlisted, offered, cancelled, transferred, completed)Sí
waitlist_positioninteger | nullNo
enrolled_atstring | null (date-time)No
offer_expires_atstring | null (date-time)No
start_datestring (date)No
end_datestring (date)No

Error object

Error
PropiedadTipoObligatorioDescripción
errorobjectSí

Facility object

Facility
PropiedadTipoObligatorioDescripción
slugstringSí
namestringSí
typestringSí
locationobjectSí
capacityintegerSí
amenitiesarray of stringNo
accessible_featuresarray of stringNo
bookable_onlinebooleanSí
approval_stepsintegerSí
instant_bookingbooleanSí
insurance_requiredbooleanSí
deposit_centsintegerSí
min_notice_daysintegerSí
max_advance_daysintegerSí
cutoff_daysintegerSí
opens_atstringSí
closes_atstringSí
urlstringSí

FacilityDetail

Household object

Household
PropiedadTipoObligatorioDescripción
public_idstringSí
namestringSí
kindstringNo
residencystring (resident, nonresident)Sí
zipstring | nullNo
statusstringNo
income_statusstringNo
income_verified_untilstring | null (date)No
rolestring | null (primary, secondary, )Sí
membersintegerSí
balance_centsintegerSí
credit_centsintegerSí

Location object

Location
PropiedadTipoObligatorioDescripción
codestringSí
namestringSí
addressstringSí
phonestring | nullNo
x_kmnumberSí
y_kmnumberSí
point_of_salebooleanNo
hoursobjectNo

Member object

Member
PropiedadTipoObligatorioDescripción
idintegerSí
first_namestringSí
last_namestringSí
ageinteger | nullNo
relationstringSí
guardian_rolestringSí
school_gradestring | nullNo
has_allergybooleanNo

Meta object

Meta
PropiedadTipoObligatorioDescripción
totalintegerNo
pageintegerNo
per_pageintegerNo

ReportResult object

ReportResult
PropiedadTipoObligatorioDescripción
dataobjectNo
metaobjectNo

Reservation object

Reservation
PropiedadTipoObligatorioDescripción
idstringSí
statusstring (draft, submitted, in_review, approved, awaiting_payment, confirmed, denied, cancelled)Sí
status_labelstringNo
facilityobjectSí
householdstringSí
purposestring (private, nonprofit, school, commercial)Sí
attendeesintegerSí
titlestring | nullNo
current_stepintegerSí
approval_stepsintegerSí
total_centsintegerSí
deposit_centsintegerSí
amount_due_centsintegerSí
insurance_statusstring (not_required, required, submitted, approved, rejected)Sí
checkpointsobjectSí
datesarray of objectSí
urlstringSí

ReservationRequest object

ReservationRequest
PropiedadTipoObligatorioDescripción
facilitystringSíFacility slug
householdstringNoH-number; defaults to the token user's active household
modestring (once, weekly, dates)No
datestring (date)No
daysarray of integerNoISO weekdays for mode=weekly
untilstring (date)No
datesarray of string (date)No
startstringSíAgency-local time, 15-minute steps
endstringSí
purposestring (private, nonprofit, school, commercial)No
attendeesintegerSí
titlestringNo
organisationstringNo
notesstringNo
on_conflictstring (block, drop)No
agreementobjectNoOptional: sign the rental agreement now

Roster object

Roster
PropiedadTipoObligatorioDescripción
dataobjectNo
metaMetaNo

RosterParticipant object

RosterParticipant
PropiedadTipoObligatorioDescripción
enrollment_idintegerSí
person_idintegerSí
first_namestringSí
last_namestringSí
ageinteger | nullNo
householdstringNo
allergybooleanSí
allergy_notestring | nullNoOnly for users with medical.view at the session's location; each read is audited.
guardian_phonestring | nullNo
emergency_contactsarray of objectNo
authorized_pickupsarray of stringNo
checkin_codestringSíCode on the participant's QR pass, for check-in.