Skip to main content

api.GetJobVersionResponse

version object
idstring

ID is the unique identifier of the job.

spec object

Spec contains the job specification at this version.

config object

Config contains type-specific configuration for the workload. The structure depends on the job type (e.g., pipeline config, query parameters).

property name*any

Config contains type-specific configuration for the workload. The structure depends on the job type (e.g., pipeline config, query parameters).

descriptionstring

Description is an optional human-readable description of the job.

labels object

Labels is used to associate arbitrary labels with this job. Labels can be used for filtering and selection.

property name*string
meta object

Meta is used to associate arbitrary metadata with this job. Keys with the prefix "expanso.io/" are reserved for system use.

property name*string
namestring

Name is the logical name of the job used to refer to it. Submitting a job with the same name as an existing job will result in an update to the existing job.

namespacestring

Namespace is the namespace this job is running in.

priorityinteger

Priority defines the scheduling priority of this job. Higher values indicate higher priority.

restart_policystring

RestartPolicy controls restart behavior when executions exit.

  • "on-failure" (default): Restart on non-zero exit, complete on success
  • "always": Restart on any exit (current daemon behavior)
  • "never": No restart, one-shot execution
rollout object

Rollout defines how to rollout the job

auto_promoteboolean

Auto-promote canary rollouts

canary_countinteger

Canary-specific settings

canary_percentinteger

Percentage of canary nodes

health_check object

HealthCheck defines health check configuration (required for rolling/canary, ignored for immediate)

deadlineinteger<int64>

Deadline is the maximum time to wait for an execution to become healthy (required)

Possible values: [-9223372036854776000, 9223372036854776000, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000, 10000000000]

failure_thresholdinteger

FailureThreshold is the number of consecutive unhealthy intervals before the execution is considered unhealthy (optional, default: 3)

intervalinteger<int64>

Interval is the duration of each health evaluation window (optional, default: 10s) Error rate is calculated per interval, not lifetime.

Possible values: [-9223372036854776000, 9223372036854776000, 1, 1000, 1000000, 1000000000, 60000000000, 3600000000000, 10000000000]

max_error_ratenumber

MaxErrorRate is the maximum error rate allowed during health checks (optional, default: 0.10) Pointer because we need to distinguish nil (use default) from explicit 0.0

success_thresholdinteger

SuccessThreshold is the number of consecutive healthy intervals before the execution is considered healthy (optional, default: 2)

max_failed_nodesinteger

MaxFailedNodes is the maximum number of failed nodes before stopping (optional, default: 10)

max_failed_nodes_percentnumber

MaxFailedNodesPercent is the maximum percentage of failed nodes before stopping (optional, default: 10.0)

max_parallelinteger

MaxParallel is the maximum percentage of nodes to update in parallel (0-100) For immediate strategy: this value is ignored (all nodes updated simultaneously) For rolling/canary: controls wave size as percentage of total nodes (default: 10 if not specified) Examples: 10 = 10% of nodes per wave, 50 = 50% of nodes per wave, 100 = all nodes at once

no_auto_rollbackboolean

NoAutoRollback disables automatic rollback on rollout failure (default: false = auto-rollback enabled)

strategytypes.RolloutStrategyType (string)

Strategy: immediate|rolling|canary

Possible values: [immediate, rolling, canary]

selector object

Selector defines which nodes to run the job on

match_expressionsstring[]

MatchExpressions selects nodes using label selector expression strings. Each expression is evaluated independently and all must match (AND logic). Supported syntax:

  • Equality: "key=value" or "key==value"
  • Inequality: "key!=value"
  • Set inclusion: "key in (value1,value2,...)"
  • Set exclusion: "key notin (value1,value2,...)"
  • Existence: "key"
  • Non-existence: "!key" Examples:
  • "region=us-east"
  • "tier in (premium,standard)"
  • "environment!=prod"
  • "gpu"
  • "!debug"
match_idsstring[]

MatchIDs selects specific nodes by their IDs. If specified, the job will only run on nodes whose ID is in this list.

