Staff API
Auto-generated from the OpenAPI spec. Run
node docs-site/scripts/fetch-openapi.jsto 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
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | |
permissions | No | array |
Responses
- 201 — Successful Response
- 422 — Validation Error
PUT /api/v1/roles/{role_id}
Update Role
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
role_id | path | Yes | integer |
Request body
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | |
permissions | No | array |
Responses
- 200 — Successful Response
- 422 — Validation Error
DELETE /api/v1/roles/{role_id}
Delete Role
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
role_id | path | Yes | integer |
Responses
- 204 — Successful Response
- 422 — Validation Error
GET /api/v1/staff
List Staff
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
removed | query | No | boolean | Default false excludes removed staff. true shows only removed staff (the "Removed" tab). |
Responses
- 200 — Successful Response
POST /api/v1/staff
Create Staff
Request body
| Field | Required | Type | Description |
|---|---|---|---|
full_name | Yes | string | |
email | Yes | string | |
password | Yes | string | |
role_id | Yes | integer |
Responses
- 201 — Successful Response
- 422 — Validation Error
PUT /api/v1/staff/{staff_id}
Update Staff
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
staff_id | path | Yes | integer |
Request body
| Field | Required | Type | Description |
|---|---|---|---|
full_name | No | string | |
email | No | string | |
role_id | No | integer | |
new_password | No | string |
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
| Name | In | Required | Type | Description |
|---|---|---|---|---|
staff_id | path | Yes | integer |
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
| Name | In | Required | Type | Description |
|---|---|---|---|---|
staff_id | path | Yes | integer |
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
| Name | In | Required | Type | Description |
|---|---|---|---|---|
staff_id | path | Yes | integer |
Responses
- 200 — Successful Response
- 422 — Validation Error
POST /api/v1/staff/{staff_id}/reactivate
Reactivate Staff
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
staff_id | path | Yes | integer |
Responses
- 200 — Successful Response
- 422 — Validation Error