io.atcr.hold.completeUpload

atcr.io

Documentation

Finalize a multipart upload and move the assembled blob to its final location.

main procedure

Finalize a multipart upload and move the assembled blob to its final location.

Input

Encodingapplication/json
digest string Required

Final blob digest (e.g., sha256:abc123...)

maxLength: 128 bytes
parts array Required

List of uploaded parts with their ETags

uploadId string Required

Upload session ID from initiateUpload

maxLength: 256 bytes

Output

Encodingapplication/json
digest string Required

The digest of the completed blob

status string Required

Always 'completed' on success

Errors

InvalidUploadId
InvalidDigest
MissingParts
CompletionFailed
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "uploadId",
        "digest",
        "parts"
      ],
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "ref": "#partInfo",
            "type": "ref"
          },
          "description": "List of uploaded parts with their ETags"
        },
        "digest": {
          "type": "string",
          "maxLength": 128,
          "description": "Final blob digest (e.g., sha256:abc123...)"
        },
        "uploadId": {
          "type": "string",
          "maxLength": 256,
          "description": "Upload session ID from initiateUpload"
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "InvalidUploadId"
    },
    {
      "name": "InvalidDigest"
    },
    {
      "name": "MissingParts"
    },
    {
      "name": "CompletionFailed"
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "status",
        "digest"
      ],
      "properties": {
        "digest": {
          "type": "string",
          "maxLength": 128,
          "description": "The digest of the completed blob"
        },
        "status": {
          "type": "string",
          "const": "completed",
          "maxLength": 16,
          "description": "Always 'completed' on success"
        }
      }
    },
    "encoding": "application/json"
  },
  "description": "Finalize a multipart upload and move the assembled blob to its final location."
}
partInfo object

Information about a completed upload part

Properties

etag string Required

ETag returned when the part was uploaded

maxLength: 256 bytes
partNumber integer Required

Part sequence number (1-indexed)

minimum: 1
View raw schema
{
  "type": "object",
  "required": [
    "partNumber",
    "etag"
  ],
  "properties": {
    "etag": {
      "type": "string",
      "maxLength": 256,
      "description": "ETag returned when the part was uploaded"
    },
    "partNumber": {
      "type": "integer",
      "minimum": 1,
      "description": "Part sequence number (1-indexed)"
    }
  },
  "description": "Information about a completed upload part"
}

Lexicon Garden

@