Pipeline dispatches¶
Run pipelines, track and cancel runs, and inspect each task's status, logs, and result.
List draft pipeline dispatches by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches
List the runs (dispatches) of a draft pipeline.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| offset | query | integer | false | none |
| limit | query | integer | false | none |
Example responses¶
200 Response
{
"properties": {
"count": {
"readOnly": true,
"title": "Count",
"type": "integer"
},
"data": {
"items": {
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
},
"title": "Data",
"type": "array"
},
"next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next"
},
"previous": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous"
},
"totalCount": {
"title": "Totalcount",
"type": "integer"
}
},
"required": [
"data",
"totalCount",
"count"
],
"title": "DataPage[PipelineDispatchResponse]",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | DataPage_PipelineDispatchResponse_ |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Run draft pipeline by pipeline_ ID¶
Operation path: POST /api/v2/pipelines/{pipeline_id}/dispatches
Run a draft pipeline with an input payload. Returns the new dispatch.
Body parameter¶
{
"description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
"properties": {
"imageId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Imageid",
"type": "string"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
}
},
"required": [
"inputId",
"imageId"
],
"title": "PipelineDispatchCreateRequest",
"type": "object"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| body | body | PipelineDispatchCreateRequest | true | none |
Example responses¶
202 Response
{
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 202 | Accepted | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
cancel draft pipeline dispatch by pipeline_ ID¶
Operation path: DELETE /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}
Cancel a run (dispatch) of a draft pipeline.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
422 Response
{
"properties": {
"detail": {
"items": {
"properties": {
"ctx": {
"title": "Context",
"type": "object"
},
"input": {
"title": "Input"
},
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
},
"title": "Detail",
"type": "array"
}
},
"title": "HTTPValidationError",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Successful Response | None |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get draft pipeline dispatch by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}
Retrieve a run (dispatch) of a draft pipeline.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
200 Response
{
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get draft pipeline dispatch status by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/status
Retrieve the current status of a draft pipeline run. Use this endpoint to poll for completion.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
200 Response
{
"description": "Lightweight status polling response.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
}
},
"required": [
"id",
"status"
],
"title": "PipelineDispatchStatusResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | PipelineDispatchStatusResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
List dispatch tasks by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks
List the tasks of a pipeline run (dispatch) and their status.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
200 Response
{
"items": {
"description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
"properties": {
"completedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Completedat"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"graphNodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Graphnodeid"
},
"name": {
"title": "Name",
"type": "string"
},
"nodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Nodeid"
},
"resourceBundleId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resourcebundleid"
},
"startedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Startedat"
},
"status": {
"title": "Status",
"type": "string"
},
"taskId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Taskid"
}
},
"required": [
"name",
"status"
],
"title": "TaskExecutionResponse",
"type": "object"
},
"title": "Response Listpipelinedispatchtasks",
"type": "array"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | Inline |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Response Schema¶
Status Code 200
Response Listpipelinedispatchtasks
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| Response Listpipelinedispatchtasks | [TaskExecutionResponse] | false | [Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. 1, 2, 3. use this as the {task_id} path parameter for per-task endpoints. none for internal utility nodes with no user @task backing. node_id: per-dispatch execution node id. pass as ?nodeid= to per-task endpoints to address a specific invocation when the same @task function runs more than once in a single dispatch (fan-out). each invocation has a distinct nodeid even when they share the same taskid. none for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node id (from get .../graph) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. none when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the @task function name. status: current taskexecutionstatus value. started_at: when execution began, or none if not yet started. completed_at: when execution finished, or none if still running. error_detail: failure message when status == failed. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). none only for legacy rows.] |
|
| » TaskExecutionResponse | TaskExecutionResponse | false | Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. 1, 2, 3. use this as the {task_id} path parameter for per-task endpoints. none for internal utility nodes with no user @task backing. node_id: per-dispatch execution node id. pass as ?nodeid= to per-task endpoints to address a specific invocation when the same @task function runs more than once in a single dispatch (fan-out). each invocation has a distinct nodeid even when they share the same taskid. none for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node id (from get .../graph) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. none when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the @task function name. status: current taskexecutionstatus value. started_at: when execution began, or none if not yet started. completed_at: when execution finished, or none if still running. error_detail: failure message when status == failed. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). none only for legacy rows. |
|
| »» completedAt | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | string(date-time) | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» errorDetail | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» graphNodeId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» name | string | true | none | |
| »» nodeId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» resourceBundleId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» startedAt | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | string(date-time) | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» status | string | true | none | |
| »» taskId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »»» anonymous | null | false | none |
Get dispatch task by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}
Retrieve a task of a pipeline run (dispatch), including its status.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
Example responses¶
200 Response
{
"description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
"properties": {
"completedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Completedat"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"graphNodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Graphnodeid"
},
"name": {
"title": "Name",
"type": "string"
},
"nodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Nodeid"
},
"resourceBundleId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resourcebundleid"
},
"startedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Startedat"
},
"status": {
"title": "Status",
"type": "string"
},
"taskId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Taskid"
}
},
"required": [
"name",
"status"
],
"title": "TaskExecutionResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | TaskExecutionResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get dispatch task logs by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/logs
Retrieve the live container logs of a task. After the task finishes, use the log stream endpoint.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
| tail_lines | query | any | false | Optional cap on the number of trailing log lines returned. |
| verbosity | query | string | false | 'user' (default): hide the task runner's own structured JSON log lines, showing only the task function's own output (plus any uncaught-exception traceback). 'all': return every line, unfiltered — the behavior every caller got before this parameter existed. |
Enumerated Values¶
| Parameter | Value |
|---|---|
| verbosity | [user, all] |
Example responses¶
200 Response
{
"description": "Response schema for per-task pod logs. populated only when standalone dispatch is on — under the legacy covalent path, pipelines-api does not own the pod and the endpoint returns an empty string. attributes: logs: pod stdout+stderr as a utf-8 decoded string, subject to the ``verbosity`` query param (see ``specs/task_log_verbosity_filter.md``): by default the task runner's own structured JSON log lines are removed, leaving only the task function's own output (plus any uncaught-exception traceback, which is always kept). empty when the pod has been gc'd, hasn't started yet, or when the dispatch predates standalone mode. filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
"properties": {
"filteredLineCount": {
"default": 0,
"description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
"minimum": 0,
"title": "Filteredlinecount",
"type": "integer"
},
"logs": {
"title": "Logs",
"type": "string"
}
},
"required": [
"logs"
],
"title": "TaskExecutionLogsResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | TaskExecutionLogsResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get dispatch task log stream by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/logs/{stream}
Retrieve the stored stdout or stderr output of a task. Available after the task finishes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| stream | path | string | true | Log stream to read: stdout or stderr |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
| verbosity | query | string | false | 'user' (default): hide the task runner's own structured JSON log lines, showing only the task function's own output (plus any uncaught-exception traceback). 'all': return every line, unfiltered — the behavior every caller got before this parameter existed. |
Enumerated Values¶
| Parameter | Value |
|---|---|
| verbosity | [user, all] |
Example responses¶
200 Response
{
"description": "Inline content of a task's s3-uploaded stdout/stderr log. the task runner tees its own stdout + stderr into in-memory buffers and uploads them to ``dispatches/<did>/outputs/<node_id>/{stdout,stderr}.log`` on process exit (see action 186's ``pod_logs.logcapture``). this endpoint reads that blob itself, utf-8 decodes it, and hands the content back directly — no presigned url, no second unauthenticated request to S3 required from the caller. callers use it for post-mortem debugging after the pod has been ttl-gc'd (kubelet drops it 60 s after job terminal, so the live-pod-log endpoint stops working past that window; the S3 upload is the durable copy). see ``specs/task_durable_log_inline_content.md`` and ``specs/task_log_verbosity_filter.md``. attributes: content: utf-8 decoded log content, subject to the ``verbosity`` query param: by default the task runner's own structured JSON log lines are removed (uncaught-exception tracebacks are always kept — they're plain text on the runner side, never json). invalid byte sequences are replaced, never raised on. when ``truncated`` is ``true`` this is a head+tail excerpt of the (already-filtered) content, not the full blob. content_type: mime type of the payload. fixed to ``text/plain`` because the log blob is utf-8 encoded plain text. total_bytes: size in bytes of the full S3 object, independent of any inline truncation applied to ``content`` **and** independent of ``verbosity`` — this always reflects the raw blob size, not the filtered content's size. truncated: ``true`` iff ``content`` is a head+tail excerpt because the *filtered* content exceeded the inline response cap (``settings.task_log_inline_max_bytes``). filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
"properties": {
"content": {
"description": "Utf-8 decoded log content (invalid byte sequences replaced, never raises). when `truncated` is true, this is a head+tail excerpt, not the full blob.",
"title": "Content",
"type": "string"
},
"contentType": {
"default": "text/plain",
"description": "Mime type of the log payload.",
"title": "Contenttype",
"type": "string"
},
"filteredLineCount": {
"default": 0,
"description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
"minimum": 0,
"title": "Filteredlinecount",
"type": "integer"
},
"totalBytes": {
"description": "Size in bytes of the full S3 object, independent of any inline truncation.",
"minimum": 0,
"title": "Totalbytes",
"type": "integer"
},
"truncated": {
"default": false,
"description": "True iff `content` is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to `total_bytes`, which reflects the raw (unfiltered) blob size.",
"title": "Truncated",
"type": "boolean"
}
},
"required": [
"content",
"totalBytes"
],
"title": "TaskExecutionDurableLogResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | TaskExecutionDurableLogResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get dispatch task result by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/dispatches/{dispatch_id}/tasks/{task_id}/result
Retrieve a short-lived download URL for the result of a completed task. The result is a cloudpickle payload; load it with cloudpickle.loads.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| dispatch_id | path | string | true | Dispatch ID |
| task_id | path | integer | true | Task ID |
| nodeId | query | any | false | Node id of a specific fan-out invocation (the nodeId field on the task list response). Required when the same @task ran at multiple graph nodes — omitting it then returns 409 with the candidate node ids. May be omitted for tasks with a single execution. |
Example responses¶
200 Response
{
"description": "Presigned-url response for a completed task's cloudpickled result. handed back by ``get .../dispatches/{dispatch_id}/tasks/{task_id}/result`` once a task reaches ``completed`` state and its ``result.tobj`` blob is present in s3. the caller gets ``url`` directly from S3 to stream the payload — pipelines-api never proxies the bytes, which keeps the response independent of result size and side-steps the rce risk of cloudpickle-loading untrusted user output on the server. ``value`` / ``value_available`` / ``value_unavailable_reason`` are an additive, optional json-safe preview of the same result — populated from a small manifest the task runner writes alongside ``result.tobj`` (see ``specs/task_result_preview.md``). unlike ``result.tobj``, decoding this manifest is safe to do server-side: ``json.loads`` cannot execute arbitrary code the way ``cloudpickle.loads`` can. ``url`` / ``expires_in`` / ``content_type`` are always populated once the task is ``completed``, independent of whether a preview is available. ``value_text`` / ``value_text_truncated`` add a human-readable ``str(result)`` preview the runner emits for *every* result — even non-json-serializable or oversized ones the JSON ``value`` can't represent — so a UI always has something to display. unlike json, the text repr is truncatable, closing the ``not_json_serializable`` / ``too_large`` gaps. attributes: url: presigned ``https://`` url granting ``getobject`` on the task's ``result.tobj`` blob. time-limited by ``expires_in``; treat as one-shot. expires_in: validity window in seconds from the signing moment. default 900 (15 min). content_type: mime type the caller should expect on the downloaded body. fixed to ``application/octet-stream`` because the payload is a raw cloudpickle blob; callers decode with ``cloudpickle.loads(response.content)``. value: json-decoded preview of the task's return value, when available. ``none`` both when no preview exists and when the task legitimately returned ``none`` — use ``value_available`` to disambiguate. value_available: ``true`` iff ``value`` reflects an actual preview. value_unavailable_reason: set iff ``value_available`` is ``false``, explaining why no preview could be produced. one of ``\"not_json_serializable\"`` (the return value isn't json-safe), ``\"too_large\"`` (exceeded the preview size cap), or ``\"unavailable\"`` (no preview was ever recorded — a pre-feature task, or the preview upload itself failed). ``none`` when ``value_available`` is ``true``. value_text: human-readable ``str(result)`` preview the runner embeds in *every* manifest branch — present even when the JSON ``value`` is unavailable, so a UI always has something to render for non-json-serializable or oversized results. possibly truncated (see ``value_text_truncated``); the full object is always available via ``url``. ``none`` only for tasks whose manifest predates this field. value_text_truncated: ``true`` iff ``value_text`` was cut to the configured character cap — download the full object via ``url`` for the complete value.",
"properties": {
"contentType": {
"default": "application/octet-stream",
"description": "Mime type of the payload the url serves.",
"title": "Contenttype",
"type": "string"
},
"expiresIn": {
"description": "Url validity window in seconds from the moment it was signed.",
"exclusiveMinimum": 0,
"title": "Expiresin",
"type": "integer"
},
"url": {
"description": "Presigned S3 url for the result blob.",
"title": "Url",
"type": "string"
},
"value": {
"anyOf": [
{},
{
"type": "null"
}
],
"description": "Json-decoded preview of the task's return value, when available.",
"title": "Value"
},
"valueAvailable": {
"default": false,
"description": "True iff `value` reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available.",
"title": "Valueavailable",
"type": "boolean"
},
"valueText": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Human-readable `str()` preview of the task's return value, present even when the JSON `value` is unavailable (non-json-serializable or oversized results). possibly truncated (see `value_text_truncated`). the full object is always available via `url`. `none` only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all.",
"title": "Valuetext"
},
"valueTextTruncated": {
"default": false,
"description": "True iff `value_text` was cut to the configured character cap. when true, download the full object via `url` to see the complete value.",
"title": "Valuetexttruncated",
"type": "boolean"
},
"valueUnavailableReason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Set iff `value_available` is false, explaining why no preview could be produced. one of: `not_json_serializable`, `too_large`, or `unavailable`. `none` when `value_available` is true.",
"title": "Valueunavailablereason"
}
},
"required": [
"url",
"expiresIn"
],
"title": "TaskExecutionResultResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | TaskExecutionResultResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
List pipeline version dispatches by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches
List the runs (dispatches) of a locked pipeline version.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| offset | query | integer | false | none |
| limit | query | integer | false | none |
Example responses¶
200 Response
{
"properties": {
"count": {
"readOnly": true,
"title": "Count",
"type": "integer"
},
"data": {
"items": {
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
},
"title": "Data",
"type": "array"
},
"next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next"
},
"previous": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous"
},
"totalCount": {
"title": "Totalcount",
"type": "integer"
}
},
"required": [
"data",
"totalCount",
"count"
],
"title": "DataPage[PipelineDispatchResponse]",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | DataPage_PipelineDispatchResponse_ |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Run pipeline version by pipeline_ ID¶
Operation path: POST /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches
Run a locked pipeline version with an input payload. Returns the new dispatch.
Body parameter¶
{
"description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
"properties": {
"imageId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Imageid",
"type": "string"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
}
},
"required": [
"inputId",
"imageId"
],
"title": "PipelineDispatchCreateRequest",
"type": "object"
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| body | body | PipelineDispatchCreateRequest | true | none |
Example responses¶
202 Response
{
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 202 | Accepted | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
cancel pipeline version dispatch by pipeline_ ID¶
Operation path: DELETE /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}
Cancel a run (dispatch) of a locked pipeline version.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
422 Response
{
"properties": {
"detail": {
"items": {
"properties": {
"ctx": {
"title": "Context",
"type": "object"
},
"input": {
"title": "Input"
},
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
},
"title": "Detail",
"type": "array"
}
},
"title": "HTTPValidationError",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 204 | No Content | Successful Response | None |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get pipeline version dispatch by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}
Retrieve a run (dispatch) of a locked pipeline version.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
200 Response
{
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | PipelineDispatchResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Get pipeline version dispatch status by pipeline_ ID¶
Operation path: GET /api/v2/pipelines/{pipeline_id}/versions/{version_id}/dispatches/{dispatch_id}/status
Retrieve the current status of a locked pipeline version run. Use this endpoint to poll for completion.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pipeline_id | path | string | true | Pipeline ID |
| version_id | path | integer | true | Pipeline version number |
| dispatch_id | path | string | true | Dispatch ID |
Example responses¶
200 Response
{
"description": "Lightweight status polling response.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
}
},
"required": [
"id",
"status"
],
"title": "PipelineDispatchStatusResponse",
"type": "object"
}
Responses¶
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Successful Response | PipelineDispatchStatusResponse |
| 422 | Unprocessable Entity | Validation Error | HTTPValidationError |
Schemas¶
DataPage_PipelineDispatchResponse_
{
"properties": {
"count": {
"readOnly": true,
"title": "Count",
"type": "integer"
},
"data": {
"items": {
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
},
"title": "Data",
"type": "array"
},
"next": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next"
},
"previous": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Previous"
},
"totalCount": {
"title": "Totalcount",
"type": "integer"
}
},
"required": [
"data",
"totalCount",
"count"
],
"title": "DataPage[PipelineDispatchResponse]",
"type": "object"
}
DataPage[PipelineDispatchResponse]
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| count | integer | true | none | |
| data | [PipelineDispatchResponse] | true | [Response schema for a pipeline dispatch.] | |
| next | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| previous | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| totalCount | integer | true | none |
HTTPValidationError
{
"properties": {
"detail": {
"items": {
"properties": {
"ctx": {
"title": "Context",
"type": "object"
},
"input": {
"title": "Input"
},
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
},
"title": "Detail",
"type": "array"
}
},
"title": "HTTPValidationError",
"type": "object"
}
HTTPValidationError
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| detail | [ValidationError] | false | none |
PipelineDispatchCreateRequest
{
"description": "Request body for creating a pipeline dispatch. under the prep-pod flow (see ``specs/dispatch_prep_pod_implementation_plan.md`` c.1), ``image_id`` is required — the prep pod runs the user's chosen image and can't be launched without one. pipeline creation still leaves ``image_id`` optional (drafts have no image); it's resolved at dispatch time here.",
"properties": {
"imageId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Imageid",
"type": "string"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
}
},
"required": [
"inputId",
"imageId"
],
"title": "PipelineDispatchCreateRequest",
"type": "object"
}
PipelineDispatchCreateRequest
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| imageId | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
| inputId | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
PipelineDispatchResponse
{
"description": "Response schema for a pipeline dispatch.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"createdAt": {
"format": "date-time",
"title": "Createdat",
"type": "string"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"imageId": {
"anyOf": [
{
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"type": "string"
},
{
"type": "null"
}
],
"title": "Imageid"
},
"imageVersion": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Imageversion"
},
"inputId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Inputid",
"type": "string"
},
"pipelineId": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Pipelineid",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
},
"triggeredBy": {
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"title": "Updatedat",
"type": "string"
},
"versionId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Versionid"
}
},
"required": [
"id",
"pipelineId",
"inputId",
"triggeredBy",
"status",
"createdAt",
"updatedAt"
],
"title": "PipelineDispatchResponse",
"type": "object"
}
PipelineDispatchResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| covalentDispatchId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| createdAt | string(date-time) | true | none | |
| errorDetail | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
| imageId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | maxLength: 24 minLength: 24 minLength: 24 |
none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| imageVersion | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| inputId | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
| pipelineId | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
| status | PipelineDispatchStatus | true | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |
|
| triggeredBy | PipelineDispatchTrigger | true | How a pipeline dispatch was triggered. | |
| updatedAt | string(date-time) | true | none | |
| versionId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
PipelineDispatchStatus
{
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
}
PipelineDispatchStatus
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| PipelineDispatchStatus | string | false | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |
Enumerated Values¶
| Property | Value |
|---|---|
| PipelineDispatchStatus | [PENDING, PREPARING, RUNNING, COMPLETED, FAILED, CANCELLED, ERRORED] |
PipelineDispatchStatusResponse
{
"description": "Lightweight status polling response.",
"properties": {
"covalentDispatchId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Covalentdispatchid"
},
"id": {
"maxLength": 24,
"minLength": 24,
"pattern": "^[0-9a-fA-F]{24}$",
"title": "Id",
"type": "string"
},
"status": {
"description": "Lifecycle status of a pipeline dispatch. ``preparing`` is the transient state a dispatch enters at creation while the prep-pod (see ``specs/dispatch_prep_pod_implementation_plan.md``) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to ``running`` and per-task jobs start submitting; on prep failure it flips to ``failed`` without any task rows ever having been created.",
"enum": [
"PENDING",
"PREPARING",
"RUNNING",
"COMPLETED",
"FAILED",
"CANCELLED",
"ERRORED"
],
"title": "PipelineDispatchStatus",
"type": "string"
}
},
"required": [
"id",
"status"
],
"title": "PipelineDispatchStatusResponse",
"type": "object"
}
PipelineDispatchStatusResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| covalentDispatchId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| id | string | true | maxLength: 24 minLength: 24 minLength: 24 |
none |
| status | PipelineDispatchStatus | true | Lifecycle status of a pipeline dispatch. preparing is the transient state a dispatch enters at creation while the prep-pod (see specs/dispatch_prep_pod_implementation_plan.md) traces the transport graph in the user's own image + uploads it to s3. on the prep-pod's callback the dispatch flips to running and per-task jobs start submitting; on prep failure it flips to failed without any task rows ever having been created. |
PipelineDispatchTrigger
{
"description": "How a pipeline dispatch was triggered.",
"enum": [
"api",
"schedule"
],
"title": "PipelineDispatchTrigger",
"type": "string"
}
PipelineDispatchTrigger
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| PipelineDispatchTrigger | string | false | How a pipeline dispatch was triggered. |
Enumerated Values¶
| Property | Value |
|---|---|
| PipelineDispatchTrigger | [api, schedule] |
TaskExecutionDurableLogResponse
{
"description": "Inline content of a task's s3-uploaded stdout/stderr log. the task runner tees its own stdout + stderr into in-memory buffers and uploads them to ``dispatches/<did>/outputs/<node_id>/{stdout,stderr}.log`` on process exit (see action 186's ``pod_logs.logcapture``). this endpoint reads that blob itself, utf-8 decodes it, and hands the content back directly — no presigned url, no second unauthenticated request to S3 required from the caller. callers use it for post-mortem debugging after the pod has been ttl-gc'd (kubelet drops it 60 s after job terminal, so the live-pod-log endpoint stops working past that window; the S3 upload is the durable copy). see ``specs/task_durable_log_inline_content.md`` and ``specs/task_log_verbosity_filter.md``. attributes: content: utf-8 decoded log content, subject to the ``verbosity`` query param: by default the task runner's own structured JSON log lines are removed (uncaught-exception tracebacks are always kept — they're plain text on the runner side, never json). invalid byte sequences are replaced, never raised on. when ``truncated`` is ``true`` this is a head+tail excerpt of the (already-filtered) content, not the full blob. content_type: mime type of the payload. fixed to ``text/plain`` because the log blob is utf-8 encoded plain text. total_bytes: size in bytes of the full S3 object, independent of any inline truncation applied to ``content`` **and** independent of ``verbosity`` — this always reflects the raw blob size, not the filtered content's size. truncated: ``true`` iff ``content`` is a head+tail excerpt because the *filtered* content exceeded the inline response cap (``settings.task_log_inline_max_bytes``). filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
"properties": {
"content": {
"description": "Utf-8 decoded log content (invalid byte sequences replaced, never raises). when `truncated` is true, this is a head+tail excerpt, not the full blob.",
"title": "Content",
"type": "string"
},
"contentType": {
"default": "text/plain",
"description": "Mime type of the log payload.",
"title": "Contenttype",
"type": "string"
},
"filteredLineCount": {
"default": 0,
"description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
"minimum": 0,
"title": "Filteredlinecount",
"type": "integer"
},
"totalBytes": {
"description": "Size in bytes of the full S3 object, independent of any inline truncation.",
"minimum": 0,
"title": "Totalbytes",
"type": "integer"
},
"truncated": {
"default": false,
"description": "True iff `content` is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to `total_bytes`, which reflects the raw (unfiltered) blob size.",
"title": "Truncated",
"type": "boolean"
}
},
"required": [
"content",
"totalBytes"
],
"title": "TaskExecutionDurableLogResponse",
"type": "object"
}
TaskExecutionDurableLogResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| content | string | true | Utf-8 decoded log content (invalid byte sequences replaced, never raises). when truncated is true, this is a head+tail excerpt, not the full blob. |
|
| contentType | string | false | Mime type of the log payload. | |
| filteredLineCount | integer | false | minimum: 0 |
Number of lines removed by the verbosity filter. always 0 when verbosity=all. |
| totalBytes | integer | true | minimum: 0 |
Size in bytes of the full S3 object, independent of any inline truncation. |
| truncated | boolean | false | True iff content is a head+tail excerpt because the verbosity-filtered content exceeded the inline response cap. not directly comparable to total_bytes, which reflects the raw (unfiltered) blob size. |
TaskExecutionLogsResponse
{
"description": "Response schema for per-task pod logs. populated only when standalone dispatch is on — under the legacy covalent path, pipelines-api does not own the pod and the endpoint returns an empty string. attributes: logs: pod stdout+stderr as a utf-8 decoded string, subject to the ``verbosity`` query param (see ``specs/task_log_verbosity_filter.md``): by default the task runner's own structured JSON log lines are removed, leaving only the task function's own output (plus any uncaught-exception traceback, which is always kept). empty when the pod has been gc'd, hasn't started yet, or when the dispatch predates standalone mode. filtered_line_count: number of lines the verbosity filter removed. always ``0`` when ``verbosity=all`` was requested.",
"properties": {
"filteredLineCount": {
"default": 0,
"description": "Number of lines removed by the verbosity filter. always 0 when verbosity=all.",
"minimum": 0,
"title": "Filteredlinecount",
"type": "integer"
},
"logs": {
"title": "Logs",
"type": "string"
}
},
"required": [
"logs"
],
"title": "TaskExecutionLogsResponse",
"type": "object"
}
TaskExecutionLogsResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| filteredLineCount | integer | false | minimum: 0 |
Number of lines removed by the verbosity filter. always 0 when verbosity=all. |
| logs | string | true | none |
TaskExecutionResponse
{
"description": "Response schema for a single task execution record. attributes: task_id: pipeline-level sequential task number, e.g. ``1``, ``2``, ``3``. use this as the ``{task_id}`` path parameter for per-task endpoints. ``none`` for internal utility nodes with no user ``@task`` backing. node_id: per-dispatch execution node id. pass as ``?nodeid=`` to per-task endpoints to address a specific invocation when the same ``@task`` function runs more than once in a single dispatch (fan-out). each invocation has a distinct ``nodeid`` even when they share the same ``taskid``. ``none`` for legacy rows that pre-date node-id tracking. graph_node_id: the static graph node ``id`` (from ``get .../graph``) this execution corresponds to. stable across every dispatch of the same pipeline version, so the UI can join execution status/logs/results to the exact graph box even for fan-out. ``none`` when no 1:1 match against the static graph exists (call sites inside loops, helper-wrapped tasks) or for rows created before this field was introduced. name: the ``@task`` function name. status: current ``taskexecutionstatus`` value. started_at: when execution began, or ``none`` if not yet started. completed_at: when execution finished, or ``none`` if still running. error_detail: failure message when ``status == failed``. resource_bundle_id: mms resource-bundle id/alias the task actually ran on (resolved at dispatch — declared value, or the service default for undeclared tasks). ``none`` only for legacy rows.",
"properties": {
"completedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Completedat"
},
"errorDetail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Errordetail"
},
"graphNodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Graphnodeid"
},
"name": {
"title": "Name",
"type": "string"
},
"nodeId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Nodeid"
},
"resourceBundleId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Resourcebundleid"
},
"startedAt": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Startedat"
},
"status": {
"title": "Status",
"type": "string"
},
"taskId": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Taskid"
}
},
"required": [
"name",
"status"
],
"title": "TaskExecutionResponse",
"type": "object"
}
TaskExecutionResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| completedAt | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string(date-time) | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| errorDetail | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| graphNodeId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| name | string | true | none | |
| nodeId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| resourceBundleId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| startedAt | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string(date-time) | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| status | string | true | none | |
| taskId | any | false | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
TaskExecutionResultResponse
{
"description": "Presigned-url response for a completed task's cloudpickled result. handed back by ``get .../dispatches/{dispatch_id}/tasks/{task_id}/result`` once a task reaches ``completed`` state and its ``result.tobj`` blob is present in s3. the caller gets ``url`` directly from S3 to stream the payload — pipelines-api never proxies the bytes, which keeps the response independent of result size and side-steps the rce risk of cloudpickle-loading untrusted user output on the server. ``value`` / ``value_available`` / ``value_unavailable_reason`` are an additive, optional json-safe preview of the same result — populated from a small manifest the task runner writes alongside ``result.tobj`` (see ``specs/task_result_preview.md``). unlike ``result.tobj``, decoding this manifest is safe to do server-side: ``json.loads`` cannot execute arbitrary code the way ``cloudpickle.loads`` can. ``url`` / ``expires_in`` / ``content_type`` are always populated once the task is ``completed``, independent of whether a preview is available. ``value_text`` / ``value_text_truncated`` add a human-readable ``str(result)`` preview the runner emits for *every* result — even non-json-serializable or oversized ones the JSON ``value`` can't represent — so a UI always has something to display. unlike json, the text repr is truncatable, closing the ``not_json_serializable`` / ``too_large`` gaps. attributes: url: presigned ``https://`` url granting ``getobject`` on the task's ``result.tobj`` blob. time-limited by ``expires_in``; treat as one-shot. expires_in: validity window in seconds from the signing moment. default 900 (15 min). content_type: mime type the caller should expect on the downloaded body. fixed to ``application/octet-stream`` because the payload is a raw cloudpickle blob; callers decode with ``cloudpickle.loads(response.content)``. value: json-decoded preview of the task's return value, when available. ``none`` both when no preview exists and when the task legitimately returned ``none`` — use ``value_available`` to disambiguate. value_available: ``true`` iff ``value`` reflects an actual preview. value_unavailable_reason: set iff ``value_available`` is ``false``, explaining why no preview could be produced. one of ``\"not_json_serializable\"`` (the return value isn't json-safe), ``\"too_large\"`` (exceeded the preview size cap), or ``\"unavailable\"`` (no preview was ever recorded — a pre-feature task, or the preview upload itself failed). ``none`` when ``value_available`` is ``true``. value_text: human-readable ``str(result)`` preview the runner embeds in *every* manifest branch — present even when the JSON ``value`` is unavailable, so a UI always has something to render for non-json-serializable or oversized results. possibly truncated (see ``value_text_truncated``); the full object is always available via ``url``. ``none`` only for tasks whose manifest predates this field. value_text_truncated: ``true`` iff ``value_text`` was cut to the configured character cap — download the full object via ``url`` for the complete value.",
"properties": {
"contentType": {
"default": "application/octet-stream",
"description": "Mime type of the payload the url serves.",
"title": "Contenttype",
"type": "string"
},
"expiresIn": {
"description": "Url validity window in seconds from the moment it was signed.",
"exclusiveMinimum": 0,
"title": "Expiresin",
"type": "integer"
},
"url": {
"description": "Presigned S3 url for the result blob.",
"title": "Url",
"type": "string"
},
"value": {
"anyOf": [
{},
{
"type": "null"
}
],
"description": "Json-decoded preview of the task's return value, when available.",
"title": "Value"
},
"valueAvailable": {
"default": false,
"description": "True iff `value` reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available.",
"title": "Valueavailable",
"type": "boolean"
},
"valueText": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Human-readable `str()` preview of the task's return value, present even when the JSON `value` is unavailable (non-json-serializable or oversized results). possibly truncated (see `value_text_truncated`). the full object is always available via `url`. `none` only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all.",
"title": "Valuetext"
},
"valueTextTruncated": {
"default": false,
"description": "True iff `value_text` was cut to the configured character cap. when true, download the full object via `url` to see the complete value.",
"title": "Valuetexttruncated",
"type": "boolean"
},
"valueUnavailableReason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Set iff `value_available` is false, explaining why no preview could be produced. one of: `not_json_serializable`, `too_large`, or `unavailable`. `none` when `value_available` is true.",
"title": "Valueunavailablereason"
}
},
"required": [
"url",
"expiresIn"
],
"title": "TaskExecutionResultResponse",
"type": "object"
}
TaskExecutionResultResponse
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| contentType | string | false | Mime type of the payload the url serves. | |
| expiresIn | integer | true | Url validity window in seconds from the moment it was signed. | |
| url | string | true | Presigned S3 url for the result blob. | |
| value | any | false | Json-decoded preview of the task's return value, when available. |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | any | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| valueAvailable | boolean | false | True iff value reflects an actual preview. needed because a task can legitimately return none/null, which is otherwise indistinguishable from no preview being available. |
|
| valueText | any | false | Human-readable str() preview of the task's return value, present even when the JSON value is unavailable (non-json-serializable or oversized results). possibly truncated (see value_text_truncated). the full object is always available via url. none only for pre-feature tasks whose manifest predates this field, or when no preview was recorded at all. |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| valueTextTruncated | boolean | false | True iff value_text was cut to the configured character cap. when true, download the full object via url to see the complete value. |
|
| valueUnavailableReason | any | false | Set iff value_available is false, explaining why no preview could be produced. one of: not_json_serializable, too_large, or unavailable. none when value_available is true. |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | null | false | none |
ValidationError
{
"properties": {
"ctx": {
"title": "Context",
"type": "object"
},
"input": {
"title": "Input"
},
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"title": "Location",
"type": "array"
},
"msg": {
"title": "Message",
"type": "string"
},
"type": {
"title": "Error Type",
"type": "string"
}
},
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError",
"type": "object"
}
ValidationError
Properties¶
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| ctx | object | false | none | |
| input | any | false | none | |
| loc | [anyOf] | true | none |
anyOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | string | false | none |
or
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » anonymous | integer | false | none |
continued
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| msg | string | true | none | |
| type | string | true | none |