match_labels object

MatchLabels selects nodes with labels that exactly match all specified key-value pairs. All labels must match (AND logic). Example: {"region": "us-east", "tier": "compute"}

property name*string
timeouts object

Timeouts defines timeout configurations for the job

execution_timeoutinteger

ExecutionTimeout is the maximum amount of time a task is allowed to run in seconds. Zero means no timeout, such as for a daemon task.

queue_timeoutinteger

QueueTimeout is the maximum amount of time a task is allowed to wait in the orchestrator queue in seconds before being scheduled. Zero means no timeout.

total_timeoutinteger

TotalTimeout is the maximum amount of time a task is allowed to complete in seconds. This includes the time spent in the queue, the time spent executing and the time spent retrying. Zero means no timeout.

typestring

Type specifies what kind of workload this job runs (e.g. "pipeline", "query", "update", "config"). The scheduling behavior is derived from this type.

status object

Status contains the status snapshot at this version. Status.CreatedAt represents when this version was created (not when the job was first created).

created_atstring

CreatedAt is the time when the job was created

revisioninteger

Revision is a per-job monotonically increasing revision number that is incremented on each update to the job's state or specification. This includes both user-initiated changes (which also increment Version) and system-initiated changes (status updates, state transitions, etc.). Revision >= Version always.

rollout object

Rollout contains the runtime state of the active rollout. Empty (zero State) when no rollout is in progress.

canary_nodesstring[]

Canary tracking (runtime state)

canary_promotedboolean
completed_atstring

When rollout finished (zero if in progress)

current_waveinteger

Progress tracking

failed_nodesinteger

Nodes that failed

rollback_to_versioninteger

RollbackToVersion is the stable version to rollback to when a rollout halts. For Create: 0 (no previous version - cannot rollback) For Update: last version with completed rollout (stable version to fallback to) For Rollback: version being rolled back from

started_atstring

Timestamps

total_nodesinteger

Target nodes for this rollout

total_wavesinteger
typetypes.RolloutType (string)

Type indicates what triggered this rollout

Possible values: [create, update, restart, rollback]

updated_nodesinteger

Nodes successfully updated

state object

State represents the current state of the job

details object

Details is a map of additional details about the state.

property name*string
messagestring

Message is a human readable message describing the state.

state_typetypes.JobStateType (string)

StateType is the current state of the object.

Possible values: [``, pending, queued, deploying, running, rollout_paused, rollout_failed, degraded, completed, failed, stopped, deleted]

updated_atstring

UpdatedAt is the time when the job was last updated

versioninteger

Version is a per-job monotonically increasing version number that is incremented on each job specification update. Version tracks changes to the job specification (user-defined fields like runtime, deployment settings, etc.). Compare with Revision which tracks ANY change including status updates.

versioninteger

Version is the version number of this job version.

api.GetJobVersionResponse
{
"version": {
"id": "string",
"spec": {
"config": {
"input": {
"file": {
"paths": [
"/var/log/app/*.log"
]
}
},
"output": {
"stdout": {}
},
"pipeline": {
"processors": [
{
"mapping": "root = this\nroot.processed_at = now()\n"
}
]
}
},
"description": "Processes application logs from edge nodes",
"labels": {
"env": "production",
"region": "us-west",
"version": "v1.2.0"
},
"name": "log-processor",
"namespace": "production",
"priority": 50,
"selector": {
"match_labels": {
"env": "production",
"role": "app-server"
}
},
"type": "pipeline"
},
"status": {
"created_at": "string",
"revision": 0,
"rollout": {
"canary_nodes": [
"string"
],
"canary_promoted": true,
"completed_at": "string",
"current_wave": 0,
"failed_nodes": 0,
"rollback_to_version": 0,
"started_at": "string",
"total_nodes": 0,
"total_waves": 0,
"type": "create",
"updated_nodes": 0
},
"state": {
"details": {},
"message": "string",
"state_type": ""
},
"updated_at": "string",
"version": 0
},
"version": 0
}
}