Skip to main content

Staff API

Auto-generated from the OpenAPI spec. Run node docs-site/scripts/fetch-openapi.js to regenerate.

GET /api/v1/permissions/catalog​

Get Permission Catalog

Responses

  • 200 — Successful Response

GET /api/v1/roles​

List Roles

Responses

  • 200 — Successful Response

POST /api/v1/roles​

Create Role

Request body

FieldRequiredTypeDescription
nameYesstring
permissionsNoarray

Responses

  • 201 — Successful Response
  • 422 — Validation Error

PUT /api/v1/roles/{role_id}​

Update Role

Parameters

NameInRequiredTypeDescription
role_idpathYesinteger

Request body

FieldRequiredTypeDescription
nameYesstring
permissionsNoarray

Responses

  • 200 — Successful Response
  • 422 — Validation Error

DELETE /api/v1/roles/{role_id}​

Delete Role

Parameters

NameInRequiredTypeDescription
role_idpathYesinteger

Responses

  • 204 — Successful Response
  • 422 — Validation Error

GET /api/v1/staff​

List Staff

Parameters

NameInRequiredTypeDescription
removedqueryNobooleanDefault false excludes removed staff. true shows only removed staff (the "Removed" tab).

Responses

  • 200 — Successful Response

POST /api/v1/staff​

Create Staff

Request body

FieldRequiredTypeDescription
full_nameYesstring
emailYesstring
passwordYesstring
role_idYesinteger

Responses

  • 201 — Successful Response
  • 422 — Validation Error

PUT /api/v1/staff/{staff_id}​

Update Staff

Parameters

NameInRequiredTypeDescription
staff_idpathYesinteger

Request body

FieldRequiredTypeDescription
full_nameNostring
emailNostring
role_idNointeger
new_passwordNostring

Responses

  • 200 — Successful Response
  • 422 — Validation Error

DELETE /api/v1/staff/{staff_id}​

Delete Staff

Soft-remove a staff member. Never blocked by, and never deletes, historical records (check-ins, payroll, product sales, taught classes, …) — the User row is kept forever so those stay resolvable. removed_at is set instead of deleting the row.

Parameters

NameInRequiredTypeDescription
staff_idpathYesinteger

Responses

  • 204 — Successful Response
  • 409 STAFF_CANNOT_MODIFY_SELF — You cannot delete your own account.
  • 409 STAFF_ALREADY_REMOVED — This staff member has already been removed.
  • 409 STAFF_LAST_MANAGER — Cannot delete the last remaining Manager.
  • 422 — Validation Error

PATCH /api/v1/staff/{staff_id}/restore​

Restore Staff

Clears removed_at and reactivates the account (the symmetric inverse of DELETE /{staff_id} forcing is_active=False as part of removal). Also clears the linked Instructor row's removed_at, if one exists.

Parameters

NameInRequiredTypeDescription
staff_idpathYesinteger

Responses

  • 200 — Successful Response
  • 409 STAFF_NOT_REMOVED — This staff member has not been removed.
  • 422 — Validation Error

POST /api/v1/staff/{staff_id}/deactivate​

Deactivate Staff

Parameters

NameInRequiredTypeDescription
staff_idpathYesinteger

Responses

  • 200 — Successful Response
  • 422 — Validation Error

POST /api/v1/staff/{staff_id}/reactivate​

Reactivate Staff

Parameters

NameInRequiredTypeDescription
staff_idpathYesinteger

Responses

  • 200 — Successful Response
  • 422 — Validation Error