Finalise Blob Output
Verifies the blob was PUT at the expected key (upload_token must equal it), relocates it to the permanent metadata path (normalising thumbnails to a 768px square), deletes the scratch object, upserts the live UploadMetadata row, appends the name to the step's ledger and bumps the upload's updated_at. Only valid for upload-bound runs (FailedPrecondition otherwise, or when the object is missing); the same output-name namespace rules as MintBlobOutputUpload apply. Aborted (and the step is marked CANCELLED) when the upload was deleted mid-run.
Access: internal only — step-scoped. Requires the per-step JWT in X-Upl-Step-Token (HS256 over PIPELINE_INTERNAL_TOKEN, unexpired) whose run_id/step_id claims match the request; Unauthenticated otherwise. The shared X-Upl-Internal-Token is accepted instead only while PIPELINE_ALLOW_LEGACY_STEP_TOKEN_FALLBACK is enabled.
JWT access token obtained via OAuth2 flow or service account
In: header
Header Parameters
Define the version of the Connect protocol
Define the timeout, in ms
Request Body
application/json
uuidlength <= 255^[a-z][a-z0-9-]{0,62}[a-z0-9]:[a-z][a-z0-9._-]{0,62}[a-z0-9]$1 <= length <= 4096Optional structured envelope (matches the manifest's envelope_schema_json for this output, when set). validate:skip opaque step-supplied JSON the api handler ignores entirely; no server limit to mirror
Per-file key for multi-file outputs — must match the filename passed to MintBlobOutputUpload. Empty for single-blob outputs.
length <= 1024Response Body
application/json
application/json
curl -X POST "https://uploads-api.xeonr.io/uplim.api.v1.InternalPipelineRunsService/FinaliseBlobOutput" \ -H "Connect-Protocol-Version: 1" \ -H "Connect-Timeout-Ms: 1000" \ -H "Content-Type: application/json" \ -d '{}'{}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}