Admin

Platform administration endpoints for managing users, organisations, system settings, and operational health.

Authentication

Every endpoint in this group requires the requireAdmin middleware. Requests must carry a valid JWT for a user with is_admin = true. Non-admin users receive 403 regardless of other permissions.

Audit Trail

All mutating operations write to admin_audit_log via logAdminAction(), capturing the admin's user ID, action type, target entity, request details, IP address, and user agent. The audit log is append-only and queryable via the audit log endpoint.

Pagination

List endpoints accept page (min 1, default 1) and perPage (min 1, max 100, default 20) query parameters. Responses include a meta object with page, perPage, total, and pages fields.

Endpoints

GET https://app.speybooks.com/api/v1/admin/audit-log View audit log DELETE https://app.speybooks.com/api/v1/admin/bug-reports/ Bulk delete bug reports DELETE https://app.speybooks.com/api/v1/admin/bug-reports/{id} Delete a bug report GET https://app.speybooks.com/api/v1/admin/orgs List organisations GET https://app.speybooks.com/api/v1/admin/orgs/{id} Get organisation details PATCH https://app.speybooks.com/api/v1/admin/orgs/{id} Update organisation DELETE https://app.speybooks.com/api/v1/admin/orgs/{id} Delete organisation POST https://app.speybooks.com/api/v1/admin/orgs/{id}/cancel-subscription Cancel subscription POST https://app.speybooks.com/api/v1/admin/orgs/{id}/refund Refund payment POST https://app.speybooks.com/api/v1/admin/orgs/{id}/retry-payment Retry payment GET https://app.speybooks.com/api/v1/admin/search Search platform GET https://app.speybooks.com/api/v1/admin/settings Get platform settings PATCH https://app.speybooks.com/api/v1/admin/settings/{key} Update platform setting GET https://app.speybooks.com/api/v1/admin/stats Platform statistics POST https://app.speybooks.com/api/v1/admin/system/clear-cache Clear system cache GET https://app.speybooks.com/api/v1/admin/system/health System health check POST https://app.speybooks.com/api/v1/admin/system/replay-webhooks Replay failed webhooks GET https://app.speybooks.com/api/v1/admin/system/webhooks/failed List failed webhooks GET https://app.speybooks.com/api/v1/admin/users List users GET https://app.speybooks.com/api/v1/admin/users/{id} Get user details DELETE https://app.speybooks.com/api/v1/admin/users/{id} Delete user POST https://app.speybooks.com/api/v1/admin/users/{id}/disable-mfa Disable user MFA POST https://app.speybooks.com/api/v1/admin/users/{id}/impersonate Impersonate user PATCH https://app.speybooks.com/api/v1/admin/users/{id}/role Update user role POST https://app.speybooks.com/api/v1/admin/users/{id}/send-reset-link Send password reset POST https://app.speybooks.com/api/v1/admin/users/{id}/suspend Suspend user POST https://app.speybooks.com/api/v1/admin/users/{id}/unlock Unlock user POST https://app.speybooks.com/api/v1/admin/users/{id}/unsuspend Unsuspend user