List Jobs
Lists jobs newest first, optionally filtered by environment_id and state (UNSPECIFIED = any). page_size 0 means 100 and is clamped to 1000; page_token is the opaque offset from next_page_token. An empty namespace lists every namespace and is refused (InvalidArgument) for anyone but a platform admin.
Access: any role in the namespace (viewer, operator or admin — via Xeonr team membership or a namespace API key), or a platform admin.
Authorization
BearerAuth A namespace-scoped API key (cpk_…) for machines, or a Xeonr Auth OIDC
token for humans. The key's namespace and role are pinned server-side.
In: header
Header Parameters
Define the version of the Connect protocol
Define the timeout, in ms
Request Body
application/json
Required for non-admin callers; empty lists every namespace (admin only).
length <= 64optional filter
length <= 64optional filter (UNSPECIFIED = any) enum.defined_only = true
"JOB_STATE_UNSPECIFIED" | "JOB_STATE_QUEUED" | "JOB_STATE_RUNNING" | "JOB_STATE_SUCCEEDED" | "JOB_STATE_FAILED" | "JOB_STATE_CANCELLED"validate:skip 0 means 100; larger values are clamped to 1000, not rejected
Response Body
application/json
application/json
curl -X POST "https://containers.xeonr.io/containers.api.v1.JobService/ListJobs" \ -H "Connect-Protocol-Version: 1" \ -H "Connect-Timeout-Ms: 1000" \ -H "Content-Type: application/json" \ -d '{}'{
"jobs": [
{
"jobId": "string",
"namespace": "string",
"environmentId": "string",
"state": "JOB_STATE_UNSPECIFIED",
"poolLane": "string",
"createdAtUnix": "string",
"finishedAtUnix": "string",
"result": {
"jobId": "string",
"exitCode": 0,
"termination": "TERMINATION_UNSPECIFIED",
"stdout": "string",
"outputs": [
{
"name": "string",
"sha256": "string",
"size": "string",
"mime": "string",
"content": null
}
],
"kv": {
"property1": {},
"property2": {}
},
"usage": {
"cpuMillisUsed": "string",
"memoryPeakMb": "string",
"wallMs": "string"
},
"stderr": "string"
},
"spec": {
"argv": [
"string"
],
"egress": {
"egressPolicyId": "string"
},
"resources": {
"cpuMillis": 0,
"memoryMb": 0,
"ephemeralMb": 0,
"pids": 0
},
"timeoutSec": 0,
"workspaceId": "string",
"stdin": "string",
"inputs": [
{
"path": "string",
"content": null
}
],
"outputs": [
{
"name": "string",
"kind": "KIND_UNSPECIFIED",
"path": "string",
"maxBytes": "string",
"required": true,
"mimeHint": "string"
}
],
"callback": {
"endpoint": "string",
"token": "string"
},
"label": "string",
"env": {
"property1": "string",
"property2": "string"
},
"adapter": {
"environmentId": "string",
"env": {
"property1": "string",
"property2": "string"
},
"cpuMillis": 0,
"memoryMb": 0
},
"workspaces": [
{
"snapshotId": "string",
"mountPath": "string",
"readOnly": true,
"workspaceId": "string",
"ephemeral": true,
"ephemeralFromSnapshotId": "string",
"volume": {
"sizeMb": "string",
"seedSnapshotId": "string",
"cacheKey": "string"
}
}
],
"workingDir": "string"
},
"label": "string"
}
],
"nextPageToken": "string",
"total": 0
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}Get Job POST
Returns a job record, including its persisted spec and, once terminal, its result (captured stdout/stderr are capped at 256 KiB each). **Access:** any role in the namespace (viewer, operator or admin — via Xeonr team membership or a namespace API key), or a platform admin.
Run Job POST
Runs a batch job to completion and streams its progress: an `accepted` event carrying the job id first, then state changes, log chunks and a final `result`. `environment_id` must name an environment in the same namespace. Empty `argv` falls back to the environment's default argv, then the image entrypoint. `timeout_sec` 0 means 300. A `pool_lane` with a configured pool and a pool-compatible shape (argv set; no workspace, inputs, outputs, adapter or secrets) is served from a warm pod; otherwise the job cold-starts. A repeated `idempotency_key` within the namespace re-attaches to the original job instead of starting a new one. `secrets` require an `adapter`; `inputs`/`outputs` require a writable mount (one is synthesised at /work when no mounts are declared); at most 8 `workspaces`; env names in the CP_ prefix or set by the platform are rejected. The job keeps running if the stream is dropped. **Access:** operator or admin role in the namespace (via Xeonr team role or a namespace API key), or a platform admin.