blob: 8c5005d7bf36a0de77f0ef6775ca3c2280eb493c [file] [view]
# Admin API Reference
**Audience:** operators and dashboards. Every endpoint below lives on the
**admin HTTP port (default 10106)**, served by `UniAdminServer` a separate
server so management traffic never competes with data traffic.
---
## Authentication: fail-closed bearer guard
Every endpoint **except `/admin/health`** requires:
```
Authorization: Bearer <value of -Deventmesh.admin.token>
```
| Situation | Result |
| --- | --- |
| Valid bearer | Request proceeds |
| Missing / wrong bearer | `401 {"error":"unauthorized", …}` |
| **No token configured at all** | **`503 {"error":"admin_locked", …}`** the admin API is fail-closed by default; set `-Deventmesh.admin.token=<secret>` to enable |
The comparison is constant-time. `/admin/health` is exempt so liveness
probes work unauthenticated.
## Endpoints
### Health & metrics
| Endpoint | Method | Returns |
| --- | --- | --- |
| `/admin/health` | GET | `{"status":"UP", …}` + pending deliveries + partitions liveness probe |
| `/admin/metrics` | GET | JSON counters: `publishCount`, `publishFailed`, `rateLimited`, `eventsDispatched`, `ackCount`, `redeliveries`, `dlqCount`, `pendingDeliveries` |
| `/metrics` | GET | **Prometheus text exposition** (`eventmesh_publish_count`, `eventmesh_publish_failed_count`, `eventmesh_rate_limited_count`, `eventmesh_dispatched_count`, `eventmesh_ack_count`, `eventmesh_redeliveries_count`, `eventmesh_dlq_count`, gauge `eventmesh_pending_deliveries`) |
### Introspection
| Endpoint | Method | Query | Returns |
| --- | --- | --- | --- |
| `/admin/subscriptions` | GET | `?topic=` | Active subscriptions `{subscriptionId, clientId, topic, mode}` |
| `/admin/offsets` | GET | `?topic=` | Distribution offsets / lag |
| `/admin/clients` | GET | `?topic=` | Online clients + pending |
| `/admin/dlq/browse` | GET | `?topic=&max=` | Dead-lettered events |
### Operations
| Endpoint | Method | Query | Effect |
| --- | --- | --- | --- |
| `/admin/client/reject` | POST | `?clientId=` | Evict a client |
| `/admin/dlq/replay` | POST | `?topic=&max=` | Replay dead-lettered events |
| `/admin/ratelimit` | GET/POST | | Inspect / adjust per-topic rate limits |
### Connectors
| Endpoint | Method | Effect |
| --- | --- | --- |
| `/admin/connectors` | GET/POST/DELETE | Connector definition CRUD |
| `/admin/connector-workers` | GET/POST | Worker registry / heartbeats |
| `/connector/offset` | GET | Connector offset state |
Connector operations go through the runtime's `ConnectorScheduler`; a
misconfigured or unauthorized connector definition is rejected before any
JAR is loaded.
## Where the code lives
- `eventmesh-runtime/.../admin/UniAdminServer.java` — routes + token guard
- `eventmesh-runtime/.../admin/UniAdminService.java` — the cluster view
- Related guides: [Observability](observability.md) (metrics semantics,
SLOs, alerts), [Deployment](deployment.md) (runbooks).