Tigris Multipart API

S3-compatible multipart upload operations for large objects.

OpenAPI Specification

tigris-data-multipart-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Tigris Object Storage (S3-Compatible) Buckets Multipart API
  description: 'Specification of the Tigris globally distributed object storage API. Tigris is compatible with the AWS S3 API, so the standard AWS S3 SDKs, tools, and libraries work unchanged against the Tigris endpoint at https://t3.storage.dev (the legacy host fly.storage.tigris.dev still resolves). Requests are authenticated with AWS Signature Version 4 using a Tigris access key id (tid_...) and secret access key (tsec_...). This document models the documented, supported subset of the S3 surface: bucket management, object CRUD, multipart upload, object tagging, storage-class tiering, and the path-style operations that back presigned URLs. The companion AWS IAM-compatible API is served at https://iam.storage.dev. Tigris is region-agnostic - use region "auto".'
  termsOfService: https://www.tigrisdata.com/docs/legal/terms-of-service/
  contact:
    name: Tigris Support
    url: https://www.tigrisdata.com/docs/support/
    email: support@tigrisdata.com
  version: '2026-06-20'
servers:
- url: https://t3.storage.dev
  description: Tigris global S3-compatible object storage endpoint (region auto)
- url: https://fly.storage.tigris.dev
  description: Legacy Tigris endpoint hostname (still supported)
security:
- sigv4: []
tags:
- name: Multipart
  description: S3-compatible multipart upload operations for large objects.
paths:
  /{bucket}/{key}#uploads:
    parameters:
    - $ref: '#/components/parameters/Bucket'
    - $ref: '#/components/parameters/Key'
    post:
      operationId: createMultipartUpload
      tags:
      - Multipart
      summary: Initiate a multipart upload (CreateMultipartUpload).
      description: Operates on the object ?uploads subresource and returns an UploadId.
      parameters:
      - name: x-amz-storage-class
        in: header
        schema:
          type: string
          enum:
          - STANDARD
          - STANDARD_IA
          - GLACIER
          - GLACIER_IR
      responses:
        '200':
          description: Multipart upload initiated; UploadId returned.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/InitiateMultipartUploadResult'
  /{bucket}/{key}#partNumber:
    parameters:
    - $ref: '#/components/parameters/Bucket'
    - $ref: '#/components/parameters/Key'
    put:
      operationId: uploadPart
      tags:
      - Multipart
      summary: Upload one part of a multipart upload (UploadPart / UploadPartCopy).
      parameters:
      - name: partNumber
        in: query
        required: true
        schema:
          type: integer
      - name: uploadId
        in: query
        required: true
        schema:
          type: string
      - name: x-amz-copy-source
        in: header
        description: Source for an UploadPartCopy.
        schema:
          type: string
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Part stored; ETag returned for use in CompleteMultipartUpload.
  /{bucket}/{key}#complete:
    parameters:
    - $ref: '#/components/parameters/Bucket'
    - $ref: '#/components/parameters/Key'
    post:
      operationId: completeMultipartUpload
      tags:
      - Multipart
      summary: Complete a multipart upload (CompleteMultipartUpload).
      parameters:
      - name: uploadId
        in: query
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/xml:
            schema:
              $ref: '#/components/schemas/CompleteMultipartUpload'
      responses:
        '200':
          description: Upload assembled into a single object.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/CompleteMultipartUploadResult'
    get:
      operationId: listParts
      tags:
      - Multipart
      summary: List the uploaded parts of a multipart upload (ListParts).
      parameters:
      - name: uploadId
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Parts listing returned as S3 XML.
    delete:
      operationId: abortMultipartUpload
      tags:
      - Multipart
      summary: Abort a multipart upload and discard its parts (AbortMultipartUpload).
      parameters:
      - name: uploadId
        in: query
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Multipart upload aborted.
  /{bucket}#uploads:
    parameters:
    - $ref: '#/components/parameters/Bucket'
    get:
      operationId: listMultipartUploads
      tags:
      - Multipart
      summary: List in-progress multipart uploads in a bucket (ListMultipartUploads).
      responses:
        '200':
          description: In-progress multipart uploads returned as S3 XML.
components:
  schemas:
    CompleteMultipartUpload:
      type: object
      properties:
        Parts:
          type: array
          items:
            type: object
            properties:
              PartNumber:
                type: integer
              ETag:
                type: string
    InitiateMultipartUploadResult:
      type: object
      properties:
        Bucket:
          type: string
        Key:
          type: string
        UploadId:
          type: string
    CompleteMultipartUploadResult:
      type: object
      properties:
        Location:
          type: string
        Bucket:
          type: string
        Key:
          type: string
        ETag:
          type: string
  parameters:
    Key:
      name: key
      in: path
      required: true
      description: Object key. May contain slashes to emulate a directory hierarchy.
      schema:
        type: string
    Bucket:
      name: bucket
      in: path
      required: true
      description: Bucket name (also usable as a virtual-host subdomain of t3.storage.dev).
      schema:
        type: string
  securitySchemes:
    sigv4:
      type: apiKey
      in: header
      name: Authorization
      description: AWS Signature Version 4 request signing. Clients sign each request with a Tigris access key id (AWS_ACCESS_KEY_ID=tid_...) and secret access key (AWS_SECRET_ACCESS_KEY=tsec_...); the signature is carried in the standard Authorization header (or query string for presigned URLs). Use service name "s3" and region "auto". Any AWS SDK / SigV4 signer produces a compatible signature.