Skip to content

Admin API ​

Admin HTTP API lives in apis/admin-http and listens on:

text
http://127.0.0.1:9710

Admin UI listens on http://127.0.0.1:9720 and proxies browser-side /api/* requests to Java Admin HTTP API.

Implementation boundary ​

Admin API continues to use JDK HttpServer, with runtime responsibilities separated as follows:

text
AdminHttpPlugin             assembly, startup, and shutdown
AdminHttpRouter             route matching
AdminRouteRegistration      route, controller, and policy binding
AdminAuthorizationService   authentication and role decisions
AdminRequestReader          request-body and JSON boundaries
Admin*Controller            domain operations
AdminHttpResponder          consistent JSON and error responses

Authorization no longer checks business path strings such as /api/users or /trigger. Each route group receives an AdminRoutePolicy during registration, so a new endpoint must declare its access role and path reorganization cannot silently change permissions.

Roles and request limits ​

RoleTypical access
READERGET and HEAD queries
OPERATORJob changes, manual triggers, execution cancellation, and Outbox requeue
ADMINUsers, Integration Keys, and management actions without a narrower policy

Login, health, and other public endpoints use an explicit anonymous policy. Admin API also enforces shared limits for request bodies, page sizes, and batch operations before a domain controller runs. These controls are server-side security boundaries; hiding a button in Admin UI is not authorization.

Authentication ​

MethodPathDescription
GET/api/auth/configCheck whether Admin authentication is enabled
POST/api/auth/loginLog in with username and password, returns Bearer Token
GET/api/integration-keyCheck whether Executor Integration Key is configured
POST/api/integration-keyGenerate or rotate Integration Key; plaintext is returned once

Runtime Status ​

MethodPathDescription
GET/api/healthHealth check
GET/api/overviewOverview page data
GET/api/pluginsPlugin load and runtime status
GET/api/auditAdmin change audit

Jobs ​

MethodPathDescription
GET/api/jobsList jobs
POST/api/jobsCreate remote job
GET/api/jobs/{jobId}Get job details
PUT/api/jobs/{jobId}Update job
PATCH/api/jobs/{jobId}Enable or disable job
DELETE/api/jobs/{jobId}Delete job
POST/api/jobs/{jobId}/triggerTrigger job manually
GET/api/jobs/{jobId}/historyView job change history

Example:

json
{
  "id": "billing-daily",
  "name": "Daily billing",
  "groupId": "billing",
  "handlerName": "billingHandler",
  "scheduleType": "CRON",
  "scheduleValue": "0 0 2 * * *",
  "zoneId": "Asia/Shanghai",
  "enabled": true
}

Executors ​

MethodPathDescription
GET/api/executorsOnline executor instances
GET/api/executor-definitionsLogical executor definitions
POST/api/executor-definitionsCreate executor definition
DELETE/api/executor-definitions/{name}Delete executor definition
POST/api/executor-definitions/{name}/isolateIsolate executor

Executions and Outbox ​

MethodPathDescription
GET/api/executionsList executions
GET/api/executions/{executionId}Execution details
GET/api/executions/root/{rootExecutionId}Retry history for one root
POST/api/executions/{executionId}/cancelCancel execution
POST/api/executions/batch-cancelBatch cancel
GET/api/outbox/deadDead dispatch records
POST/api/outbox/{outboxId}/requeueRequeue dead dispatch
POST/api/outbox/batch-requeueBatch requeue

Nodes ​

MethodPathDescription
GET/api/nodesList nodes
POST/api/nodes/{nodeId}/drainStart node drain
POST/api/nodes/{nodeId}/resumeResume node
GET/api/nodes/{nodeId}/drain-statusCheck drain status

Schedule Helpers ​

MethodPathDescription
POST/api/schedules/previewPreview future fire times
GET/api/schedules/timezones?query=AsiaSearch IANA time zones

Users ​

MethodPathDescription
GET/api/usersList users
POST/api/usersCreate user
PUT/api/users/{username}Update user
DELETE/api/users/{username}Delete user

Released under the Apache-2.0 License.