openapi: 3.1.0 info: title: concorde artifacts::rest Chunked Upload API description: Upload large files in chunks license: name: UNLICENSED identifier: UNLICENSED version: 0.1.0 tags: - name: Chunked Upload description: Upload large files in chunks paths: /api/v1/upload/init: post: tags: - Chunked Upload summary: Initialize Chunked Upload description: Start a new chunked upload session for large files. Returns a session ID to be used for uploading parts. operationId: Initialize Chunked Upload requestBody: content: application/json: schema: $ref: '#/components/schemas/InitChunkedUploadRequest' required: true responses: '200': description: Upload session created successfully content: application/json: schema: $ref: '#/components/schemas/InitChunkedUploadResponse' /api/v1/upload/part: post: tags: - Chunked Upload summary: Upload Part description: Upload a single part (chunk) of a file to an existing upload session. operationId: Upload Part parameters: - name: session_id in: query description: Upload session identifier required: true schema: type: string - name: part_number in: query description: Part number (1-indexed) required: true schema: type: integer format: int32 minimum: 0 requestBody: description: Binary chunk data content: application/octet-stream: schema: type: array items: type: integer format: int32 minimum: 0 required: true responses: '200': description: Part uploaded successfully /api/v1/upload/abort: delete: tags: - Chunked Upload summary: Abort Chunked Upload description: Cancel an ongoing chunked upload session and clean up any uploaded parts. operationId: Abort Chunked Upload requestBody: content: application/json: schema: $ref: '#/components/schemas/AbortChunkedUploadRequest' required: true responses: '200': description: Upload aborted successfully /api/v1/upload/status: post: tags: - Chunked Upload summary: Get Upload Session Status description: Cancel an ongoing chunked upload session and clean up any uploaded parts. operationId: Get Upload Session Status requestBody: content: application/json: schema: $ref: '#/components/schemas/GetUploadSessionStatusRequest' required: true responses: '200': description: Upload session status retrieved successfully content: application/json: schema: $ref: '#/components/schemas/GetUploadSessionStatusResponse' components: schemas: AbortChunkedUploadRequest: type: object required: - session_id properties: session_id: type: string description: Upload session identifier to abort GetUploadSessionStatusResponse: type: object required: - completed_parts - total_parts_count properties: completed_parts: type: array items: type: integer format: int32 minimum: 0 total_parts_count: type: integer format: int32 minimum: 0 InitChunkedUploadResponse: type: object required: - session_id properties: session_id: type: string description: Unique identifier for the upload session InitChunkedUploadRequest: type: object required: - total_parts_count properties: content_type: type: - string - 'null' description: MIME type of the file being uploaded metadata: type: - object - 'null' description: Custom metadata to attach to the upload session additionalProperties: type: string propertyNames: type: string total_parts_count: type: integer format: int32 description: Total number of parts that will be uploaded minimum: 1 GetUploadSessionStatusRequest: type: object required: - session_id properties: session_id: type: string