Rook Multipart Uploads API

S3-compatible multipart upload operations for large objects, including initiation, part upload, completion, and abort

OpenAPI Specification

rook-multipart-uploads-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Rook Ceph Object Storage Buckets Multipart Uploads API
  description: Rook provisions Ceph Object Storage gateways (Ceph RADOS Gateway / RGW) that expose an S3-compatible REST API for object storage operations. The gateway is managed through Rook CephObjectStore and CephObjectStoreUser Kubernetes CRDs. Applications interact with the object storage using standard S3 API semantics including bucket operations, object CRUD, multipart uploads, access control lists, and presigned URLs. User credentials are provisioned via CephObjectStoreUser CRDs and accessed through Kubernetes Secrets.
  version: 1.0.0
  contact:
    name: Rook Community
    url: https://rook.io/community/
  termsOfService: https://rook.io/
servers:
- url: http://{rgw-host}:{port}
  description: Ceph RADOS Gateway endpoint as provisioned by Rook CephObjectStore
  variables:
    rgw-host:
      default: rook-ceph-rgw-my-store.rook-ceph.svc
      description: Kubernetes Service hostname for the RGW endpoint as created by the CephObjectStore CRD. Format is rook-ceph-rgw-{store-name}.{namespace}.svc
    port:
      default: '80'
      description: Port for the RGW service, typically 80 for HTTP or 443 for HTTPS as configured in the CephObjectStore gateway spec
security:
- s3Auth: []
tags:
- name: Multipart Uploads
  description: S3-compatible multipart upload operations for large objects, including initiation, part upload, completion, and abort
paths:
  /{bucket}?uploads:
    parameters:
    - $ref: '#/components/parameters/BucketParam'
    get:
      operationId: listMultipartUploads
      summary: List In-Progress Multipart Uploads
      description: Returns a list of in-progress multipart uploads for the specified bucket. Useful for identifying and cleaning up incomplete multipart uploads that may be consuming storage quota.
      tags:
      - Multipart Uploads
      parameters:
      - name: uploads
        in: query
        required: true
        schema:
          type: string
          enum:
          - ''
      responses:
        '200':
          description: List of in-progress multipart uploads
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ListMultipartUploadsResult'
        '404':
          description: Bucket not found
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /{bucket}/{key}?uploads:
    parameters:
    - $ref: '#/components/parameters/BucketParam'
    - $ref: '#/components/parameters/KeyParam'
    post:
      operationId: createMultipartUpload
      summary: Initiate a Multipart Upload
      description: Initiates a multipart upload for a large object and returns an upload ID that must be used in subsequent part upload and complete requests. Parts can then be uploaded in parallel using the upload ID. The multipart upload is not visible in the bucket until it is completed with a CompleteMultipartUpload request.
      tags:
      - Multipart Uploads
      parameters:
      - name: uploads
        in: query
        required: true
        schema:
          type: string
          enum:
          - ''
      responses:
        '200':
          description: Multipart upload initiated with upload ID returned
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/InitiateMultipartUploadResult'
        '404':
          description: Bucket not found
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    InitiateMultipartUploadResult:
      type: object
      description: Response to a multipart upload initiation request containing the upload ID needed for subsequent part uploads
      properties:
        Bucket:
          type: string
          description: Name of the bucket where the object will be stored
        Key:
          type: string
          description: Object key for the multipart upload
        UploadId:
          type: string
          description: Unique identifier for this multipart upload, required in all subsequent part upload and complete/abort requests
    ListMultipartUploadsResult:
      type: object
      description: Response listing in-progress multipart uploads for a bucket
      properties:
        Bucket:
          type: string
          description: Name of the bucket
        Upload:
          type: array
          description: List of in-progress multipart upload entries
          items:
            type: object
            properties:
              Key:
                type: string
                description: Object key for the multipart upload
              UploadId:
                type: string
                description: Unique identifier for the multipart upload
              Initiated:
                type: string
                format: date-time
                description: Date and time the multipart upload was initiated
              Initiator:
                type: object
                properties:
                  ID:
                    type: string
                  DisplayName:
                    type: string
    ErrorResponse:
      type: object
      description: S3-compatible error response returned when an operation fails
      properties:
        Code:
          type: string
          description: S3 error code string identifying the type of error, e.g. NoSuchBucket, AccessDenied, InvalidBucketName
        Message:
          type: string
          description: Human-readable description of the error
        Resource:
          type: string
          description: The bucket or object key that caused the error
        RequestId:
          type: string
          description: Unique identifier for the failed request for debugging
  parameters:
    BucketParam:
      name: bucket
      in: path
      required: true
      description: Name of the S3 bucket in the Ceph Object Storage gateway. Must be globally unique within the object store and follow DNS naming conventions.
      schema:
        type: string
        minLength: 3
        maxLength: 63
        pattern: ^[a-z0-9][a-z0-9\-]*[a-z0-9]$
    KeyParam:
      name: key
      in: path
      required: true
      description: Object key (path) within the bucket. Can include forward slashes to simulate a directory hierarchy, with a maximum length of 1024 bytes.
      schema:
        type: string
        minLength: 1
        maxLength: 1024
  securitySchemes:
    s3Auth:
      type: apiKey
      in: header
      name: Authorization
      description: AWS Signature Version 4 (SigV4) or AWS Signature Version 2 authentication using access key and secret key pairs provisioned by CephObjectStoreUser Kubernetes CRDs. Credentials are available in the Kubernetes Secret created by Rook for each CephObjectStoreUser.
externalDocs:
  description: Rook Ceph Object Storage Documentation
  url: https://rook.io/docs/rook/latest/CRDs/Object-Storage/ceph-object-store-crd/