Skip to content

Admin API

The Admin API provides operational control over an OJS backend, separated from the data-plane API used by producers and workers. All admin endpoints live under the /ojs/v1/admin/ path prefix.

  • Path-based separation: Admin endpoints are clearly separated from data-plane endpoints.
  • Read-heavy: Most admin operations are read-only queries and statistics.
  • Safe by default: Destructive operations require explicit confirmation.
  • Paginated: All list endpoints support cursor-based pagination.
MethodPathDescription
GET/ojs/v1/admin/queuesList all queues with stats
GET/ojs/v1/admin/queues/{name}Get queue details and configuration
POST/ojs/v1/admin/queues/{name}/pausePause a queue
POST/ojs/v1/admin/queues/{name}/resumeResume a paused queue
POST/ojs/v1/admin/queues/{name}/purgeDelete all jobs from a queue
PATCH/ojs/v1/admin/queues/{name}Update queue configuration
{
"name": "default",
"state": "active",
"counts": {
"available": 150,
"active": 10,
"scheduled": 25,
"retryable": 3,
"dead_letter": 7
},
"throughput": {
"processed_last_minute": 120,
"processed_last_hour": 5400
}
}
MethodPathDescription
GET/ojs/v1/admin/jobsList jobs with filtering
GET/ojs/v1/admin/jobs/{id}Get full job details
POST/ojs/v1/admin/jobs/{id}/cancelCancel a specific job
POST/ojs/v1/admin/jobs/{id}/retryRetry a specific job
POST/ojs/v1/admin/jobs/batch/cancelBulk cancel jobs
POST/ojs/v1/admin/jobs/batch/retryBulk retry jobs
Terminal window
GET /ojs/v1/admin/jobs?queue=payments&state=active&type=payment.process&limit=20
FilterDescription
queueFilter by queue name
stateFilter by job state
typeFilter by job type (prefix match with *)
since / untilFilter by creation time
worker_idFilter by processing worker
MethodPathDescription
GET/ojs/v1/admin/workersList active workers
GET/ojs/v1/admin/workers/{id}Get worker details
POST/ojs/v1/admin/workers/{id}/quietSend quiet signal to worker
DELETE/ojs/v1/admin/workers/{id}Deregister a worker
Terminal window
GET /ojs/v1/admin/stats
{
"jobs": {
"total_enqueued": 1250000,
"total_completed": 1200000,
"total_failed": 48000,
"total_discarded": 2000
},
"queues": {
"total": 5,
"paused": 0
},
"workers": {
"active": 12,
"busy": 8,
"quiet": 1
}
}
Terminal window
GET /ojs/v1/admin/stats/history?period=1h&range=24h

Returns time-series data for throughput, error rates, and queue depths.

MethodPathDescription
GET/ojs/v1/admin/dead-letterList dead letter jobs
GET/ojs/v1/admin/dead-letter/{id}Get dead letter job details
POST/ojs/v1/admin/dead-letter/{id}/retryRetry a dead letter job
DELETE/ojs/v1/admin/dead-letter/{id}Delete a dead letter job
POST/ojs/v1/admin/dead-letter/retryBulk retry with filters
DELETE/ojs/v1/admin/dead-letterBulk delete with filters

Admin API endpoints require the admin role. Backends SHOULD implement RBAC scopes to separate admin access from data-plane access:

ScopeDescription
admin:readRead-only access to stats, lists, and details
admin:writePause, resume, cancel, retry operations
admin:deletePurge, delete, and destructive operations