CSRF tokens
Get a CSRF token
GET /api/security/csrf-token
Issues a new CSRF token scoped to the current session. Include this token in every POST, PUT, and DELETE request.
Permission: All authenticated users
CSRF tokens are single-use and session-scoped. Fetch a fresh token before each state-changing operation, or once at session start and reuse it until the session expires.
Session management
List active sessions
GET /api/security/sessions?action=list
Returns all active sessions for all users. Each entry includes device info, IP address, and last-seen timestamp.
Required permission: api.security.sessions.listAccount types: Staff only
Terminate a session
POST /api/security/sessions
Terminates (force-logs-out) a specific session. You can terminate any other user’s session if you have the api.security.sessions.terminate permission. To end your own current session, use the standard logout endpoint (GET /logout) — you cannot terminate your own active session via this endpoint.
Required permission: api.security.sessions.terminate (for terminating other users’ sessions)Requires CSRF token.
Must be
terminate.The session ID to terminate. Cannot be the caller’s own current session.
CSRF token from
GET /api/security/csrf-token.Blacklist a user
POST /api/security/sessions
Adds a user to the session blacklist, immediately revoking all their active sessions and preventing new logins until removed.
Required permission: api.security.sessions.manageRequires CSRF token.
Must be
blacklist_add.ID of the user to blacklist.
Human-readable reason for the blacklist (recorded in the audit log).
CSRF token.
Remove a user from the blacklist
POST /api/security/sessions
Removes a user from the session blacklist, restoring their ability to log in.
Required permission: api.security.sessions.manageRequires CSRF token.
Must be
blacklist_remove.ID of the user to remove from the blacklist.
CSRF token.
List blacklisted users
GET /api/security/sessions?action=blacklist_list
Returns all users currently on the session blacklist.
Required permission: api.security.sessions.manage
File integrity monitoring
List file integrity alerts
GET /api/security/file-integrity-alerts
Returns paginated file-integrity violation alerts. Alerts are raised when a monitored file is modified, added, or deleted outside of a planned deployment.
Required permission: api.security.file_integrity_alerts.manageAccount types: Staff only
Filter by status:
0 = new, 1 = resolved, 2 = ignored.Filter by severity:
critical, high, medium, low.Sort order:
created_at_desc, created_at_asc, severity_desc.Page number.
Results per page (max 100).
Resolve a file integrity alert
POST /api/security/resolve-alert
Marks a single file-integrity alert as resolved.
Required permission: api.security.file_integrity_alerts.manageRequires CSRF token.
ID of the alert to resolve.
CSRF token.
Bulk resolve alerts
POST /api/security/bulk-resolve-alerts
Resolves multiple file-integrity alerts in one request.
Required permission: api.security.file_integrity_alerts.manageRequires CSRF token.
Array of alert IDs to resolve.
CSRF token.
Bulk delete alerts
POST /api/security/bulk-delete-alerts
Permanently deletes multiple file-integrity alerts.
Required permission: api.security.file_integrity_alerts.manageRequires CSRF token.
Array of alert IDs to delete.
CSRF token.
Run a file integrity check
POST /api/security/run-integrity-check
Triggers an on-demand file integrity scan. Returns a job ID that can be polled for progress.
Required permission: api.security.file_integrity_alerts.manageAccount types: Staff only
Requires CSRF token.
Get file integrity scan progress
GET /api/security/file-integrity-progress
Polls the progress of an in-progress file integrity scan.
Required permission: api.security.file_integrity_alerts.manage
ID returned by
POST /api/security/run-integrity-check.View a file diff
GET /api/security/file-diff
Returns the line-by-line diff between the current version of a monitored file and the known-good baseline.
Required permission: api.security.file_integrity_alerts.manageAccount types: Staff only
ID of the file-integrity alert to diff.
Password breach checks
Check if a password has been breached
GET /api/security/password-breach-check
Checks whether a given password hash prefix appears in the HaveIBeenPwned database using k-anonymity (only the first 5 characters of the SHA-1 hash are sent).
Permission: All authenticated users
First 5 characters of the SHA-1 hash of the password to check (uppercase).
Security reports
Generate a security report
GET /api/admin/security-report
Generates a full security audit report including login activity, session history, failed authentication attempts, and file integrity summary.
Required permission: api.admin.security_report.manageAccount types: Staff only
ISO 8601 start date for the report period.
ISO 8601 end date for the report period.
Mobile authentication
Request a Bearer token
POST /api/security/mobile-auth
Authenticates a user with their email and password and returns a long-lived Bearer token for use by mobile or API clients. See Authentication for full details.
Permission: None — unauthenticated endpoint
User’s email address.
User’s password.
Revoke a Bearer token
DELETE /api/security/mobile-auth
Revokes the Bearer token included in the Authorization header, immediately invalidating it.
Permission: All authenticated Bearer token users