lakeFS experimental API

The experimental API from lakeFS — 14 operation(s) for experimental.

Operations 18

POST /auth/external/principal/login perform a login using an external authenticator #
POST /sts/login perform a login with STS #
POST /auth/users/{userId}/external/principals attach external principal to user #
DELETE /auth/users/{userId}/external/principals delete external principal from user #
GET /auth/users/{userId}/external/principals/ls list user external policies attached to a user #
GET /auth/external/principals describe external principal by id #
PUT /repositories/{repository}/branches/{branch}/hard_reset hard reset branch #
POST /repositories/{repository}/branches/{branch}/staging/pmpu Initiate a multipart upload #
PUT /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId} Complete a presign multipart upload request #
DELETE /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId} Abort a presign multipart upload #
PUT /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}/parts/{partNumber} #
PUT /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}/parts/{partNumber}/copy #
PUT /repositories/{repository}/branches/{branch}/objects/stat/user_metadata rewrite (all) object metadata #
GET /repositories/{repository}/pulls list pull requests #
POST /repositories/{repository}/pulls create pull request #
GET /repositories/{repository}/pulls/{pull_request} get pull request #
PATCH /repositories/{repository}/pulls/{pull_request} update pull request #
PUT /repositories/{repository}/pulls/{pull_request}/merge merge pull request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lakefs-experimental-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lakefs-experimental-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: lakeFS HTTP API
  title: lakeFS actions Experimental API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
- url: /api/v1
  description: lakeFS server endpoint
