Download OpenAPI specification:Download
Calinora Pilot API for comprehensive Kafka cluster management and monitoring
Calinora Pilot is an all-in-one, container-native tool that live-samples Kafka traffic, scores partition activity, exposes management APIs (including intelligent partition redistribution) and displays everything in a modern React dashboard.
When authentication is enabled, all API endpoints (except health, metrics, and auth login flows) require a valid session or token.
Session-based (UI): Users authenticate via OAuth2/OIDC and receive a session cookie.
Bearer token (API/MCP): API clients and MCP tools authenticate via Authorization: Bearer <token> header using a Personal Access Token (PAT). PATs are long-lived, revocable tokens created from the Pilot UI.
MCP endpoint: The Model Context Protocol server is available at /mcp for AI agent integration.
Returns the state of all agents known to Pilot. When agent management is disabled
returns an empty list with enabled: false.
{- "success": true,
- "data": {
- "agents": [
- {
- "agentId": "string",
- "brokerId": 0,
- "version": "string",
- "status": "online",
- "hostname": "string",
- "lastSeen": "2019-08-24T14:15:22Z",
- "uptimeSeconds": 0,
- "connectedAt": "2019-08-24T14:15:22Z",
- "kafkaVersion": "string",
- "clusterId": "string",
- "binaryHash": "string",
- "upgradeAvailable": true,
- "brokerRunning": true,
- "systemMetrics": {
- "cpuPercent": 0,
- "memoryUsedBytes": 0,
- "memoryTotalBytes": 0,
- "openFileDescriptors": 0,
- "maxFileDescriptors": 0,
- "diskUsage": [
- {
- "mountPoint": "string",
- "totalBytes": 0,
- "usedBytes": 0,
- "availableBytes": 0,
- "filesystemType": "string",
- "usagePercent": 0,
- "inodeTotal": 0,
- "inodeUsed": 0
}
], - "network": {
- "bytesSent": 0,
- "bytesReceived": 0,
- "packetsSent": 0,
- "packetsReceived": 0,
- "errorsIn": 0,
- "errorsOut": 0,
- "dropsIn": 0,
- "dropsOut": 0,
- "linkSpeedMbps": 0
}, - "diskIO": {
- "readBytes": 0,
- "writeBytes": 0,
- "readOps": 0,
- "writeOps": 0,
- "ioTimeMs": 0,
- "weightedIoTimeMs": 0
}, - "logDirUsage": [
- {
- "path": "string",
- "totalBytes": 0,
- "usedBytes": 0,
- "availableBytes": 0,
- "usagePercent": 0
}
]
}, - "discovery": {
- "runtime": {
- "type": "string",
- "os": "string",
- "kernel": "string",
- "arch": "string",
- "systemdAvailable": true
}, - "distribution": {
- "vendor": "string",
- "version": "string",
- "kafkaVersion": "string",
- "kraftMode": true,
- "kraftRole": "string"
}, - "process": {
- "pid": 0,
- "user": "string",
- "javaVersion": "string",
- "heapMaxMb": 0,
- "jmxPort": 0,
- "jmxAuth": true
}, - "paths": {
- "installDir": "string",
- "configFile": "string",
- "logDirs": [
- "string"
], - "dataDirs": [
- "string"
], - "pidFile": "string"
}, - "service": {
- "manager": "string",
- "unitName": "string",
- "restartCommand": "string",
- "stopCommand": "string",
- "statusCommand": "string"
}, - "logFiles": [
- {
- "type": "string",
- "path": "string",
- "format": "string"
}
], - "confidence": 0,
- "receivedAt": "2019-08-24T14:15:22Z"
}, - "vendor": "string",
- "kraftMode": true,
- "runtimeType": "string",
- "serviceManager": "string"
}
], - "enabled": true,
- "summary": {
- "total": 0,
- "online": 0,
- "offline": 0
}, - "grpcPort": 0
}
}Returns the Pilot Agent binary for the requested architecture as an application/octet-stream. The binary is fetched from the configured upstream download URL and cached locally by Pilot.
| arch | string Default: "amd64" Enum: "amd64" "arm64" CPU architecture |
{- "success": false,
- "error": "string",
- "details": "string"
}Returns the full SHA256 hex digest of the cached agent binary for the requested architecture.
| arch | string Default: "amd64" Enum: "amd64" "arm64" |
{- "success": true,
- "data": {
- "checksum": "2a91f4e9b3c5d1a7..."
}
}Returns the current upstream download URL, the agent version, and a map of architectures for which a binary is cached.
{- "success": true,
- "data": {
- "downloadUrl": "string",
- "version": "string",
- "binaryAvailable": {
- "property1": true,
- "property2": true
}
}
}Updates the upstream URL from which Pilot fetches the agent binary. The change is not persisted and reverts on restart. Requires a valid license (management mode).
| downloadUrl required | string |
{- "downloadUrl": "string"
}{- "success": true,
- "data": {
- "downloadUrl": "string"
}
}Called by an agent during enrollment. Accepts either a single-use enrollment token or the persistent master bootstrap token. Single-use tokens are consumed on successful enrollment. Not license-gated because it is part of the agent bootstrap flow. Bootstrap requests over plain HTTP are logged with a security warning.
| agentId required | string |
| token required | string |
| csrPEM required | string PEM-encoded certificate signing request |
{- "agentId": "string",
- "token": "string",
- "csrPEM": "string"
}{- "success": true,
- "data": {
- "certPEM": "string",
- "caPEM": "string"
}
}Creates a new single-use bootstrap token that an agent can exchange for a signed certificate. Requires a valid license (management mode).
| label | string |
| ttlMinutes | integer Token TTL in minutes. 0 or omitted uses the default TTL. |
{- "label": "string",
- "ttlMinutes": 0
}{- "success": true,
- "data": {
- "token": "string",
- "expiresAt": "2019-08-24T14:15:22Z",
- "label": "string"
}
}Revokes a previously issued single-use enrollment token. Requires a valid license (management mode).
| token required | string |
{- "token": "string"
}{- "success": true,
- "message": "string"
}Deploys a Pilot Agent to a remote host using SSH (optionally via one or more jump hosts). Requires HTTPS and a valid license (management mode).
required | object (SSHHop) |
Array of objects (SSHHop) | |
| brokerId | integer <int32> |
| pilotServerAddress required | string gRPC address used by the agent to connect back to Pilot (e.g. |
| bootstrapUrl | string HTTP bootstrap URL used by the agent for certificate renewal. Defaults to the incoming request URL. |
| arch | string Default: "amd64" Enum: "amd64" "arm64" |
| serviceUser | string Default: "root" OS user the agent systemd service runs as. Defaults to |
| kafkaUnit | string Systemd unit name of the Kafka broker on the target host. Optional; auto-detected from the running Kafka JVM process when omitted. Comma-separated list for hosts running multiple brokers. |
| kafkaGroup | string Group that owns Kafka log files. Optional; auto-detected from the running unit when omitted. The pilot-agent user is added to this group so it can tail Kafka logs. |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "brokerId": 0,
- "pilotServerAddress": "string",
- "bootstrapUrl": "string",
- "arch": "amd64",
- "serviceUser": "root",
- "kafkaUnit": "kafka.service",
- "kafkaGroup": "kafka",
- "sudoPassword": "string"
}{- "success": true,
- "data": {
- "success": true,
- "steps": [
- "string"
], - "agentId": "string",
- "error": "string"
}
}Deploys Pilot Agents to up to 50 target hosts sequentially. Requires HTTPS and a valid license (management mode).
required | Array of objects (BulkDeployTarget) <= 50 items |
Array of objects (SSHHop) | |
| pilotServerAddress required | string gRPC address used by the agent to connect back to Pilot (e.g. |
| bootstrapUrl | string HTTP bootstrap URL used by the agent for certificate renewal. Defaults to the incoming request URL. |
| arch | string Shared architecture. Empty string auto-detects per host. |
| serviceUser | string Default: "root" OS user the agent systemd service runs as. Defaults to |
| kafkaUnit | string Systemd unit name of the Kafka broker on each target host. Optional; auto-detected from the running Kafka JVM process when omitted. Comma-separated list for hosts running multiple brokers. Applied to every host in the bulk batch. |
| kafkaGroup | string Group that owns Kafka log files. Optional; auto-detected from the running unit when omitted. The pilot-agent user is added to this group so it can tail Kafka logs. Applied to every host in the bulk batch. |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "targets": [
- {
- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "brokerId": 0
}
], - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "pilotServerAddress": "string",
- "bootstrapUrl": "string",
- "arch": "string",
- "serviceUser": "root",
- "kafkaUnit": "kafka.service",
- "kafkaGroup": "kafka",
- "sudoPassword": "string"
}{- "success": true,
- "data": {
- "results": [
- {
- "host": "string",
- "brokerId": 0,
- "result": {
- "success": true,
- "steps": [
- "string"
], - "agentId": "string",
- "error": "string"
}
}
], - "summary": {
- "total": 0,
- "succeeded": 0,
- "failed": 0
}
}
}Runs the SSH connection, auth, and discovery steps of a deploy without installing anything. Returns host key material for trust-on-first-use. Requires HTTPS and a valid license (management mode).
required | object (SSHHop) |
Array of objects (SSHHop) | |
| brokerId | integer <int32> |
| pilotServerAddress required | string gRPC address used by the agent to connect back to Pilot (e.g. |
| bootstrapUrl | string HTTP bootstrap URL used by the agent for certificate renewal. Defaults to the incoming request URL. |
| arch | string Default: "amd64" Enum: "amd64" "arm64" |
| serviceUser | string Default: "root" OS user the agent systemd service runs as. Defaults to |
| kafkaUnit | string Systemd unit name of the Kafka broker on the target host. Optional; auto-detected from the running Kafka JVM process when omitted. Comma-separated list for hosts running multiple brokers. |
| kafkaGroup | string Group that owns Kafka log files. Optional; auto-detected from the running unit when omitted. The pilot-agent user is added to this group so it can tail Kafka logs. |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "brokerId": 0,
- "pilotServerAddress": "string",
- "bootstrapUrl": "string",
- "arch": "amd64",
- "serviceUser": "root",
- "kafkaUnit": "kafka.service",
- "kafkaGroup": "kafka",
- "sudoPassword": "string"
}{- "success": true,
- "data": {
- "success": true,
- "message": "string",
- "arch": "string",
- "hostname": "string",
- "detectedBrokerId": 0,
- "detectedKafkaUnit": "kafka.service",
- "detectedKafkaGroup": "kafka",
- "hopsReached": 0,
- "error": "string",
- "hostKey": "string",
- "hostKeyFingerprint": "string"
}
}Same as /agents/deploy but emits Server-Sent Events with per-step progress.
Events: step for each deploy step, done with the final result, or error
on failure. Requires HTTPS and a valid license (management mode).
required | object (SSHHop) |
Array of objects (SSHHop) | |
| brokerId | integer <int32> |
| pilotServerAddress required | string gRPC address used by the agent to connect back to Pilot (e.g. |
| bootstrapUrl | string HTTP bootstrap URL used by the agent for certificate renewal. Defaults to the incoming request URL. |
| arch | string Default: "amd64" Enum: "amd64" "arm64" |
| serviceUser | string Default: "root" OS user the agent systemd service runs as. Defaults to |
| kafkaUnit | string Systemd unit name of the Kafka broker on the target host. Optional; auto-detected from the running Kafka JVM process when omitted. Comma-separated list for hosts running multiple brokers. |
| kafkaGroup | string Group that owns Kafka log files. Optional; auto-detected from the running unit when omitted. The pilot-agent user is added to this group so it can tail Kafka logs. |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "brokerId": 0,
- "pilotServerAddress": "string",
- "bootstrapUrl": "string",
- "arch": "amd64",
- "serviceUser": "root",
- "kafkaUnit": "kafka.service",
- "kafkaGroup": "kafka",
- "sudoPassword": "string"
}{- "success": false,
- "error": "string",
- "details": "string"
}Same as /agents/deploy/bulk but emits Server-Sent Events with per-host
progress. Events: step for each host step, done with the final summary, or
error on failure. Requires HTTPS and a valid license (management mode).
required | Array of objects (BulkDeployTarget) <= 50 items |
Array of objects (SSHHop) | |
| pilotServerAddress required | string gRPC address used by the agent to connect back to Pilot (e.g. |
| bootstrapUrl | string HTTP bootstrap URL used by the agent for certificate renewal. Defaults to the incoming request URL. |
| arch | string Shared architecture. Empty string auto-detects per host. |
| serviceUser | string Default: "root" OS user the agent systemd service runs as. Defaults to |
| kafkaUnit | string Systemd unit name of the Kafka broker on each target host. Optional; auto-detected from the running Kafka JVM process when omitted. Comma-separated list for hosts running multiple brokers. Applied to every host in the bulk batch. |
| kafkaGroup | string Group that owns Kafka log files. Optional; auto-detected from the running unit when omitted. The pilot-agent user is added to this group so it can tail Kafka logs. Applied to every host in the bulk batch. |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "targets": [
- {
- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "brokerId": 0
}
], - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "pilotServerAddress": "string",
- "bootstrapUrl": "string",
- "arch": "string",
- "serviceUser": "root",
- "kafkaUnit": "kafka.service",
- "kafkaGroup": "kafka",
- "sudoPassword": "string"
}{- "success": false,
- "error": "string",
- "details": "string"
}{- "success": true,
- "data": {
- "agentId": "string",
- "brokerId": 0,
- "version": "string",
- "status": "online",
- "hostname": "string",
- "lastSeen": "2019-08-24T14:15:22Z",
- "uptimeSeconds": 0,
- "connectedAt": "2019-08-24T14:15:22Z",
- "kafkaVersion": "string",
- "clusterId": "string",
- "binaryHash": "string",
- "upgradeAvailable": true,
- "brokerRunning": true,
- "systemMetrics": {
- "cpuPercent": 0,
- "memoryUsedBytes": 0,
- "memoryTotalBytes": 0,
- "openFileDescriptors": 0,
- "maxFileDescriptors": 0,
- "diskUsage": [
- {
- "mountPoint": "string",
- "totalBytes": 0,
- "usedBytes": 0,
- "availableBytes": 0,
- "filesystemType": "string",
- "usagePercent": 0,
- "inodeTotal": 0,
- "inodeUsed": 0
}
], - "network": {
- "bytesSent": 0,
- "bytesReceived": 0,
- "packetsSent": 0,
- "packetsReceived": 0,
- "errorsIn": 0,
- "errorsOut": 0,
- "dropsIn": 0,
- "dropsOut": 0,
- "linkSpeedMbps": 0
}, - "diskIO": {
- "readBytes": 0,
- "writeBytes": 0,
- "readOps": 0,
- "writeOps": 0,
- "ioTimeMs": 0,
- "weightedIoTimeMs": 0
}, - "logDirUsage": [
- {
- "path": "string",
- "totalBytes": 0,
- "usedBytes": 0,
- "availableBytes": 0,
- "usagePercent": 0
}
]
}, - "discovery": {
- "runtime": {
- "type": "string",
- "os": "string",
- "kernel": "string",
- "arch": "string",
- "systemdAvailable": true
}, - "distribution": {
- "vendor": "string",
- "version": "string",
- "kafkaVersion": "string",
- "kraftMode": true,
- "kraftRole": "string"
}, - "process": {
- "pid": 0,
- "user": "string",
- "javaVersion": "string",
- "heapMaxMb": 0,
- "jmxPort": 0,
- "jmxAuth": true
}, - "paths": {
- "installDir": "string",
- "configFile": "string",
- "logDirs": [
- "string"
], - "dataDirs": [
- "string"
], - "pidFile": "string"
}, - "service": {
- "manager": "string",
- "unitName": "string",
- "restartCommand": "string",
- "stopCommand": "string",
- "statusCommand": "string"
}, - "logFiles": [
- {
- "type": "string",
- "path": "string",
- "format": "string"
}
], - "confidence": 0,
- "receivedAt": "2019-08-24T14:15:22Z"
}, - "vendor": "string",
- "kraftMode": true,
- "runtimeType": "string",
- "serviceManager": "string"
}
}Copies a new agent binary to the target host over SSH and restarts the agent service. Requires HTTPS and a valid license (management mode).
| brokerId required | integer <int32> |
required | object (SSHHop) |
Array of objects (SSHHop) | |
| brokerId | integer <int32> |
| arch | string Default: "amd64" Enum: "amd64" "arm64" |
| sudoPassword | string Password for sudo on the target host. Empty means passwordless sudo is attempted. |
{- "target": {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}, - "proxyHops": [
- {
- "host": "string",
- "port": 22,
- "username": "string",
- "authMethod": "key",
- "privateKey": "string",
- "password": "string",
- "hostKey": "string",
- "knownFingerprints": [
- "string"
], - "allowInsecureHostKey": false
}
], - "brokerId": 0,
- "arch": "amd64",
- "sudoPassword": "string"
}{- "success": true,
- "data": {
- "success": true,
- "steps": [
- "string"
], - "agentId": "string",
- "error": "string"
}
}Sends an upgrade command over the existing gRPC stream; the agent downloads the new binary from Pilot and restarts itself. No SSH required. Requires a valid license (management mode).
| brokerId required | integer <int32> |
{- "success": true,
- "data": {
- "commandId": "string",
- "success": true,
- "error": "string",
- "durationMs": 0
}
}Sends a restart command to the broker's Pilot Agent. Requires a valid license (management mode).
| brokerId required | integer <int32> |
| graceful | boolean Default: true |
| timeoutSeconds | integer [ 1 .. 600 ] Default: 300 |
{- "graceful": true,
- "timeoutSeconds": 300
}{- "success": true,
- "data": {
- "commandId": "string",
- "success": true,
- "error": "string",
- "durationMs": 0
}
}Requires a valid license (management mode).
| brokerId required | integer <int32> |
| graceful | boolean Default: true |
| timeoutSeconds | integer [ 1 .. 600 ] Default: 300 |
{- "graceful": true,
- "timeoutSeconds": 300
}{- "success": true,
- "data": {
- "commandId": "string",
- "success": true,
- "error": "string",
- "durationMs": 0
}
}Requires a valid license (management mode).
| brokerId required | integer <int32> |
| graceful | boolean Default: true |
| timeoutSeconds | integer [ 1 .. 600 ] Default: 300 |
{- "graceful": true,
- "timeoutSeconds": 300
}{- "success": true,
- "data": {
- "commandId": "string",
- "success": true,
- "error": "string",
- "durationMs": 0
}
}Subscribes to the broker's log stream via Server-Sent Events. Filters can be
applied by level or substring pattern. Recent buffered entries are backfilled
on connect. Each event is event: log with a JSON payload.
| brokerId required | integer <int32> |
| level | string Enum: "TRACE" "DEBUG" "INFO" "WARN" "ERROR" Minimum log level |
| pattern | string Substring filter applied to each log line |
| tail | integer <= 1000 Default: 200 Number of recent entries to replay on connect |
{- "success": false,
- "error": "string",
- "details": "string"
}Searches the in-memory log buffer for a broker and returns matching entries.
| brokerId required | integer <int32> |
| q | string Substring search term |
| level | string Enum: "TRACE" "DEBUG" "INFO" "WARN" "ERROR" |
| from | integer <int64> Lower bound timestamp (unix millis) |
| to | integer <int64> Upper bound timestamp (unix millis) |
| limit | integer <= 1000 Default: 500 |
{- "success": true,
- "data": {
- "entries": [
- { }
], - "count": 0
}
}Starts a rolling restart across all brokers using the connected Pilot Agents. Runs preflight safety checks (ISR health, URP counts, connected agents, pending reassignments) before starting. Returns 409 if preflight fails or a restart is already running. Requires a valid license (management mode).
| gracefulShutdown | boolean Default: true |
| stallTimeoutSeconds | integer [ 30 .. 600 ] Default: 120 Universal stall timeout. Phases abort after this many seconds of zero progress. Clamped to [30, 600]. |
| stabilizationSeconds | integer [ 0 .. 120 ] Default: 0 Dwell time between brokers after a successful restart. Clamped to [0, 120]. |
| readinessSoakSeconds | integer [ 1 .. 60 ] Default: 10 Soak period after initial readiness before proceeding. Clamped to [1, 60]. |
{- "gracefulShutdown": true,
- "stallTimeoutSeconds": 120,
- "stabilizationSeconds": 0,
- "readinessSoakSeconds": 10
}{- "success": true,
- "data": {
- "id": "string",
- "status": "IDLE",
- "brokerOrder": [
- 0
], - "brokerStates": {
- "property1": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}, - "property2": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}
}, - "currentBrokerIdx": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "config": {
- "gracefulShutdown": true,
- "stallTimeoutSeconds": 120,
- "stabilizationSeconds": 0,
- "readinessSoakSeconds": 10
}, - "preflightResults": [
- {
- "gate": "string",
- "severity": "BLOCK",
- "passed": true,
- "message": "string",
- "details": null
}
]
}
}Returns the current rolling restart state. When agent management is disabled or
no restart has been run, returns {status: "IDLE"}.
{- "success": true,
- "data": {
- "id": "string",
- "status": "IDLE",
- "brokerOrder": [
- 0
], - "brokerStates": {
- "property1": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}, - "property2": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}
}, - "currentBrokerIdx": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "config": {
- "gracefulShutdown": true,
- "stallTimeoutSeconds": 120,
- "stabilizationSeconds": 0,
- "readinessSoakSeconds": 10
}, - "preflightResults": [
- {
- "gate": "string",
- "severity": "BLOCK",
- "passed": true,
- "message": "string",
- "details": null
}
]
}
}Cancels the currently running rolling restart. Remaining brokers are marked as skipped. If a broker was stopped when cancelled, a best-effort start command is sent. Requires a valid license (management mode).
{- "success": true,
- "data": {
- "id": "string",
- "status": "IDLE",
- "brokerOrder": [
- 0
], - "brokerStates": {
- "property1": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}, - "property2": {
- "brokerId": 0,
- "rack": "string",
- "phase": "PENDING",
- "phaseStartedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "drainDurationMs": 0,
- "stopDurationMs": 0,
- "startDurationMs": 0,
- "isrWaitDurationMs": 0,
- "restoreDurationMs": 0,
- "drainProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}, - "isrCatchupProgress": {
- "total": 0,
- "inSync": 0
}, - "restoreProgress": {
- "total": 0,
- "completed": 0,
- "remaining": 0
}
}
}, - "currentBrokerIdx": 0,
- "startedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "error": "string",
- "config": {
- "gracefulShutdown": true,
- "stallTimeoutSeconds": 120,
- "stabilizationSeconds": 0,
- "readinessSoakSeconds": 10
}, - "preflightResults": [
- {
- "gate": "string",
- "severity": "BLOCK",
- "passed": true,
- "message": "string",
- "details": null
}
]
}
}Runs all preflight safety gates (ISR, URPs, connected agents, pending reassignments, controller location) without starting a restart. Returns the individual gate results, the computed broker order, and whether the restart can proceed.
{- "success": true,
- "data": {
- "gates": [
- {
- "gate": "string",
- "severity": "BLOCK",
- "passed": true,
- "message": "string",
- "details": null
}
], - "brokerOrder": [
- 0
], - "canProceed": true
}
}{- "success": true,
- "status": "healthy",
- "version": "0.10.0",
- "service": "pilot",
- "go_version": "go1.23.0",
- "build_time": "2025-01-04T12:00:00Z",
- "git_commit": "abc123def"
}Returns the current state of all three self-healing loops (activity, critical, RF), including scheduling, execution status, and configuration settings.
{- "success": true,
- "data": {
- "types": {
- "activity": {
- "enabled": true,
- "running": true,
- "intervalSeconds": 0,
- "inProgress": true,
- "lastAppliedTime": "2019-08-24T14:15:22Z",
- "lastAttemptedTime": "2019-08-24T14:15:22Z",
- "nextScheduledTime": "2019-08-24T14:15:22Z",
- "executionWindow": {
- "startHour": 0,
- "endHour": 0
}
}, - "critical": {
- "enabled": true,
- "running": true,
- "intervalSeconds": 0,
- "inProgress": true,
- "lastAppliedTime": "2019-08-24T14:15:22Z",
- "lastAttemptedTime": "2019-08-24T14:15:22Z",
- "nextScheduledTime": "2019-08-24T14:15:22Z",
- "executionWindow": {
- "startHour": 0,
- "endHour": 0
}
}, - "rf": {
- "enabled": true,
- "running": true,
- "intervalSeconds": 0,
- "inProgress": true,
- "lastAppliedTime": "2019-08-24T14:15:22Z",
- "lastAttemptedTime": "2019-08-24T14:15:22Z",
- "nextScheduledTime": "2019-08-24T14:15:22Z",
- "executionWindow": {
- "startHour": 0,
- "endHour": 0
}
}
}, - "currentExecution": {
- "proposalId": "string",
- "type": "activity",
- "startTime": "2019-08-24T14:15:22Z"
}, - "settings": {
- "dryRun": true,
- "cooldownSeconds": 0,
- "maxPartitionsPerRun": 0
}
}, - "timestamp": "2019-08-24T14:15:22Z"
}{- "success": true,
- "data": {
- "brokers": [
- {
- "id": 0,
- "host": "string",
- "port": 0,
- "rack": "string",
- "available": true,
- "latencyMs": 0,
- "latencyMaxMs": 0,
- "watermarkTimeoutMs": 0,
- "watermarkTimeoutRate": 0,
- "watermarkTimedOut": true
}
], - "topics": [
- {
- "name": "string",
- "partitions": [
- {
- "id": 0,
- "leader": 0,
- "replicas": [
- 0
], - "isr": [
- 0
]
}
], - "isInternal": true
}
], - "maintenanceBrokers": {
- "property1": true,
- "property2": true
}
}
}Returns comprehensive cluster information including sampling status and detailed partition data
| summary | boolean Default: false When true, excludes per-partition details and returns only topic names and partition counts (60-80% smaller response) |
{- "success": true,
- "data": {
- "brokers": [
- {
- "id": 0,
- "host": "string",
- "port": 0,
- "rack": "string",
- "available": true,
- "latencyMs": 0,
- "latencyMaxMs": 0,
- "watermarkTimeoutMs": 0,
- "watermarkTimeoutRate": 0,
- "watermarkTimedOut": true
}
], - "topics": [
- {
- "name": "string",
- "partitions": [
- {
- "id": 0,
- "leader": 0,
- "replicas": [
- 0
], - "isr": [
- 0
]
}
], - "isInternal": true
}
], - "brokerRacks": {
- "property1": "string",
- "property2": "string"
}, - "maintenanceBrokers": {
- "property1": true,
- "property2": true
}, - "sampling": {
- "totalPartitions": 0,
- "sampledPartitions": 0,
- "samplingCoverage": 0
}
}
}Returns log directory information for all brokers in the cluster
| summary | boolean Default: false When true, returns only aggregated broker-level data without per-partition details (90%+ smaller response) |
{- "success": true,
- "data": { }
}Returns cached cluster health information including broker availability and partition health
{- "success": true,
- "data": {
- "totalBrokers": 0,
- "availableBrokers": 0,
- "unavailableBrokers": 0,
- "underReplicatedPartitions": 0,
- "offlinePartitions": 0,
- "notRackAwarePartitions": 0,
- "totalFollowerLag": 0,
- "followerLagWarning": true,
- "urpsFromOfflineBrokers": 0,
- "urpsFromFollowerLag": 0
}
}Returns aggregated follower lag (offset lag) at cluster, broker, topic, and partition levels. Data is derived from the DescribeLogDirs API OffsetLag field, refreshed every ~10 seconds. Also classifies under-replicated partitions by cause (offline broker vs follower lag).
| topic | string Filter to a specific topic (includes per-partition detail) |
| broker | integer Filter to a specific broker |
| summary | boolean Default: false When true, omits per-partition details from topics (smaller response) |
{- "success": true,
- "data": {
- "totalLag": 0,
- "maxLag": 0,
- "maxLagTopic": "string",
- "maxLagPartition": 0,
- "maxLagBroker": 0,
- "partitionsWithLag": 0,
- "totalFollowerReplicas": 0,
- "urpsFromOfflineBrokers": 0,
- "urpsFromFollowerLag": 0,
- "brokers": [
- {
- "brokerId": 0,
- "totalLag": 0,
- "maxLag": 0,
- "avgLag": 0,
- "followerCount": 0,
- "partitionsWithLag": 0
}
], - "topics": [
- {
- "topic": "string",
- "totalLag": 0,
- "maxLag": 0,
- "avgLag": 0,
- "partitionsWithLag": 0,
- "partitions": [
- {
- "partition": 0,
- "leader": 0,
- "maxLag": 0,
- "replicas": [
- {
- "brokerId": 0,
- "offsetLag": 0,
- "isLeader": true
}
]
}
]
}
]
}
}Returns real-time partition activity data including sampling statistics and rates
| minimal | boolean Default: false When true, excludes detailed fields (messageCount, avgMessageSize, samplingStatus, healthStatus, watermarks etc.) returning only core partition metadata and rates (70-80% smaller response) |
| fields | string Example: fields=topic,partition,leader,replicas,isr,messageRate,byteRate,minISR Comma-separated list of fields to include per partition (e.g. "topic,partition,leader,replicas,isr,messageRate,byteRate"). Only specified fields are returned. Applies after minimal/full mode field population. |
{- "success": true,
- "data": {
- "partitionActivity": [
- {
- "topic": "string",
- "partition": 0,
- "leader": 0,
- "replicas": [
- 0
], - "isr": [
- 0
], - "messageCount": 0,
- "totalMessages": 0,
- "byteCount": 0,
- "totalSize": 0,
- "activityScore": 0,
- "messageRate": 0,
- "byteRate": 0,
- "samplingStatus": "sampled",
- "healthStatus": "healthy",
- "isInternal": true,
- "lastSampled": "2019-08-24T14:15:22Z",
- "lastUpdated": "2019-08-24T14:15:22Z",
- "hasSamples": true,
- "highWatermark": 0,
- "lowWatermark": 0
}
], - "sampledPartitions": 0,
- "activePartitions": 0,
- "totalMessages": 0,
- "totalBytes": 0,
- "messagesPerSec": 0,
- "bytesPerSec": 0,
- "clusterTotalPartitions": 0,
- "clusterTotalReplicaPartitions": 0,
- "clusterTotalTopics": 0,
- "samplingCoverage": 0,
- "lastSampleTime": "2019-08-24T14:15:22Z",
- "lastMetadataUpdate": "2019-08-24T14:15:22Z"
}
}Redistributes all partitions of a topic using the specified strategy
| topic required | string Name of the topic to redistribute |
| strategy required | string Enum: "ROUND_ROBIN" "RANDOM" "BALANCED" "RACK_AWARE" Redistribution strategy to use |
| excludedBrokers | Array of integers <int32> [ items <int32 > ] Broker IDs to exclude from redistribution |
{- "strategy": "BALANCED",
- "excludedBrokers": [
- 3,
- 4
]
}{- "success": true,
- "message": "string",
- "reassignmentId": "string"
}Redistributes a single partition to different brokers
| topic required | string Name of the topic |
| partition required | integer <int32> Partition number to redistribute |
| targetBrokers required | Array of integers <int32> [ items <int32 > ] Target broker IDs for the partition |
{- "targetBrokers": [
- 1,
- 2,
- 3
]
}{- "success": true,
- "message": "string",
- "reassignmentId": "string"
}Reassigns multiple partitions in a single operation
| topic required | string Name of the topic |
| description | string Optional description for the bulk operation |
required | Array of objects (RedistributePartitionRequest) non-empty List of partition redistribution requests |
{- "description": "Rebalancing user-events topic for better distribution",
- "partitions": [
- {
- "partition": 0,
- "replicas": [
- 1,
- 2,
- 3
], - "preview": false
}, - {
- "partition": 1,
- "replicas": [
- 2,
- 3,
- 4
], - "preview": false
}
]
}{- "success": true,
- "message": "string",
- "reassignmentId": "string"
}Marks a broker for maintenance mode and redistributes its partitions to other brokers
| brokerId required | integer <int32> ID of the broker to put in maintenance mode |
| strategy required | string Enum: "ROUND_ROBIN" "RANDOM" "BALANCED" "RACK_AWARE" Redistribution strategy to use for evacuating partitions |
| preserveLeaders | boolean Default: true Whether to preserve current leaders when possible |
| preview | boolean Default: false If true, only return a preview of changes without executing them |
| force | boolean Default: false Allow maintenance even if it causes under-replicated partitions |
| targetBrokers | Array of integers Optional list of specific brokers to move partitions to. If not provided, partitions will be distributed across all available brokers. |
{- "strategy": "RACK_AWARE",
- "preserveLeaders": true,
- "preview": false,
- "force": false,
- "targetBrokers": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12
]
}{- "success": true,
- "message": "string"
}Moves replicas stored in source log directories to target log directories on the specified broker
| brokerId required | integer ID of the broker to move log directories on |
| strategy | string Default: "BALANCE_ALL" Enum: "BALANCE_ALL" "BALANCE_SELECTED" Move strategy. Both strategies use the same two-pass balancing algorithm (disk size first, then partition count). BALANCE_ALL operates on all log dirs. BALANCE_SELECTED operates on the specified source + target dirs only. |
| sourceLogDirs | Array of strings Log directory paths to move replicas from (required for BALANCE_SELECTED) |
| targetLogDirs | Array of strings Log directory paths to move replicas to (required for BALANCE_SELECTED) |
{- "strategy": "BALANCE_ALL",
- "sourceLogDirs": [
- "/var/lib/kafka/data-1"
], - "targetLogDirs": [
- "/var/lib/kafka/data-2"
]
}{- "success": true,
- "brokerId": 0,
- "totalPartitions": 0,
- "movedPartitions": 0,
- "failedPartitions": 0,
- "errors": [
- {
- "topic": "string",
- "partition": 0,
- "errorCode": 0,
- "error": "string"
}
]
}Updates the configuration for a specific topic
| topic required | string Name of the topic |
required | object Configuration key-value pairs to update |
{- "configs": {
- "retention.ms": "604800000",
- "max.message.bytes": "1048576",
- "cleanup.policy": "delete"
}
}{- "success": true,
- "message": "string"
}Updates configurations for multiple topics in a single operation
required | Array of objects |
{- "topics": [
- {
- "name": "user-events",
- "configs": {
- "retention.ms": "604800000",
- "cleanup.policy": "delete"
}
}, - {
- "name": "product-updates",
- "configs": {
- "max.message.bytes": "2097152",
- "compression.type": "gzip"
}
}
]
}{- "success": true,
- "data": {
- "successfulTopics": 0,
- "failedTopics": 0
}
}Searches topics based on configuration criteria
required | Array of objects |
{- "criteria": [
- {
- "key": "retention.ms",
- "operator": "gt",
- "value": "86400000"
}, - {
- "key": "cleanup.policy",
- "operator": "in",
- "values": [
- "delete",
- "compact"
]
}
]
}{- "success": true,
- "topics": [
- {
- "name": "string",
- "configs": {
- "property1": "string",
- "property2": "string"
}
}
], - "totalMatches": 0
}List configured client quota entities, including defaults.
| entityType | string Enum: "default" "default-user" "default-client-id" "default-user-client-id" "user" "user-default-client-id" "client-id" "user-client-id" Filter by entity scope |
| user | string User principal to filter by |
| clientId | string Client ID to filter by |
| includeEffective | boolean Include effective quotas for the provided user/clientId pair |
{- "success": true,
- "data": {
- "items": [
- {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
], - "total": 0,
- "effective": {
- "effective": {
- "property1": 0,
- "property2": 0
}, - "resolutionOrder": [
- "user-client-id"
], - "configuredEntities": [
- {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
]
}
}
}Resolve the effective quotas for a user and client-id pair.
| user | string |
| clientId | string |
{- "user": "string",
- "clientId": "string"
}{- "success": true,
- "data": {
- "effective": {
- "property1": 0,
- "property2": 0
}, - "resolutionOrder": [
- "user-client-id"
], - "configuredEntities": [
- {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
]
}
}Correlates configured client quotas with observed throughput to detect potential bottlenecks.
Consumer analysis (high confidence): Compares each consumer group member's actual consumption
byte rate against their resolved consumer_byte_rate quota. Flags as bottleneck when utilization >= 80%.
Producer analysis (medium/low confidence): Heuristically compares topic production byte rates
against configured producer_byte_rate quotas. Since Pilot uses metadata-only monitoring, it cannot
determine which specific producer writes to which topic. Named client-id entities receive "medium"
confidence; default entities receive "low" confidence.
Results are cached for 30 seconds and automatically refreshed after each consumer group collection cycle.
| minUtilization | number Default: 0 Only return entries with utilization percentage at or above this value |
| direction | string Enum: "consume" "produce" Filter by quota direction |
| bottlenecksOnly | boolean Default: false Only return entries flagged as bottlenecks or at-risk |
| search | string Case-insensitive substring search across groupId, clientId, topics (consumers) and user, clientId, entityType (producers) |
| sortBy | string Default: "utilization" Field to sort results by.
Consumer table: |
| sortDir | string Default: "desc" Enum: "asc" "desc" Sort direction |
{- "success": true,
- "data": {
- "analyzedAt": "2019-08-24T14:15:22Z",
- "summary": {
- "quotaEntitiesTotal": 0,
- "consumerGroupsAnalyzed": 0,
- "consumerBottlenecks": 0,
- "producerRisks": 0,
- "consumerBottleneckThreshold": 0,
- "producerRiskThreshold": 0
}, - "bottlenecks": [
- {
- "direction": "consume",
- "entityDescription": "string",
- "utilizationPercent": 0,
- "quotaByteRate": 0,
- "actualByteRate": 0,
- "confidence": "high",
- "groupId": "string"
}
], - "consumerAnalyses": [
- {
- "groupId": "string",
- "clientId": "string",
- "topics": [
- "string"
], - "consumeByteRate": 0,
- "consumeMsgRate": 0,
- "quotaByteRate": 0,
- "utilizationPercent": 0,
- "isBottleneck": true,
- "quotaEntity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "confidence": "high"
}
], - "producerAnalyses": [
- {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotaByteRate": 0,
- "topicRates": [
- {
- "topic": "string",
- "byteRate": 0,
- "messageRate": 0
}
], - "maxObservedByteRate": 0,
- "riskPercent": 0,
- "isAtRisk": true,
- "confidence": "medium",
- "reasoning": "string"
}
], - "analysisErrors": [
- "string"
]
}, - "meta": {
- "totalConsumerAnalyses": 0,
- "totalProducerAnalyses": 0
}
}Create or update default quota keys.
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}Create or update default user quota keys.
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Create or update default client-id quota keys.
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Returns configured quotas for the default user and specific client-id.
| clientId required | string |
{- "success": true,
- "data": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
}Create or update quotas for the default user and client-id.
| clientId required | string |
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}Removes all quotas for the default user and client-id.
| clientId required | string |
{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Returns configured quotas for a user across all client-ids.
| user required | string |
{- "success": true,
- "data": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
}Create or update quotas for a user across all client-ids.
| user required | string |
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}Removes all quotas for a user across all client-ids.
| user required | string |
{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Create or update user quota keys.
| user required | string |
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Create or update client-id quota keys.
| clientId required | string |
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}Removes all quotas for a client-id.
| clientId required | string |
{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Returns configured quotas for a user and client-id pair.
| user required | string |
| clientId required | string |
{- "success": true,
- "data": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}
}Create or update quotas for a user and client-id pair.
| user required | string |
| clientId required | string |
object | |
| delete | Array of strings |
{- "set": {
- "property1": 0,
- "property2": 0
}, - "delete": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "before": {
- "property1": 0,
- "property2": 0
}, - "after": {
- "property1": 0,
- "property2": 0
}, - "diff": {
- "added": {
- "property1": 0,
- "property2": 0
}, - "updated": {
- "property1": {
- "old": 0,
- "new": 0
}, - "property2": {
- "old": 0,
- "new": 0
}
}, - "deleted": {
- "property1": 0,
- "property2": 0
}
}
}
}Removes all quotas for a user and client-id pair.
| user required | string |
| clientId required | string |
{- "success": true,
- "data": {
- "entity": {
- "entityType": "default",
- "user": "string",
- "clientId": "string",
- "quotas": {
- "property1": 0,
- "property2": 0
}
}, - "deletedKeys": [
- "string"
]
}
}Returns the current multi-objective, rack-aware redistribution proposal. Proposals are generated in the background on a schedule.
If a proposal is not yet available or generation is in progress, the endpoint returns HTTP 202 with success: true
and metadata describing the next generation time.
| immediate | boolean Default: false If true, triggers synchronous generation and returns fresh proposal |
{- "immediate": false
}{- "success": true,
- "proposal": {
- "id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "status": "well_balanced",
- "reason": "string",
- "metrics": {
- "current": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "projected": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "threshold": 0
}, - "safety": {
- "safeToApply": true,
- "reasons": [
- "string"
], - "inflightReassignments": 0,
- "metadataAgeMs": 0
}, - "movement": {
- "totalMoves": 0,
- "criticalMoves": 0,
- "balanceMoves": 0,
- "leaderMoves": 0,
- "replicaMoves": 0,
- "crossRackMoves": 0,
- "estimatedBytes": 0,
- "excludedPartitions": 0
}, - "throttle": {
- "rateMBps": 0,
- "totalDataToMoveBytes": 0,
- "estimatedDurationMs": 0
}, - "clusterProfile": {
- "brokerCount": 0,
- "partitionCount": 0,
- "totalDataBytes": 0,
- "sizeP50": 0,
- "sizeP90": 0
}, - "reassignments": [
- {
- "topic": "string",
- "partition": 0,
- "currentReplicas": [
- 0
], - "proposedReplicas": [
- 0
], - "currentLeader": 0,
- "proposedLeader": 0,
- "activityScore": 0,
- "reason": "string",
- "rackDistribution": {
- "property1": [
- 0
], - "property2": [
- 0
]
}, - "scoreBreakdown": {
- "activityVarianceGain": 0,
- "leaderBalanceGain": 0,
- "diskBalanceGain": 0,
- "replicaBalanceGain": 0,
- "followerBalanceGain": 0,
- "movementCostPenalty": 0,
- "deviationGain": 0,
- "totalScore": 0
}
}
], - "brokerActivityScores": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "inMaintenance": true,
- "totalActivityScore": 0,
- "partitionCount": 0,
- "leaderCount": 0,
- "highLoadPartitions": 0,
- "diskSizeBytes": 0,
- "targetDiskSize": 0,
- "diskUtilization": 0,
- "targetActivityScore": 0,
- "varianceFromTarget": 0,
- "capacityUtilization": 0
}
], - "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "structuralLimits": [
- {
- "metric": "string",
- "value": 0,
- "reason": "string",
- "remediation": "string"
}
], - "rackConstraintInsight": {
- "summary": "string",
- "racks": [
- {
- "rack": "string",
- "totalBrokers": 0,
- "activeBrokers": 0,
- "maintenanceBrokers": 0,
- "projectedReplicas": 0,
- "isConstrained": true
}
], - "brokers": [
- {
- "brokerId": 0,
- "rack": "string",
- "replicas": 0,
- "ideal": 0,
- "explanation": "string"
}
], - "candidateRejections": 0,
- "remediation": "string"
}, - "confidence": {
- "level": "high",
- "score": 1,
- "reasons": [
- "string"
], - "metricWindowPct": 0,
- "stabilizationState": "stable",
- "timeSinceReassignMs": 0
}, - "generationTrigger": "startup"
}, - "advisories": { },
- "metadata": {
- "proposalReady": true,
- "generationInProgress": true,
- "timeUntilNextGeneration": "string",
- "generationInterval": "string"
}
}{- "success": true,
- "data": [
- {
- "proposal": {
- "id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "status": "well_balanced",
- "reason": "string",
- "metrics": {
- "current": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "projected": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "threshold": 0
}, - "safety": {
- "safeToApply": true,
- "reasons": [
- "string"
], - "inflightReassignments": 0,
- "metadataAgeMs": 0
}, - "movement": {
- "totalMoves": 0,
- "criticalMoves": 0,
- "balanceMoves": 0,
- "leaderMoves": 0,
- "replicaMoves": 0,
- "crossRackMoves": 0,
- "estimatedBytes": 0,
- "excludedPartitions": 0
}, - "throttle": {
- "rateMBps": 0,
- "totalDataToMoveBytes": 0,
- "estimatedDurationMs": 0
}, - "clusterProfile": {
- "brokerCount": 0,
- "partitionCount": 0,
- "totalDataBytes": 0,
- "sizeP50": 0,
- "sizeP90": 0
}, - "reassignments": [
- {
- "topic": "string",
- "partition": 0,
- "currentReplicas": [
- 0
], - "proposedReplicas": [
- 0
], - "currentLeader": 0,
- "proposedLeader": 0,
- "activityScore": 0,
- "reason": "string",
- "rackDistribution": {
- "property1": [
- 0
], - "property2": [
- 0
]
}, - "scoreBreakdown": {
- "activityVarianceGain": 0,
- "leaderBalanceGain": 0,
- "diskBalanceGain": 0,
- "replicaBalanceGain": 0,
- "followerBalanceGain": 0,
- "movementCostPenalty": 0,
- "deviationGain": 0,
- "totalScore": 0
}
}
], - "brokerActivityScores": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "inMaintenance": true,
- "totalActivityScore": 0,
- "partitionCount": 0,
- "leaderCount": 0,
- "highLoadPartitions": 0,
- "diskSizeBytes": 0,
- "targetDiskSize": 0,
- "diskUtilization": 0,
- "targetActivityScore": 0,
- "varianceFromTarget": 0,
- "capacityUtilization": 0
}
], - "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "structuralLimits": [
- {
- "metric": "string",
- "value": 0,
- "reason": "string",
- "remediation": "string"
}
], - "rackConstraintInsight": {
- "summary": "string",
- "racks": [
- {
- "rack": "string",
- "totalBrokers": 0,
- "activeBrokers": 0,
- "maintenanceBrokers": 0,
- "projectedReplicas": 0,
- "isConstrained": true
}
], - "brokers": [
- {
- "brokerId": 0,
- "rack": "string",
- "replicas": 0,
- "ideal": 0,
- "explanation": "string"
}
], - "candidateRejections": 0,
- "remediation": "string"
}, - "confidence": {
- "level": "high",
- "score": 1,
- "reasons": [
- "string"
], - "metricWindowPct": 0,
- "stabilizationState": "stable",
- "timeSinceReassignMs": 0
}, - "generationTrigger": "startup"
}, - "status": "pending",
- "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z",
- "errorMsg": "string"
}
]
}Returns a stored proposal by ID. Special ID "current" returns the currently generated proposal if available.
| proposalId required | string |
{- "success": true,
- "data": {
- "proposal": {
- "id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "status": "well_balanced",
- "reason": "string",
- "metrics": {
- "current": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "projected": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "threshold": 0
}, - "safety": {
- "safeToApply": true,
- "reasons": [
- "string"
], - "inflightReassignments": 0,
- "metadataAgeMs": 0
}, - "movement": {
- "totalMoves": 0,
- "criticalMoves": 0,
- "balanceMoves": 0,
- "leaderMoves": 0,
- "replicaMoves": 0,
- "crossRackMoves": 0,
- "estimatedBytes": 0,
- "excludedPartitions": 0
}, - "throttle": {
- "rateMBps": 0,
- "totalDataToMoveBytes": 0,
- "estimatedDurationMs": 0
}, - "clusterProfile": {
- "brokerCount": 0,
- "partitionCount": 0,
- "totalDataBytes": 0,
- "sizeP50": 0,
- "sizeP90": 0
}, - "reassignments": [
- {
- "topic": "string",
- "partition": 0,
- "currentReplicas": [
- 0
], - "proposedReplicas": [
- 0
], - "currentLeader": 0,
- "proposedLeader": 0,
- "activityScore": 0,
- "reason": "string",
- "rackDistribution": {
- "property1": [
- 0
], - "property2": [
- 0
]
}, - "scoreBreakdown": {
- "activityVarianceGain": 0,
- "leaderBalanceGain": 0,
- "diskBalanceGain": 0,
- "replicaBalanceGain": 0,
- "followerBalanceGain": 0,
- "movementCostPenalty": 0,
- "deviationGain": 0,
- "totalScore": 0
}
}
], - "brokerActivityScores": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "inMaintenance": true,
- "totalActivityScore": 0,
- "partitionCount": 0,
- "leaderCount": 0,
- "highLoadPartitions": 0,
- "diskSizeBytes": 0,
- "targetDiskSize": 0,
- "diskUtilization": 0,
- "targetActivityScore": 0,
- "varianceFromTarget": 0,
- "capacityUtilization": 0
}
], - "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "structuralLimits": [
- {
- "metric": "string",
- "value": 0,
- "reason": "string",
- "remediation": "string"
}
], - "rackConstraintInsight": {
- "summary": "string",
- "racks": [
- {
- "rack": "string",
- "totalBrokers": 0,
- "activeBrokers": 0,
- "maintenanceBrokers": 0,
- "projectedReplicas": 0,
- "isConstrained": true
}
], - "brokers": [
- {
- "brokerId": 0,
- "rack": "string",
- "replicas": 0,
- "ideal": 0,
- "explanation": "string"
}
], - "candidateRejections": 0,
- "remediation": "string"
}, - "confidence": {
- "level": "high",
- "score": 1,
- "reasons": [
- "string"
], - "metricWindowPct": 0,
- "stabilizationState": "stable",
- "timeSinceReassignMs": 0
}, - "generationTrigger": "startup"
}, - "status": "pending",
- "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z",
- "errorMsg": "string"
}
}Applies the specified proposal. Special ID "current" applies the current proposal.
| proposalId required | string |
{- "success": true,
- "message": "string",
- "data": {
- "proposalId": "string",
- "status": "started",
- "reassignments": 0,
- "bulkId": "string"
}
}{- "success": true,
- "data": {
- "proposal": {
- "id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "status": "well_balanced",
- "reason": "string",
- "metrics": {
- "current": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "projected": {
- "leader": 0,
- "follower": 0,
- "disk": 0,
- "activity": 0,
- "producerMsgRate": 0,
- "producerByteRate": 0,
- "consumerMsgRate": 0,
- "consumerByteRate": 0
}, - "threshold": 0
}, - "safety": {
- "safeToApply": true,
- "reasons": [
- "string"
], - "inflightReassignments": 0,
- "metadataAgeMs": 0
}, - "movement": {
- "totalMoves": 0,
- "criticalMoves": 0,
- "balanceMoves": 0,
- "leaderMoves": 0,
- "replicaMoves": 0,
- "crossRackMoves": 0,
- "estimatedBytes": 0,
- "excludedPartitions": 0
}, - "throttle": {
- "rateMBps": 0,
- "totalDataToMoveBytes": 0,
- "estimatedDurationMs": 0
}, - "clusterProfile": {
- "brokerCount": 0,
- "partitionCount": 0,
- "totalDataBytes": 0,
- "sizeP50": 0,
- "sizeP90": 0
}, - "reassignments": [
- {
- "topic": "string",
- "partition": 0,
- "currentReplicas": [
- 0
], - "proposedReplicas": [
- 0
], - "currentLeader": 0,
- "proposedLeader": 0,
- "activityScore": 0,
- "reason": "string",
- "rackDistribution": {
- "property1": [
- 0
], - "property2": [
- 0
]
}, - "scoreBreakdown": {
- "activityVarianceGain": 0,
- "leaderBalanceGain": 0,
- "diskBalanceGain": 0,
- "replicaBalanceGain": 0,
- "followerBalanceGain": 0,
- "movementCostPenalty": 0,
- "deviationGain": 0,
- "totalScore": 0
}
}
], - "brokerActivityScores": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "inMaintenance": true,
- "totalActivityScore": 0,
- "partitionCount": 0,
- "leaderCount": 0,
- "highLoadPartitions": 0,
- "diskSizeBytes": 0,
- "targetDiskSize": 0,
- "diskUtilization": 0,
- "targetActivityScore": 0,
- "varianceFromTarget": 0,
- "capacityUtilization": 0
}
], - "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "structuralLimits": [
- {
- "metric": "string",
- "value": 0,
- "reason": "string",
- "remediation": "string"
}
], - "rackConstraintInsight": {
- "summary": "string",
- "racks": [
- {
- "rack": "string",
- "totalBrokers": 0,
- "activeBrokers": 0,
- "maintenanceBrokers": 0,
- "projectedReplicas": 0,
- "isConstrained": true
}
], - "brokers": [
- {
- "brokerId": 0,
- "rack": "string",
- "replicas": 0,
- "ideal": 0,
- "explanation": "string"
}
], - "candidateRejections": 0,
- "remediation": "string"
}, - "confidence": {
- "level": "high",
- "score": 1,
- "reasons": [
- "string"
], - "metricWindowPct": 0,
- "stabilizationState": "stable",
- "timeSinceReassignMs": 0
}, - "generationTrigger": "startup"
}, - "status": "ready"
}
}Triggers preferred leader election for the entire cluster or specified topics
Optional. When omitted or empty, triggers election for all non-internal topics cluster-wide.
required | Array of objects List of topics and their partitions for preferred leader election |
{- "topics": [
- {
- "topic": "user-events",
- "partitions": [
- 0,
- 1,
- 2
]
}, - {
- "topic": "system-logs",
- "partitions": [ ]
}
]
}{- "success": true,
- "message": "string"
}Triggers preferred leader election for a specific topic
| topic required | string Name of the topic |
required | Array of objects List of topics and their partitions for preferred leader election |
{- "topics": [
- {
- "topic": "user-events",
- "partitions": [
- 0,
- 1,
- 2
]
}, - {
- "topic": "system-logs",
- "partitions": [ ]
}
]
}{- "success": true,
- "message": "string"
}{- "success": true,
- "data": [
- {
- "id": "string",
- "status": "string",
- "topic": "string",
- "partition": 0,
- "fromReplicas": [
- 0
], - "toReplicas": [
- 0
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "progress": 0
}
]
}{- "success": true,
- "data": [
- {
- "id": "string",
- "status": "string",
- "topic": "string",
- "partition": 0,
- "fromReplicas": [
- 0
], - "toReplicas": [
- 0
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "progress": 0
}
]
}{- "success": true,
- "data": [
- {
- "id": "string",
- "status": "string",
- "topic": "string",
- "partition": 0,
- "fromReplicas": [
- 0
], - "toReplicas": [
- 0
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "progress": 0
}
]
}Returns current throttle and concurrency settings for active reassignments
{- "success": true,
- "data": {
- "hasActiveReassignments": true,
- "activeReassignmentCount": 42,
- "maxConcurrentMovesPerBroker": 20,
- "activeExecutors": 1,
- "throttle": {
- "leaderThrottleMBps": 0,
- "followerThrottleMBps": 0,
- "logDirThrottleMBps": 0,
- "logDirMultiplier": 1.5,
- "source": "broker",
- "isMixed": false,
- "brokersChecked": 5
}, - "config": {
- "throttleMinMBps": 50,
- "throttleMaxMBps": 1000,
- "throttleDefaultMBps": 50
}
}
}Updates throttle rate and/or max concurrent moves per broker for active reassignments
| throttleRateMBps | number <double> Throttle rate in MB/s (leader/follower) |
| maxConcurrentMovesPerBroker | integer Maximum concurrent moves per broker |
{- "throttleRateMBps": 150,
- "maxConcurrentMovesPerBroker": 20
}{- "success": true,
- "data": {
- "throttleRateMBps": 0,
- "logDirThrottleMBps": 0,
- "brokersUpdated": 5,
- "appliedToActive": true,
- "maxConcurrentMovesPerBroker": 0,
- "executorsUpdated": 0
}
}Returns detailed status of a specific reassignment
| id required | string ID of the reassignment |
{- "success": true,
- "data": {
- "id": "string",
- "status": "string",
- "topic": "string",
- "partition": 0,
- "fromReplicas": [
- 0
], - "toReplicas": [
- 0
], - "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "progress": 0
}
}Returns all consumer groups with state, member count, total lag, and velocity. Uses cached data from the background collector when available.
| state | string Filter by group state (e.g. Stable, Rebalancing, Dead, Empty) |
| search | string Filter by group name substring (case-insensitive) |
{- "success": true,
- "data": [
- {
- "groupId": "analytics-pipeline",
- "state": "Stable",
- "protocolType": "consumer",
- "protocol": "range",
- "memberCount": 3,
- "totalLag": 12500,
- "velocity": -25.3,
- "topics": [
- "orders",
- "events"
]
}
]
}Returns aggregated consumer group statistics including total groups, lag, groups by state, and consumption rates by topic and broker. Requires the background collector to be running.
{- "success": true,
- "data": {
- "totalGroups": 11,
- "totalLag": 522976,
- "groupsByState": {
- "Stable": 10,
- "Empty": 1
}, - "consumptionByTopic": {
- "property1": {
- "messagesPerSec": 1200.5,
- "bytesPerSec": 51200,
- "totalLag": 500
}, - "property2": {
- "messagesPerSec": 1200.5,
- "bytesPerSec": 51200,
- "totalLag": 500
}
}, - "consumptionByBroker": {
- "property1": {
- "messagesPerSec": 3500,
- "bytesPerSec": 150000
}, - "property2": {
- "messagesPerSec": 3500,
- "bytesPerSec": 150000
}
}
}
}Returns detailed information about a single consumer group including members, assignments, and coordinator.
| group required | string Consumer group ID |
{- "success": true,
- "data": {
- "groupId": "analytics-pipeline",
- "state": "Stable",
- "protocolType": "consumer",
- "protocol": "range",
- "members": [
- {
- "memberId": "consumer-1-abc123",
- "clientId": "consumer-1",
- "clientHost": "10.0.0.5",
- "assignments": [
- {
- "topic": "orders",
- "partitions": [
- 0,
- 1,
- 2
]
}
]
}
], - "coordinator": {
- "id": 1,
- "host": "kafka-1",
- "port": 9092
}
}
}Deletes a consumer group from the cluster. The group must be empty (no active members) before it can be deleted. Requires a valid license (management mode).
| group required | string Consumer group ID |
{- "success": true,
- "data": {
- "groupId": "analytics-pipeline",
- "previousState": "Empty"
}
}Returns per-partition lag for a consumer group, including current offsets, log end offsets, lag, velocity, and consumer ID assignments. Uses cached data from the background collector when available.
| group required | string Consumer group ID |
{- "success": true,
- "data": {
- "groupId": "analytics-pipeline",
- "totalLag": 12500,
- "velocity": -25.3,
- "topics": [
- {
- "topic": "orders",
- "totalLag": 5000,
- "velocity": -12.1,
- "partitions": [
- {
- "partition": 0,
- "currentOffset": 98500,
- "logEndOffset": 100000,
- "lag": 1500,
- "consumerId": "consumer-1",
- "velocity": -4.2
}
]
}
]
}
}Resets the committed offsets for a consumer group. The group must be empty (no active members) before offsets can be reset. Supports multiple strategies: earliest, latest, to a specific timestamp, or to specific offsets per partition. Use dryRun to preview the offset changes without applying them. Requires a valid license (management mode).
| group required | string Consumer group ID |
| strategy required | string Enum: "earliest" "latest" "timestamp" "specific" The offset reset strategy to use |
| topics | Array of strings Optional list of topics to reset offsets for. If omitted, all topics consumed by the group are reset. |
| timestamp | integer <int64> Unix timestamp in milliseconds. Required when strategy is "timestamp". |
object Map of topic-partition to target offset. Required when strategy is "specific". Keys are in the format "topic:partition". | |
| dryRun | boolean Default: false If true, return the offset changes without actually applying them |
{- "strategy": "earliest",
- "topics": [
- "orders",
- "events"
], - "timestamp": 1708099200000,
- "offsets": {
- "orders:0": 1500,
- "orders:1": 2300,
- "events:0": 800
}, - "dryRun": false
}{- "success": true,
- "data": {
- "groupId": "analytics-pipeline",
- "dryRun": false,
- "partitions": [
- {
- "topic": "orders",
- "partition": 0,
- "currentOffset": 1500,
- "newOffset": 0,
- "delta": -1500
}
]
}
}Returns all active (non-revoked) PATs for the authenticated user. Token hashes are never exposed.
{- "success": true,
- "data": [
- {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "name": "My MCP token",
- "scope": "read",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z",
- "lastUsedAt": "2019-08-24T14:15:22Z"
}
]
}Creates a new PAT for the authenticated user. The plaintext token is returned once in the response and cannot be retrieved again. Requires an OAuth session (PATs cannot create other PATs).
| name required | string Display name for the token |
| scope | string Default: "read" Enum: "read" "write" Token scope. |
| expiresInDays | integer Number of days until expiry. 0 or omitted means no expiry. |
{- "name": "My MCP token",
- "scope": "read",
- "expiresInDays": 90
}{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "scope": "string",
- "token": "pat_abc123...",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiresAt": "2019-08-24T14:15:22Z"
}
}MCP (Model Context Protocol) server endpoint for AI agent integration. Accepts MCP JSON-RPC messages and returns tool results. Supports Streamable HTTP transport.
When authentication is enabled, requires a valid Authorization: Bearer <pat_token> header.
The server exposes 67+ tools for Kafka cluster management across three categories:
Client configuration example (VS Code / GitHub Copilot):
{
"servers": {
"pilot": {
"type": "http",
"url": "https://pilot.example.com/api/v1/mcp",
"headers": {
"Authorization": "Bearer pat_your_token_here"
}
}
}
}
MCP JSON-RPC message
{ }Returns audit log events from the in-memory store with optional server-side filtering. Requires authentication. Only available when audit logging is enabled.
| action | string Filter by exact action type (e.g., |
| userId | string Filter by user ID (case-insensitive substring match) |
| after | string <date-time> Only include events after this RFC3339 timestamp (inclusive) |
| before | string <date-time> Only include events before this RFC3339 timestamp (inclusive) |
| search | string Free-text search across userId, path, action, and topic fields |
| limit | integer Default: 500 Maximum number of events to return |
| offset | integer Default: 0 Pagination offset |
{- "success": true,
- "data": {
- "items": [
- {
- "ts": "2019-08-24T14:15:22Z",
- "userId": "string",
- "provider": "string",
- "method": "string",
- "path": "string",
- "status": 0,
- "action": "string",
- "topic": "string",
- "partition": 0,
- "brokerId": 0,
- "proposalId": "string",
- "query": {
- "property1": "string",
- "property2": "string"
}, - "bodyBytes": 0,
- "clientIp": "string",
- "requestId": "string",
- "error": "string",
- "before": { },
- "after": { }
}
], - "total": 0,
- "enabled": true,
- "storeSize": 0
}
}Reverses a previously audited mutation by applying the inverse operation.
Accepts the audit event data and restores the state captured in the before field.
The revert itself is audit-logged with the action suffixed by .revert.
| action required | string The audit action to revert. Supported actions:
|
| before | object or null State before the original change (used to restore) |
| after | object or null State after the original change (used to identify what to undo) |
| topic | string Topic name (required for topic config and reassignment reverts) |
| path | string Original request path (required for quota reverts to identify the entity) |
{- "action": "string",
- "before": { },
- "after": { },
- "topic": "string",
- "path": "string"
}{- "success": true,
- "data": {
- "action": "string",
- "reverted": true
}
}Fetches messages from a Kafka topic with pagination support. Supports seeking by
offset, timestamp, or latest/earliest. Returns messages with auto-detected encoding
(JSON, text, or binary/base64). Values are truncated by default - use the single
message endpoint for full values. Use keySerde/valueSerde to force a specific
deserialization mode.
| topic required | string Topic name |
| partition | integer Default: -1 Partition to read from (-1 for all partitions) |
| offset | integer <int64> Start reading from this offset (mutually exclusive with |
| timestamp | integer <int64> Start reading from messages at/after this Unix millisecond timestamp |
| seek | string Default: "latest" Enum: "earliest" "latest" Seek to earliest or latest offset (used when neither |
| limit | integer <= 500 Default: 50 Maximum number of messages to return |
| direction | string Default: "backward" Enum: "forward" "backward" Read direction - |
| keyFilter | string Substring filter on message key |
| valueFilter | string Substring filter on decoded message value |
| maxValueSize | integer Default: 10240 Max bytes of value to return per message (truncated beyond this) |
| keySerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message keys |
| valueSerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message values |
{- "success": true,
- "data": {
- "messages": [
- {
- "partition": 0,
- "offset": 0,
- "timestamp": 0,
- "timestampType": "string",
- "key": "string",
- "keyEncoding": "string",
- "keySize": 0,
- "value": "string",
- "valueEncoding": "string",
- "valueFormat": "string",
- "valueTruncated": true,
- "valueSize": 0,
- "headers": [
- {
- "key": "string",
- "value": "string"
}
]
}
], - "meta": {
- "topic": "string",
- "partition": 0,
- "messagesReturned": 0,
- "hasMore": true,
- "nextCursor": {
- "partition": 0,
- "offset": 0
}, - "watermarks": {
- "property1": {
- "low": 0,
- "high": 0
}, - "property2": {
- "low": 0,
- "high": 0
}
}, - "compressionType": "string"
}
}
}Retrieves a single message at an exact partition and offset. Returns the full untruncated value (up to 1MB). Use this to lazy-load truncated values from the browse endpoint.
| topic required | string Topic name |
| partition required | integer <int32> Partition number |
| offset required | integer <int64> Message offset |
| maxValueSize | integer Default: 1048576 Max bytes of value to return (default 1MB) |
| keySerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message key |
| valueSerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message value |
{- "success": true,
- "data": {
- "partition": 0,
- "offset": 0,
- "timestamp": 0,
- "timestampType": "string",
- "key": "string",
- "keyEncoding": "string",
- "keySize": 0,
- "value": "string",
- "valueEncoding": "string",
- "valueFormat": "string",
- "valueTruncated": true,
- "valueSize": 0,
- "headers": [
- {
- "key": "string",
- "value": "string"
}
]
}
}Returns the low and high watermark offsets for each partition of a topic. Useful for the UI to show seek controls, progress bars, and partition selection.
| topic required | string Topic name |
{- "success": true,
- "data": {
- "topic": "string",
- "partitions": {
- "property1": {
- "low": 0,
- "high": 0,
- "messageCount": 0
}, - "property2": {
- "low": 0,
- "high": 0,
- "messageCount": 0
}
}, - "totalMessages": 0,
- "compressionType": "string"
}
}Streams new messages from a topic in real-time using Server-Sent Events (SSE).
The connection stays open and sends message events as new messages arrive.
A keepalive event is sent every 15 seconds to prevent timeouts.
Close the connection to stop tailing.
| topic required | string Topic name |
| partition | integer Default: -1 Partition to tail (-1 for all) |
| maxValueSize | integer Default: 10240 Max bytes of value to return per message |
| keySerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message keys |
| valueSerde | string Default: "auto" Enum: "auto" "string" "json" "hex" "base64" "int32" "int64" "float64" Deserialization mode for message values |
Simulates hypothetical cluster mutations (broker failures, rack failures, traffic spikes, broker additions) and returns the projected cluster state compared to the current state. This is a read-only operation that never affects the live cluster.
| brokerFailures | Array of integers List of broker IDs to mark as offline |
| rackFailures | Array of strings List of rack names to mark as offline (all brokers in rack) |
Array of objects Hypothetical new brokers to add | |
object Topic name to new replication factor | |
object Topic name to traffic multiplier (e.g. 2.0 = double traffic) |
{- "brokerFailures": [
- 0
], - "rackFailures": [
- "string"
], - "addBrokers": [
- {
- "id": 0,
- "rack": "string"
}
], - "topicRFChanges": {
- "property1": 0,
- "property2": 0
}, - "trafficMultipliers": {
- "property1": 0,
- "property2": 0
}
}{- "success": true,
- "data": {
- "scenario": {
- "brokerFailures": [
- 0
], - "rackFailures": [
- "string"
], - "addBrokers": [
- {
- "id": 0,
- "rack": "string"
}
], - "topicRFChanges": {
- "property1": 0,
- "property2": 0
}, - "trafficMultipliers": {
- "property1": 0,
- "property2": 0
}
}, - "current": {
- "totalBrokers": 0,
- "availableBrokers": 0,
- "totalPartitions": 0,
- "underReplicatedPartitions": 0,
- "offlinePartitions": 0,
- "notRackAwarePartitions": 0,
- "leaderVariance": 0,
- "diskVariance": 0,
- "producerByteVariance": 0
}, - "projected": {
- "totalBrokers": 0,
- "availableBrokers": 0,
- "totalPartitions": 0,
- "underReplicatedPartitions": 0,
- "offlinePartitions": 0,
- "notRackAwarePartitions": 0,
- "leaderVariance": 0,
- "diskVariance": 0,
- "producerByteVariance": 0
}, - "impact": {
- "newURPs": 0,
- "newOfflinePartitions": 0,
- "newRackViolations": 0,
- "brokersLost": 0,
- "brokersGained": 0,
- "partitionsAffected": 0,
- "topicsAffected": 0,
- "estimatedRecoveryBytes": 0,
- "severity": "none",
- "explanation": [
- "string"
], - "topicsProducersBlocked": 0,
- "topicsProducersDegraded": 0
}, - "brokerImpacts": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "wasAvailable": true,
- "leadersBefore": 0,
- "leadersAfter": 0,
- "replicasBefore": 0,
- "replicasAfter": 0,
- "diskBytesBefore": 0,
- "diskBytesAfter": 0,
- "producerByteRateBefore": 0,
- "producerByteRateAfter": 0
}
], - "topicImpacts": [
- {
- "topic": "string",
- "partitions": 0,
- "urpsBefore": 0,
- "urpsAfter": 0,
- "offlineBefore": 0,
- "offlineAfter": 0,
- "rackViolationsBefore": 0,
- "rackViolationsAfter": 0,
- "availableRFBefore": 0,
- "availableRFAfter": 0,
- "replicationFactor": 0,
- "minInsyncReplicas": 0,
- "producersCanWrite": true
}
], - "rebalanceProjection": {
- "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "totalMoves": 0,
- "estimatedBytes": 0,
- "proposalRounds": 0,
- "roundDetails": [
- {
- "round": 0,
- "moves": 0,
- "estimatedBytes": 0,
- "status": "string"
}
], - "status": "string"
}, - "simulationDurationMs": 0
}
}Computes the full dependency graph and failure impact for a broker, rack, or topic. Shows affected topics, consumer groups, and a simulated failure scenario. This is a read-only operation.
| entityType | string Enum: "broker" "rack" "topic" Type of entity to analyze (single-entity mode) |
| entityId | string Entity identifier - broker ID, rack name, or topic name (single-entity mode) |
| brokerFailures | Array of integers <int32> [ items <int32 > ] Broker IDs to simulate as failed (multi-failure mode) |
| rackFailures | Array of strings Rack names to simulate as failed (multi-failure mode) |
{- "entityType": "broker",
- "entityId": "string",
- "brokerFailures": [
- 0
], - "rackFailures": [
- "string"
]
}{- "success": true,
- "data": {
- "entity": {
- "type": "string",
- "id": "string",
- "rack": "string",
- "host": "string",
- "available": true,
- "brokerCount": 0,
- "partitions": 0,
- "replicationFactor": 0
}, - "affectedTopics": [
- {
- "topic": "string",
- "partitions": 0,
- "partitionsOnEntity": 0,
- "leadersOnEntity": 0,
- "producerByteRate": 0,
- "diskBytes": 0,
- "replicationFactor": 0,
- "wouldLoseAvailability": true,
- "wouldBecomeURP": true
}
], - "affectedConsumerGroups": [
- {
- "groupId": "string",
- "state": "string",
- "memberCount": 0,
- "affectedTopics": [
- "string"
], - "totalLag": 0,
- "assignedPartitionsOnEntity": 0,
- "wouldRebalance": true
}
], - "affectedBrokers": [
- {
- "brokerId": 0,
- "host": "string",
- "leaders": 0,
- "replicas": 0,
- "diskBytes": 0
}
], - "summary": {
- "totalPartitionsAffected": 0,
- "totalLeadersAffected": 0,
- "totalTopicsAffected": 0,
- "totalConsumerGroups": 0,
- "totalDiskBytes": 0,
- "totalProducerByteRate": 0,
- "urpsIfFailed": 0,
- "offlineIfFailed": 0,
- "riskLevel": "low"
}, - "failureSimulation": {
- "scenario": {
- "brokerFailures": [
- 0
], - "rackFailures": [
- "string"
], - "addBrokers": [
- {
- "id": 0,
- "rack": "string"
}
], - "topicRFChanges": {
- "property1": 0,
- "property2": 0
}, - "trafficMultipliers": {
- "property1": 0,
- "property2": 0
}
}, - "current": {
- "totalBrokers": 0,
- "availableBrokers": 0,
- "totalPartitions": 0,
- "underReplicatedPartitions": 0,
- "offlinePartitions": 0,
- "notRackAwarePartitions": 0,
- "leaderVariance": 0,
- "diskVariance": 0,
- "producerByteVariance": 0
}, - "projected": {
- "totalBrokers": 0,
- "availableBrokers": 0,
- "totalPartitions": 0,
- "underReplicatedPartitions": 0,
- "offlinePartitions": 0,
- "notRackAwarePartitions": 0,
- "leaderVariance": 0,
- "diskVariance": 0,
- "producerByteVariance": 0
}, - "impact": {
- "newURPs": 0,
- "newOfflinePartitions": 0,
- "newRackViolations": 0,
- "brokersLost": 0,
- "brokersGained": 0,
- "partitionsAffected": 0,
- "topicsAffected": 0,
- "estimatedRecoveryBytes": 0,
- "severity": "none",
- "explanation": [
- "string"
], - "topicsProducersBlocked": 0,
- "topicsProducersDegraded": 0
}, - "brokerImpacts": [
- {
- "brokerId": 0,
- "rack": "string",
- "available": true,
- "wasAvailable": true,
- "leadersBefore": 0,
- "leadersAfter": 0,
- "replicasBefore": 0,
- "replicasAfter": 0,
- "diskBytesBefore": 0,
- "diskBytesAfter": 0,
- "producerByteRateBefore": 0,
- "producerByteRateAfter": 0
}
], - "topicImpacts": [
- {
- "topic": "string",
- "partitions": 0,
- "urpsBefore": 0,
- "urpsAfter": 0,
- "offlineBefore": 0,
- "offlineAfter": 0,
- "rackViolationsBefore": 0,
- "rackViolationsAfter": 0,
- "availableRFBefore": 0,
- "availableRFAfter": 0,
- "replicationFactor": 0,
- "minInsyncReplicas": 0,
- "producersCanWrite": true
}
], - "rebalanceProjection": {
- "currentSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "projectedSnapshot": {
- "leaders": {
- "1": 120,
- "2": 120,
- "3": 120,
- "4": 120
}, - "followers": {
- "1": 180,
- "2": 180,
- "3": 180,
- "4": 180
}, - "activity": {
- "1": 7800.5,
- "2": 7901.2,
- "3": 7850.9,
- "4": 7922.4
}
}, - "totalMoves": 0,
- "estimatedBytes": 0,
- "proposalRounds": 0,
- "roundDetails": [
- {
- "round": 0,
- "moves": 0,
- "estimatedBytes": 0,
- "status": "string"
}
], - "status": "string"
}, - "simulationDurationMs": 0
}
}
}AI chat assistant for natural-language Kafka cluster management. Mutations require explicit user approval.
Creates a new conversation for the authenticated user. Each user can have up to
PILOT_CHAT_MAX_CONVERSATIONS active conversations (default 10). Oldest conversations
are evicted when the limit is reached.
| title | string Optional conversation title |
{- "title": "Topic configuration review"
}{- "success": true,
- "data": {
- "id": "conv_a1b2c3d4e5f6",
- "title": "Topic configuration review",
- "createdAt": "2019-08-24T14:15:22Z"
}
}Returns all active conversations for the authenticated user, ordered by most recently updated.
{- "success": true,
- "data": [
- {
- "id": "conv_a1b2c3d4e5f6",
- "title": "Topic configuration review",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Returns a single conversation including its full message history.
| id required | string Conversation ID |
{- "success": true,
- "data": {
- "id": "conv_a1b2c3d4e5f6",
- "title": "Topic configuration review",
- "messages": [
- {
- "role": "user",
- "content": [
- {
- "type": "text",
- "text": "string",
- "id": "string",
- "name": "string",
- "input": { },
- "tool_use_id": "string",
- "content": "string",
- "is_error": true
}
]
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Sends a user message to the AI assistant and streams the response back using Server-Sent Events. The assistant can use tools to query and manage the Kafka cluster. Read-only tools execute automatically; mutation tools require explicit approval via the approve/reject endpoints.
SSE Event Types:
text_delta - Incremental text content from the assistanttool_use - A tool is being called (includes tool name and arguments)tool_result - Tool execution completed (includes result and status)approval_required - A mutation tool needs user approval before executiondone - Response stream completeerror - An error occurred during processingThe connection stays open until the assistant finishes responding or the client disconnects.
Rate limited to PILOT_CHAT_RATE_LIMIT messages per user per minute (default 20).
| id required | string Conversation ID |
| content required | string <= 10000 characters The user's message text (max 10,000 characters) |
{- "content": "Which topics have min.insync.replicas below 2?"
}Approves a pending mutation operation that was requested by the AI assistant during a chat conversation.
The tool will be executed and the result sent back to the assistant to continue the conversation.
Approval tokens expire after PILOT_CHAT_APPROVAL_TIMEOUT (default 5 minutes).
| id required | string Conversation ID |
| toolCallId required | string Tool call ID from the |
{- "success": true,
- "message": "string"
}Rejects a pending mutation operation. The assistant will be informed of the rejection (with optional reason) and can suggest alternatives.
| id required | string Conversation ID |
| toolCallId required | string Tool call ID from the |
| reason | string Optional reason for rejection |
{- "reason": "Not during peak hours"
}{- "success": true,
- "message": "string"
}Moves all partition replicas of the topic that currently live on the specified broker to the target log directory. Replicas already on the target are skipped.
| topic required | string Topic name |
| brokerId required | integer <int32> Broker hosting the replicas to move |
| targetLogDir required | string Destination log directory on the broker |
{- "brokerId": 0,
- "targetLogDir": "/var/lib/kafka/data-2"
}{- "success": true,
- "brokerId": 0,
- "totalPartitions": 0,
- "movedPartitions": 0,
- "failedPartitions": 0,
- "errors": [
- {
- "topic": "string",
- "partition": 0,
- "errorCode": 0,
- "error": "string"
}
]
}Moves the replica of (topic, partition) on the specified broker to the target log directory.
| topic required | string Topic name |
| partition required | integer <int32> Partition index |
| brokerId required | integer <int32> Broker hosting the replica to move |
| targetLogDir required | string Destination log directory on the broker |
{- "brokerId": 0,
- "targetLogDir": "/var/lib/kafka/data-2"
}{- "success": true,
- "brokerId": 0,
- "totalPartitions": 0,
- "movedPartitions": 0,
- "failedPartitions": 0,
- "errors": [
- {
- "topic": "string",
- "partition": 0,
- "errorCode": 0,
- "error": "string"
}
]
}Returns all ACL bindings in the cluster. Supports optional query parameters to filter results by resource type, resource name, pattern type, principal, host, operation, or permission type.
| resourceType | string Enum: "Topic" "Group" "Cluster" "TransactionalID" "DelegationToken" Filter by resource type |
| resourceName | string Filter by resource name |
| patternType | string Enum: "Literal" "Prefixed" "Any" "Match" Filter by pattern type |
| principal | string Filter by principal (e.g. "User:alice") |
| host | string Filter by host |
| operation | string Enum: "All" "Read" "Write" "Create" "Delete" "Alter" "Describe" "ClusterAction" "DescribeConfigs" "AlterConfigs" "IdempotentWrite" "Any" Filter by operation |
| permissionType | string Enum: "Allow" "Deny" "Any" Filter by permission type |
{- "success": true,
- "data": {
- "items": [
- {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
], - "total": 0
}
}Creates one or more ACL bindings. Requires a valid license. For Cluster resource types, the resourceName defaults to "kafka-cluster" if omitted.
required | Array of objects (AclBinding) non-empty List of ACL bindings to create |
{- "bindings": [
- {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
]
}{- "success": true,
- "data": {
- "created": [
- {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
], - "count": 0
}
}Replaces an existing ACL binding with a new one. The old binding is deleted and the new binding is created atomically. If creation of the new binding fails, the old binding is restored. Requires a valid license.
required | object (AclBinding) |
required | object (AclBinding) |
{- "old": {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}, - "new": {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
}{- "success": true,
- "data": {
- "old": {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}, - "new": {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
}
}Deletes ACL bindings matching the provided filter criteria. At least one filter field is required to prevent accidental deletion of all ACLs. Requires a valid license.
| resourceType | string (AclResourceType) Enum: "Topic" "Group" "Cluster" "TransactionalID" "DelegationToken" Kafka resource type for the ACL binding |
| resourceName | string Filter by resource name |
| patternType | string (AclPatternType) Enum: "Literal" "Prefixed" "Any" "Match" Resource name pattern type |
| principal | string Filter by principal |
| host | string Filter by host |
| operation | string (AclOperation) Enum: "All" "Read" "Write" "Create" "Delete" "Alter" "Describe" "ClusterAction" "DescribeConfigs" "AlterConfigs" "IdempotentWrite" "Any" Kafka ACL operation |
| permission | string (AclPermissionType) Enum: "Allow" "Deny" "Any" ACL permission type |
{- "resourceType": "Topic",
- "resourceName": "string",
- "patternType": "Literal",
- "principal": "string",
- "host": "string",
- "operation": "All",
- "permission": "Allow"
}{- "success": true,
- "data": {
- "deleted": [
- {
- "resourceType": "Topic",
- "resourceName": "my-topic",
- "patternType": "Literal",
- "principal": "User:alice",
- "host": "*",
- "operation": "All",
- "permission": "Allow"
}
], - "count": 0
}
}