v0.5.0
Reference

Pipeline API

Create, inspect, cancel, append to, and resume workflows.

Base URL: your SDK-facing API, locally http://localhost:8081. Read authentication and conventions first. Download OpenAPI 3.0 for the full machine-readable contract.

POST /pipelines

Create a pipeline using the legacy non-idempotent contract

Preserved for existing SDK clients. Each successful request creates a new pipeline, even when the payload is identical. New integrations that must safely retry an unknown HTTP outcome should use /pipelines/idempotent.

Authentication: No header security scheme; read the operation description for body credentials or delivery-token requirements.

Request body

Required.

Content type: application/json. LegacyPipelineCreateRequest

yaml
$ref: "#/components/schemas/LegacyPipelineCreateRequest"

Responses

StatusMeaningSchema
200Pipeline createdPipelineResponse
400Invalid requestProblemDetails
401Invalid API key in the request body
500Pipeline creation failed

POST /pipelines/idempotent

Atomically create or resolve a pipeline by idempotency key

The key is scoped to the application authenticated by X-API-Key and is retained for the lifetime of the pipeline. Sequential and concurrent requests with the same key and the same creation intent return the same pipeline ID. Tracing metadata may change between retries. Reusing the key for a different creation intent returns 409.

Authentication: ApiKeyAuth

Request body

Required.

Content type: application/json. IdempotentPipelineCreateRequest

yaml
$ref: "#/components/schemas/IdempotentPipelineCreateRequest"

Responses

StatusMeaningSchema
200The existing pipeline for this application and key was returnedIdempotentPipelineCreateResponse
201A new pipeline was createdIdempotentPipelineCreateResponse
400Validation errorProblemDetails
401Missing or invalid X-API-Key headerProblemDetails
409The key was already used for a different creation intentProblemDetails
500Pipeline creation failedProblemDetails

POST /pipelines/by-idempotency-key

Find a pipeline by its application-scoped idempotency key

Uses a request body so the idempotency key is not placed in the URL or routine access logs.

Authentication: ApiKeyAuth

Request body

Required.

Content type: application/json. PipelineIdempotencyLookupRequest

yaml
$ref: "#/components/schemas/PipelineIdempotencyLookupRequest"

Responses

StatusMeaningSchema
200Pipeline status and stage detailsPipelineResponse
400Validation errorProblemDetails
401Missing or invalid X-API-Key headerProblemDetails
404No pipeline exists for this application and keyProblemDetails

GET /pipelines/{pipelineId}

Get pipeline status and stage execution details

Authentication: ApiKeyAuth

Parameters

NameInRequiredTypeDescription
pipelineIdpathYesintegerPipeline ID (> 0)

Responses

StatusMeaningSchema
200Pipeline status and stage detailsPipelineResponse
400Invalid pipeline IDProblemDetails
401Invalid API keyProblemDetails
403Pipeline belongs to another applicationProblemDetails
404Pipeline not found

POST /pipelines/{pipelineId}/cancel

Cancel a non-terminal pipeline

Atomically marks the authenticated application's pipeline and its unfinished stages as cancelled. Cancellation of an already-running handler is cooperative; stale results are fenced by execution metadata.

Authentication: ApiKeyAuth

Parameters

NameInRequiredTypeDescription
pipelineIdpathYesintegerPipeline ID (> 0)

Responses

StatusMeaningSchema
200Pipeline cancelledPipelineResponse
400Invalid pipeline ID
401Invalid API key
404Pipeline not found for this application
409Pipeline is already terminal and cannot be cancelled
504Cancellation timed out

POST /pipelines/{pipelineId}/stages

Append stages to an existing pipeline

Authentication: ApiKeyAuth

Parameters

NameInRequiredTypeDescription
pipelineIdpathYesintegerPipeline ID (> 0)

Request body

Required.

Content type: application/json. AppendStagesRequest

yaml
$ref: "#/components/schemas/AppendStagesRequest"

Responses

StatusMeaningSchema
200Stages appendedAppendStagesResponse
400Validation errorProblemDetails
404Pipeline not foundProblemDetails
409Pipeline is terminal, append is not allowedProblemDetails

POST /stages/{stageId}/resume

Resume a stage waiting for external approval

Authentication: ApiKeyAuth

Parameters

NameInRequiredTypeDescription
stageIdpathYesintegerStage ID (> 0)

Request body

Required.

Content type: application/json. ResumeStageRequest

yaml
$ref: "#/components/schemas/ResumeStageRequest"

Responses

StatusMeaningSchema
204Stage resumed
400Validation errorProblemDetails
404Stage not foundProblemDetails
409Stage not waiting for approval or conflicting repeated decisionProblemDetails

GET /version

Server version and licence tier

Authentication: No header security scheme; read the operation description for body credentials or delivery-token requirements.

Responses

StatusMeaningSchema
200Build metadataVersionInfo

POST /logs

Record a legacy free-form log line

Legacy log ingestion. This handler does not authenticate request headers. An optional body apiKey associates the log with an application when its hash matches a non-disabled key. Missing or unmatched keys still permit an unscoped log; this lookup does not check key expiry. It does not return 401 for key validation. Prefer stage-result logs or worker events for worker integrations.

Authentication: No header security scheme; read the operation description for body credentials or delivery-token requirements.

Request body

Required.

Content type: application/json. LogRequest

yaml
$ref: "#/components/schemas/LogRequest"

Responses

StatusMeaningSchema
200Log line storedLogResponse
400Malformed body
500Log or keywords could not be stored
Download this page as MarkdownMatches the 0.5.0 source release

Start here