security:
- jwt_token: []
- basic_auth: []
- cookie_auth: []
- oidc_auth: []
- saml_auth: []
tags:
- name: experimental
paths:
  /auth/external/principal/login:
    post:
      tags:
      - experimental
      operationId: externalPrincipalLogin
      summary: perform a login using an external authenticator
      security: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalLoginInformation'
      responses:
        200:
          description: successful external login
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationToken'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        403:
          $ref: '#/components/responses/Forbidden'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /sts/login:
    post:
      tags:
      - experimental
      operationId: stsLogin
      summary: perform a login with STS
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StsAuthRequest'
      responses:
        200:
          description: successful STS login
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationToken'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /auth/users/{userId}/external/principals:
    parameters:
    - in: path
      name: userId
      required: true
      schema:
        type: string
    - in: query
      name: principalId
      required: true
      schema:
        type: string
    post:
      tags:
      - experimental
      operationId: createUserExternalPrincipal
      summary: attach external principal to user
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalPrincipalCreation'
      responses:
        201:
          description: external principal attached successfully
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        409:
          $ref: '#/components/responses/Conflict'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
      - experimental
      operationId: deleteUserExternalPrincipal
      summary: delete external principal from user
      responses:
        204:
          description: external principal detached successfully
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /auth/users/{userId}/external/principals/ls:
    parameters:
    - in: path
      name: userId
      required: true
      schema:
        type: string
    get:
      tags:
      - experimental
      parameters:
      - $ref: '#/components/parameters/PaginationPrefix'
      - $ref: '#/components/parameters/PaginationAfter'
      - $ref: '#/components/parameters/PaginationAmount'
      operationId: listUserExternalPrincipals
      summary: list user external policies attached to a user
      responses:
        200:
          description: external principals list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalPrincipalList'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /auth/external/principals:
    parameters:
    - in: query
      name: principalId
      required: true
      schema:
        type: string
    get:
      tags:
      - experimental
      operationId: getExternalPrincipal
      summary: describe external principal by id
      responses:
        200:
          description: external principal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalPrincipal'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/hard_reset:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
    put:
      tags:
      - experimental
      operationId: hardResetBranch
      summary: hard reset branch
      description: Relocate branch to refer to ref.  Branch must not contain uncommitted data.
      parameters:
      - in: query
        name: ref
        required: true
        schema:
          type: string
        description: After reset, branch will point at this reference.
      - in: query
        name: force
        required: false
        schema:
          type: boolean
          default: false
      responses:
        204:
          description: reset successful
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        403:
          $ref: '#/components/responses/Forbidden'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/staging/pmpu:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
    - in: query
      name: path
      description: relative to the branch
      required: true
      schema:
        type: string
    - in: query
      name: parts
      description: number of presigned URL parts required to upload
      schema:
        type: integer
    post:
      tags:
      - experimental
      operationId: createPresignMultipartUpload
      summary: Initiate a multipart upload
      description: 'Initiates a multipart upload and returns an upload ID with presigned URLs for each part (optional).

        Part numbers starts with 1. Each part except the last one has minimum size depends on the underlying blockstore implementation.

        For example working with S3 blockstore, minimum size is 5MB (excluding the last part).

        '
      responses:
        201:
          description: Presign multipart upload initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PresignMultipartUpload'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
    - in: path
      name: uploadId
      required: true
      schema:
        type: string
    - in: query
      name: path
      description: relative to the branch
      required: true
      schema:
        type: string
    put:
      tags:
      - experimental
      operationId: completePresignMultipartUpload
      summary: Complete a presign multipart upload request
      description: Completes a presign multipart upload by assembling the uploaded parts.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompletePresignMultipartUpload'
      responses:
        200:
          description: Presign multipart upload completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectStats'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        409:
          description: conflict with a commit, try here
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StagingLocation'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
      - experimental
      operationId: abortPresignMultipartUpload
      summary: Abort a presign multipart upload
      description: Aborts a presign multipart upload.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AbortPresignMultipartUpload'
      responses:
        204:
          description: Presign multipart upload aborted
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}/parts/{partNumber}:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
    - in: path
      name: uploadId
      required: true
      schema:
        type: string
    - in: query
      name: path
      required: true
      schema:
        type: string
    - in: path
      name: partNumber
      required: true
      schema:
        type: integer
        maximum: 10000
        minimum: 1
    put:
      tags:
      - experimental
      operationId: uploadPart
      description: Return a presigned URL to upload into a presigned multipart upload.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadPartFrom'
      responses:
        200:
          description: presigned URL to use for upload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadTo'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}/parts/{partNumber}/copy:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
    - in: path
      name: uploadId
      required: true
      schema:
        type: string
    - in: query
      name: path
      required: true
      schema:
        type: string
    - in: path
      name: partNumber
      required: true
      schema:
        type: integer
        maximum: 10000
        minimum: 1
    put:
      tags:
      - experimental
      operationId: uploadPartCopy
      description: Upload a part by copying part of another object.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadPartCopyFrom'
      responses:
        204:
          description: part copied
          headers:
            ETag:
              schema:
                type: string
                description: ETag of the uploaded part, pass in completion
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/branches/{branch}/objects/stat/user_metadata:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: branch
      required: true
      schema:
        type: string
      description: branch to update
    - in: query
      name: path
      description: path to object relative to the branch
      required: true
      schema:
        type: string
    put:
      tags:
      - experimental
      operationId: updateObjectUserMetadata
      summary: rewrite (all) object metadata
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateObjectUserMetadata'
      responses:
        201:
          description: User metadata updated
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        400:
          $ref: '#/components/responses/BadRequest'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/pulls:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    get:
      tags:
      - experimental
      operationId: listPullRequests
      summary: list pull requests
      parameters:
      - $ref: '#/components/parameters/PaginationPrefix'
      - $ref: '#/components/parameters/PaginationAfter'
      - $ref: '#/components/parameters/PaginationAmount'
      - in: query
        name: status
        schema:
          type: string
          enum:
          - open
          - closed
          - all
          default: all
          description: filter pull requests by status
      responses:
        200:
          description: list of pull requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestsList'
        400:
          $ref: '#/components/responses/BadRequest'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
    post:
      tags:
      - experimental
      operationId: createPullRequest
      summary: create pull request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PullRequestCreation'
      responses:
        201:
          description: pull request created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestCreationResponse'
        400:
          $ref: '#/components/responses/ValidationError'
        401:
          $ref: '#/components/responses/Unauthorized'
        403:
          $ref: '#/components/responses/Forbidden'
        404:
          $ref: '#/components/responses/NotFound'
        409:
          $ref: '#/components/responses/Conflict'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/pulls/{pull_request}:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: pull_request
      required: true
      description: pull request id
      schema:
        type: string
    get:
      tags:
      - experimental
      operationId: getPullRequest
      summary: get pull request
      responses:
        200:
          description: pull request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequest'
        400:
          $ref: '#/components/responses/ValidationError'
        401:
          $ref: '#/components/responses/Unauthorized'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
    patch:
      tags:
      - experimental
      operationId: updatePullRequest
      summary: update pull request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PullRequestBasic'
      responses:
        200:
          description: pull request updated successfully
        400:
          $ref: '#/components/responses/ValidationError'
        401:
          $ref: '#/components/responses/Unauthorized'
        403:
          $ref: '#/components/responses/Forbidden'
        404:
          $ref: '#/components/responses/NotFound'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
  /repositories/{repository}/pulls/{pull_request}/merge:
    parameters:
    - in: path
      name: repository
      required: true
      schema:
        type: string
    - in: path
      name: pull_request
      required: true
      description: pull request id
      schema:
        type: string
    put:
      tags:
      - experimental
      operationId: mergePullRequest
      summary: merge pull request
      responses:
        200:
          description: merge completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeResult'
        400:
          $ref: '#/components/responses/ValidationError'
        401:
          $ref: '#/components/responses/Unauthorized'
        403:
          $ref: '#/components/responses/Forbidden'
        404:
          $ref: '#/components/responses/NotFound'
        409:
          description: 'Conflict

            Deprecated: content schema will return Error format and not an empty MergeResult

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeResult'
        412:
          description: precondition failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        429:
          description: too many requests
        default:
          $ref: '#/components/responses/ServerError'
