Adaptive ML Chunked Upload API

Upload large files in chunks

OpenAPI Specification

adaptive-ml-chunked-upload-api-openapi.yml Raw ↑
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