artifact-store

Operations of the Artifact Store API. Paths are relative to your deployment's API host.

GET /api/artifact-store-api/artifacts

List artifacts for project

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
includeEphemeralquerystringnoWhen true, ephemeral run-scoped archives are included in the result. Defaults to false so user-facing artifact lists never expose internal scratch storage produced by activities.
limitquerystringnoItems per page
pagequerystringnoPage number (1-based)
pipelineRunIdquerystringnoFilter artifacts by pipeline run ID
typequerystring (38 values)no
StatusDescriptionBody
200application/json ArtifactResponseDtoPaginatedEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts

Create artifact metadata

Authentication: bearer token (Authorization: Bearer <token>)

Request body: application/json CreateArtifactDto

StatusDescriptionBody
201application/json ArtifactResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

DELETE /api/artifact-store-api/artifacts/cleanup

Delete artifacts created during a specific pipeline run (used for pipeline stop cleanup)

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
pipelineRunIdquerystringyesPipeline run ID
StatusDescriptionBody
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

PATCH /api/artifact-store-api/artifacts/detach

Detach artifacts from a pipeline run (set pipelineRunId=null). Used by undo with retainDocuments=true.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
pipelineRunIdquerystringyesPipeline run ID
StatusDescriptionBody
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/emit

Atomic create-with-version: create the artifact and store its first version inline.

Authentication: bearer token (Authorization: Bearer <token>)

Request body: application/json EmitArtifactDto

StatusDescriptionBody
201application/json ArtifactVersionResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/ephemeral

Create an ephemeral archive artifact owned by a workflow run. Auto-cleans on terminal run state. Hidden from user-facing list views.

Authentication: bearer token (Authorization: Bearer <token>)

Request body: application/json CreateEphemeralArchiveDto

StatusDescriptionBody
201application/json EphemeralArchiveResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/upload-intent

Create a new artifact for an uploaded file and mint a presigned PUT for its bytes. The bytes go straight to object storage; call the confirm route when the PUT completes.

Authentication: bearer token (Authorization: Bearer <token>)

Request body: application/json CreateArtifactUploadIntentDto

StatusDescriptionBody
201application/json ArtifactUploadIntentResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}

Get artifact with versions and links

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200application/json ArtifactResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

DELETE /api/artifact-store-api/artifacts/{id}

Erase an artifact: delete every version, reclaim the blobs and uploaded objects it was the last owner of, and remove its rows. Requires a token that proves the org. Idempotent — an absent artifact answers outcome=already_absent.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200application/json ArtifactErasureResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/entries

Append a file entry to an ephemeral archive. Accepts inline base64 (≤16 MB) or a reference to an existing Blob.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes

Request body: application/json AppendArtifactEntryDto

StatusDescriptionBody
201application/json ArtifactEntryResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/entries/upload-intent

Attach one more uploaded file to an existing artifact's served version, and mint a presigned PUT for its bytes.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes

Request body: application/json CreateArtifactEntryUploadIntentDto

StatusDescriptionBody
201application/json ArtifactUploadIntentResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/entries/{entryId}/confirm

Prove the stored bytes and make them readable: size, server-computed SHA-256 and a signature check of the declared media type, then any configured scan. Idempotent once the entry is ready.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
entryIdpathstringyes
idpathstringyes
StatusDescriptionBody
201application/json ArtifactUploadEntryResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/entries/{entryId}/download-url

Mint a short-lived presigned GET for a confirmed upload entry. Unsigned-bearer — mint one per request rather than storing it.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
entryIdpathstringyes
idpathstringyes
StatusDescriptionBody
200application/json ArtifactUploadDownloadUrlResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/link

Link artifact to phase gate, PR, thread, or backlog item

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes

Request body: application/json LinkArtifactDto

StatusDescriptionBody
201application/json ArtifactLinkResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/report

Get the structured report from the latest artifact version (v3.0.0+)

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/rollback

Roll an artifact's served version back to an earlier version. A pointer flip: creates no version, re-validates nothing, and leaves every stored version untouched. Records a durable audit row.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes

Request body: application/json RollbackArtifactDto

StatusDescriptionBody
201application/json ArtifactRollbackResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/rollbacks

List an artifact's rollback history, newest first — who moved the served version, when, from what, and why.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200application/json ArtifactRollbackAuditResponseDtoDataArrayEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/versions

List all versions for an artifact (ordered newest first)

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
StatusDescriptionBody
200application/json ArtifactVersionResponseDtoDataArrayEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

POST /api/artifact-store-api/artifacts/{id}/versions

Add immutable artifact version

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes

Request body: application/json AddArtifactVersionDto

StatusDescriptionBody
201application/json ArtifactVersionResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/versions/{version}

Get artifact version by number

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
versionpathnumberyes
StatusDescriptionBody
200application/json ArtifactVersionResponseDtoDataEnvelope
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto

GET /api/artifact-store-api/artifacts/{id}/versions/{version}/content

Resolve a version's canonical content. Inline payloads return the JSON body; external pointers return metadata so the caller can fetch via storage.

Authentication: bearer token (Authorization: Bearer <token>)

ParameterInTypeRequiredDescription
idpathstringyes
versionpathnumberyes
StatusDescriptionBody
400application/problem+json ProblemDetailsDto
401application/problem+json ProblemDetailsDto
403application/problem+json ProblemDetailsDto
404application/problem+json ProblemDetailsDto
409application/problem+json ProblemDetailsDto
422application/problem+json ProblemDetailsDto
500application/problem+json ProblemDetailsDto