components:
  responses:
    Conflict:
      description: Resource Conflicts With Target
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: Validation Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    PullRequestCreationResponse:
      type: object
      required:
      - id
      properties:
        id:
          type: string
          description: ID of the pull request
    ObjectStats:
      type: object
      required:
      - checksum
      - physical_address
      - path
      - path_type
      - mtime
      properties:
        path:
          type: string
        path_type:
          type: string
          enum:
          - common_prefix
          - object
        physical_address:
          type: string
          description: 'The location of the object on the underlying object store.

            Formatted as a native URI with the object store type as scheme ("s3://...", "gs://...", etc.)

            Or, in the case of presign=true, will be an HTTP URL to be consumed via regular HTTP GET

            '
        physical_address_expiry:
          type: integer
          format: int64
          description: 'If present and nonzero, physical_address is a pre-signed URL and

            will expire at this Unix Epoch time.  This will be shorter than

            the pre-signed URL lifetime if an authentication token is about

            to expire.


            This field is *optional*.

            '
        checksum:
          type: string
        size_bytes:
          type: integer
          format: int64
          description: 'The number of bytes in the object.  lakeFS always populates this

            field when returning ObjectStats.  This field is optional _for

            the client_ to supply, for instance on upload.

            '
        mtime:
          type: integer
          format: int64
          description: Unix Epoch in seconds
        metadata:
          $ref: '#/components/schemas/ObjectUserMetadata'
        content_type:
          type: string
          description: Object media type
    PullRequestCreation:
      type: object
      required:
      - title
      - source_branch
      - destination_branch
      properties:
        title:
          type: string
        description:
          type: string
        source_branch:
          type: string
        destination_branch:
          type: string
    PullRequest:
      allOf:
      - $ref: '#/components/schemas/PullRequestBasic'
      - required:
        - status
        - title
        - description
      - type: object
        required:
        - id
        - creation_date
        - author
        - source_branch
        - destination_branch
        properties:
          id:
            type: string
          creation_date:
            type: string
            format: date-time
          author:
            type: string
          source_branch:
            type: string
          destination_branch:
            type: string
          merged_commit_id:
            type: string
            description: the commit id of merged PRs
          closed_date:
            type: string
            format: date-time
    UploadPartCopyFrom:
      allOf:
      - $ref: '#/components/schemas/UploadPartFrom'
      - type: object
        properties:
          copy_source:
            description: Source of copy
            $ref: '#/components/schemas/CopyPartSource'
        required:
        - copy_source
    StsAuthRequest:
      type: object
      required:
      - code
      - state
      - redirect_uri
      properties:
        code:
          type: string
        state:
          type: string
        redirect_uri:
          type: string
        ttl_seconds:
          type: integer
          format: int64
          description: 'The time-to-live for the generated token in seconds.  The default

            value is 3600 seconds (1 hour) maximum time allowed is 12 hours.

            '
    PullRequestBasic:
      type: object
      properties:
        status:
          type: string
          enum:
          - open
          - closed
          - merged
        title:
          type: string
        description:
          type: string
    ObjectUserMetadata:
      type: object
      additionalProperties:
        type: string
    ExternalPrincipal:
      type: object
      required:
      - user_id
      - id
      properties:
        id:
          type: string
          description: A unique identifier for the external principal i.e aws:sts::123:assumed-role/role-name
        user_id:
          type: string
          description: 'lakeFS user ID to associate with an external principal.

            '
        settings:
          type: object
          items:
            $ref: '#/components/schemas/ExternalPrincipalSettings'
    ExternalPrincipalCreation:
      type: object
      properties:
        settings:
          type: object
          items:
            $ref: '#/components/schemas/ExternalPrincipalSettings'
    PresignMultipartUpload:
      type: object
      properties:
        upload_id:
          type: string
        physical_address:
          type: string
        presigned_urls:
          type: array
          items:
            type: string
      required:
      - upload_id
      - physical_address
    CopyPartSource:
      type: object
      properties:
        repository:
          type: string
        ref:
          type: string
        path:
          type: string
        range:
          description: Range of bytes to copy
          type: string
          pattern: ^bytes=((\d*-\d*,? ?)+)$
      required:
      - repository
      - ref
      - path
    ExternalLoginInformation:
      type: object
      required:
      - identityRequest
      properties:
        token_expiration_duration:
          type: integer
        identityRequest:
          type: object
    StagingLocation:
      type: object
      description: location for placing an object when staging it
      properties:
        physical_address:
          type: string
        presigned_url:
          type:
          - string
          - 'null'
          description: if presign=true is passed in the request, this field will contain a pre-signed URL to use when uploading
        presigned_url_expiry:
          type: integer
          format: int64
          description: 'If present and nonzero, physical_address is a pre-signed URL and

            will expire at this Unix Epoch time.  This will be shorter than

            the pre-signed URL lifetime if an authentication token is about

            to expire.


            This field is *optional*.

            '
    ExternalPrincipalSettings:
      type: object
      additionalProperties:
        type: string
      description: Additional settings to be consumed by the remote authenticator
    CompletePresignMultipartUpload:
      type: object
      properties:
        physical_address:
          type: string
        parts:
          type: array
          description: List of uploaded parts, should be ordered by ascending part number
          items:
            $ref: '#/components/schemas/UploadPart'
        user_metadata:
          type: object
          additionalProperties:
            type: string
        content_type:
          type: string
          description: Object media type
      required:
      - physical_address
      - parts
    Error:
      type: object
      required:
      - message
      properties:
        message:
          description: short message explaining the error
          type: string
    PullRequestsList:
      type: object
      required:
      - pagination
      - results
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        results:
          type: array
          items:
            $ref: '#/components/schemas/PullRequest'
    Pagination:
      type: object
      required:
      - has_more
      - max_per_page
      - results
      - next_offset
      properties:
        has_more:
          type: boolean
          description: Next page is available
        next_offset:
          type: string
          description: Token used to retrieve the next page
        results:
          type: integer
          minimum: 0
          description: Number of values found in the results
        max_per_page:
          type: integer
          minimum: 0
          description: Maximal number of entries per page
    AbortPresignMultipartUpload:
      type: object
      properties:
        physical_address:
          type: string
      required:
      - physical_address
    UploadPart:
      type: object
      properties:
        part_number:
          type: integer
        etag:
          type: string
      required:
      - part_number
      - etag
    UploadPartFrom:
      type: object
      properties:
        physical_address:
          description: 'The physical address (of the entire intended object) returned from

            createPresignMultipartUpload.

            '
          type: string
      required:
      - physical_address
    MergeResult:
      type: object
      required:
      - reference
      properties:
        reference:
          type: string
    UpdateObjectUserMetadata:
      type: object
      required:
      - set
      properties:
        set:
          description: Set this object user metadata
          $ref: '#/components/schemas/ObjectUserMetadata'
    ExternalPrincipalList:
      type: object
      required:
      - pagination
      - results
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExternalPrincipal'
    UploadTo:
      type: object
      properties:
        presigned_url:
          type: string
      required:
      - presigned_url
    AuthenticationToken:
      type: object
      required:
      - token
      properties:
        token:
          description: a JWT token that could be used to authenticate requests
          type: string
        token_expiration:
          type: integer
          format: int64
          description: Unix Epoch in seconds
  parameters:
    PaginationAfter:
      in: query
      name: after
      description: return items after this value
      allowEmptyValue: true
      schema:
        type: string
    PaginationPrefix:
      in: query
      name: prefix
      allowEmptyValue: true
      description: return items prefixed with this value
      schema:
        type: string
    PaginationAmount:
      in: query
      name: amount
      description: how many items to return
      schema:
        type: integer
        minimum: -1
        maximum: 1000
        default: 100
  securitySchemes:
    basic_auth:
      type: http
      scheme: basic
    jwt_token:
      type: http
      scheme: bearer
      bearerFormat: JWT
    cookie_auth:
      type: apiKey
      in: cookie
      name: internal_auth_session
    oidc_auth:
      type: apiKey
      in: cookie
      name: oidc_auth_session
    saml_auth:
      type: apiKey
      in: cookie
      name: saml_auth_session