github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/docs/assets/js/swagger.yml (about)

     1  openapi: "3.0.0"
     2  
     3  info:
     4    description: lakeFS HTTP API
     5    title: lakeFS API
     6    license:
     7      name: "Apache 2.0"
     8      url: https://www.apache.org/licenses/LICENSE-2.0.html
     9    version: 1.0.0
    10  
    11  servers:
    12    - url: "/api/v1"
    13      description: lakeFS server endpoint
    14  security:
    15    - jwt_token: []
    16    - basic_auth: []
    17    - cookie_auth: []
    18    - oidc_auth: []
    19    - saml_auth: []
    20  components:
    21    securitySchemes:
    22      basic_auth:
    23        type: http
    24        scheme: basic
    25      jwt_token:
    26        type: http
    27        scheme: bearer
    28        bearerFormat: JWT
    29      cookie_auth:
    30        type: apiKey
    31        in: cookie
    32        name: internal_auth_session
    33      oidc_auth:
    34        type: apiKey
    35        in: cookie
    36        name: oidc_auth_session
    37      saml_auth:
    38        type: apiKey
    39        in: cookie
    40        name: saml_auth_session
    41  
    42    parameters:
    43      PaginationPrefix:
    44        in: query
    45        name: prefix
    46        description: return items prefixed with this value
    47        schema:
    48          type: string
    49  
    50      PaginationAfter:
    51        in: query
    52        name: after
    53        description: return items after this value
    54        schema:
    55          type: string
    56  
    57      PaginationAmount:
    58        in: query
    59        name: amount
    60        description: how many items to return
    61        schema:
    62          type: integer
    63          minimum: -1
    64          maximum: 1000
    65          default: 100
    66  
    67      PaginationDelimiter:
    68        in: query
    69        name: delimiter
    70        description: delimiter used to group common prefixes by
    71        schema:
    72          type: string
    73      
    74      IfNoneMatch:
    75        in: header
    76        name: If-None-Match
    77        description: Set to "*" to atomically allow the upload only if the key has no object yet. Other values are not supported.
    78        example: "*"
    79        required: false
    80        schema:
    81          type: string
    82  
    83    responses:
    84      NotFoundOrNoACL:
    85        description: Group not found, or group found but has no ACL
    86        content:
    87          application/json:
    88            schema:
    89              $ref: "#/components/schemas/ErrorNoACL"
    90  
    91      Unauthorized:
    92        description: Unauthorized
    93        content:
    94          application/json:
    95            schema:
    96              $ref: "#/components/schemas/Error"
    97      ServerError:
    98        description: Internal Server Error
    99        content:
   100          application/json:
   101            schema:
   102              $ref: "#/components/schemas/Error"
   103      NotFound:
   104        description: Resource Not Found
   105        content:
   106          application/json:
   107            schema:
   108              $ref: "#/components/schemas/Error"
   109      Conflict:
   110        description: Resource Conflicts With Target
   111        content:
   112          application/json:
   113            schema:
   114              $ref: "#/components/schemas/Error"
   115      PreconditionFailed:
   116        description: Precondition Failed
   117        content:
   118          application/json:
   119            schema:
   120              $ref: "#/components/schemas/Error"
   121      BadRequest:
   122        description: Bad Request
   123        content:
   124          application/json:
   125            schema:
   126              $ref: "#/components/schemas/Error"
   127      Forbidden:
   128        description: Forbidden
   129        content:
   130          application/json:
   131            schema:
   132              $ref: "#/components/schemas/Error"
   133      ValidationError:
   134        description: Validation Error
   135        content:
   136          application/json:
   137            schema:
   138              $ref: "#/components/schemas/Error"
   139  
   140    schemas:
   141      Pagination:
   142        type: object
   143        required:
   144          - has_more
   145          - max_per_page
   146          - results
   147          - next_offset
   148        properties:
   149          has_more:
   150            type: boolean
   151            description: Next page is available
   152          next_offset:
   153            type: string
   154            description: Token used to retrieve the next page
   155          results:
   156            type: integer
   157            minimum: 0
   158            description: Number of values found in the results
   159          max_per_page:
   160            type: integer
   161            minimum: 0
   162            description: Maximal number of entries per page
   163  
   164      Repository:
   165        type: object
   166        required:
   167          - creation_date
   168          - id
   169          - default_branch
   170          - storage_namespace
   171        properties:
   172          id:
   173            type: string
   174          creation_date:
   175            type: integer
   176            format: int64
   177            description: Unix Epoch in seconds
   178          default_branch:
   179            type: string
   180          storage_namespace:
   181            type: string
   182            description: Filesystem URI to store the underlying data in (e.g. "s3://my-bucket/some/path/")
   183          read_only:
   184            type: boolean
   185            description: Whether the repository is a read-only repository- not relevant for bare repositories
   186  
   187      RepositoryMetadata:
   188        type: object
   189        additionalProperties:
   190          type: string
   191  
   192      RepositoryMetadataSet:
   193        type: object
   194        required:
   195          - metadata
   196        properties:
   197          metadata:
   198            type: object
   199            additionalProperties:
   200              type: string
   201  
   202      RepositoryMetadataKeys:
   203        type: object
   204        required:
   205          - keys
   206        properties:
   207          keys:
   208            type: array
   209            items:
   210              type: string
   211              description: metadata key
   212  
   213      RepositoryList:
   214        type: object
   215        required:
   216          - pagination
   217          - results
   218        properties:
   219          pagination:
   220            $ref: "#/components/schemas/Pagination"
   221          results:
   222            type: array
   223            items:
   224              $ref: "#/components/schemas/Repository"
   225  
   226      FindMergeBaseResult:
   227        type: object
   228        required:
   229          - source_commit_id
   230          - destination_commit_id
   231          - base_commit_id
   232        properties:
   233          source_commit_id:
   234            type: string
   235            description: "The commit ID of the merge source"
   236          destination_commit_id:
   237            type: string
   238            description: "The commit ID of the merge destination"
   239          base_commit_id:
   240            type: string
   241            description: "The commit ID of the merge base"
   242  
   243      MergeResult:
   244        type: object
   245        required:
   246          - reference
   247        properties:
   248          reference:
   249            type: string
   250  
   251      RepositoryCreation:
   252        type: object
   253        required:
   254          - name
   255          - storage_namespace
   256        properties:
   257          name:
   258            type: string
   259            pattern: "^[a-z0-9][a-z0-9-]{2,62}$"
   260          storage_namespace:
   261            type: string
   262            description: 'Filesystem URI to store the underlying data in (e.g. "s3://my-bucket/some/path/")'
   263            example: "s3://example-bucket/"
   264            pattern: "^(s3|gs|https?|mem|local|transient)://.*$"
   265          default_branch:
   266            type: string
   267            example: "main"
   268          sample_data:
   269            type: boolean
   270            example: "true"
   271            default: false
   272          read_only:
   273            type: boolean
   274            example: "true"
   275            default: false
   276  
   277      PathList:
   278        type: object
   279        required:
   280          - paths
   281        properties:
   282          paths:
   283            type: array
   284            items:
   285              type: string
   286              description: Object path
   287  
   288      ObjectStats:
   289        type: object
   290        required:
   291          - checksum
   292          - physical_address
   293          - path
   294          - path_type
   295          - mtime
   296        properties:
   297          path:
   298            type: string
   299          path_type:
   300            type: string
   301            enum: [common_prefix, object]
   302          physical_address:
   303            type: string
   304            description: |
   305              The location of the object on the underlying object store.
   306              Formatted as a native URI with the object store type as scheme ("s3://...", "gs://...", etc.)
   307              Or, in the case of presign=true, will be an HTTP URL to be consumed via regular HTTP GET
   308          physical_address_expiry:
   309            type: integer
   310            format: int64
   311            description: |
   312              If present and nonzero, physical_address is a pre-signed URL and
   313              will expire at this Unix Epoch time.  This will be shorter than
   314              the pre-signed URL lifetime if an authentication token is about
   315              to expire.
   316  
   317              This field is *optional*.
   318          checksum:
   319            type: string
   320          size_bytes:
   321            type: integer
   322            format: int64
   323          mtime:
   324            type: integer
   325            format: int64
   326            description: Unix Epoch in seconds
   327          metadata:
   328            $ref: "#/components/schemas/ObjectUserMetadata"
   329          content_type:
   330            type: string
   331            description: Object media type
   332  
   333      ObjectStatsList:
   334        type: object
   335        required:
   336          - pagination
   337          - results
   338        properties:
   339          pagination:
   340            $ref: "#/components/schemas/Pagination"
   341          results:
   342            type: array
   343            items:
   344              $ref: "#/components/schemas/ObjectStats"
   345  
   346      ObjectCopyCreation:
   347        type: object
   348        required:
   349          - src_path
   350        properties:
   351          src_path:
   352            type: string
   353            description: path of the copied object relative to the ref
   354          src_ref:
   355            type: string
   356            description: a reference, if empty uses the provided branch as ref
   357          force:
   358            type: boolean
   359            default: false
   360  
   361      ObjectStageCreation:
   362        type: object
   363        required:
   364          - physical_address
   365          - checksum
   366          - size_bytes
   367        properties:
   368          physical_address:
   369            type: string
   370          checksum:
   371            type: string
   372          size_bytes:
   373            type: integer
   374            format: int64
   375          mtime:
   376            type: integer
   377            format: int64
   378            description: Unix Epoch in seconds
   379          metadata:
   380            $ref: "#/components/schemas/ObjectUserMetadata"
   381          content_type:
   382            type: string
   383            description: Object media type
   384          force:
   385            type: boolean
   386            default: false
   387  
   388      ObjectUserMetadata:
   389        type: object
   390        additionalProperties:
   391          type: string
   392  
   393      UnderlyingObjectProperties:
   394        type: object
   395        properties:
   396          storage_class:
   397            type: string
   398            nullable: true
   399      Ref:
   400        type: object
   401        required:
   402          - id
   403          - commit_id
   404        properties:
   405          id:
   406            type: string
   407          commit_id:
   408            type: string
   409  
   410      RefList:
   411        type: object
   412        required:
   413          - pagination
   414          - results
   415        properties:
   416          pagination:
   417            $ref: "#/components/schemas/Pagination"
   418          results:
   419            type: array
   420            items:
   421              $ref: "#/components/schemas/Ref"
   422  
   423      Diff:
   424        type: object
   425        required:
   426          - type
   427          - path
   428          - path_type
   429        properties:
   430          type:
   431            type: string
   432            enum: [added, removed, changed, conflict, prefix_changed]
   433          path:
   434            type: string
   435          path_type:
   436            type: string
   437            enum: [common_prefix, object]
   438          size_bytes:
   439            type: integer
   440            description: represents the size of the added/changed/deleted entry
   441            format: int64
   442  
   443      DiffList:
   444        type: object
   445        required:
   446          - pagination
   447          - results
   448        properties:
   449          pagination:
   450            $ref: "#/components/schemas/Pagination"
   451          results:
   452            type: array
   453            items:
   454              $ref: "#/components/schemas/Diff"
   455  
   456      ResetCreation:
   457        type: object
   458        required:
   459          - type
   460        properties:
   461          type:
   462            type: string
   463            enum: [object, common_prefix, reset]
   464            description: What to reset according to path.
   465          path:
   466            type: string
   467          force:
   468            type: boolean
   469            default: false
   470  
   471      RevertCreation:
   472        type: object
   473        required:
   474          - parent_number
   475          - ref
   476        properties:
   477          ref:
   478            type: string
   479            description: the commit to revert, given by a ref
   480          parent_number:
   481            type: integer
   482            description: when reverting a merge commit, the parent number (starting from 1) relative to which to perform the revert.
   483          force:
   484            type: boolean
   485            default: false
   486          allow_empty:
   487            type: boolean
   488            default: false
   489            description: allow empty commit (revert without changes)
   490  
   491      CherryPickCreation:
   492        type: object
   493        required:
   494          - ref
   495        properties:
   496          ref:
   497            type: string
   498            description: the commit to cherry-pick, given by a ref
   499          parent_number:
   500            type: integer
   501            description: |
   502              When cherry-picking a merge commit, the parent number (starting from 1) with which to perform the diff.
   503              The default branch is parent 1.
   504          force:
   505            type: boolean
   506            default: false
   507  
   508      Commit:
   509        type: object
   510        required:
   511          - id
   512          - parents
   513          - committer
   514          - message
   515          - creation_date
   516          - meta_range_id
   517        properties:
   518          id:
   519            type: string
   520          parents:
   521            type: array
   522            items:
   523              type: string
   524          committer:
   525            type: string
   526          message:
   527            type: string
   528          creation_date:
   529            type: integer
   530            format: int64
   531            description: Unix Epoch in seconds
   532          meta_range_id:
   533            type: string
   534          metadata:
   535            type: object
   536            additionalProperties:
   537              type: string
   538          generation:
   539            type: integer
   540            format: int64
   541          version:
   542            type: integer
   543            minimum: 0
   544            maximum: 1
   545  
   546      CommitList:
   547        type: object
   548        required:
   549          - pagination
   550          - results
   551        properties:
   552          pagination:
   553            $ref: "#/components/schemas/Pagination"
   554          results:
   555            type: array
   556            items:
   557              $ref: "#/components/schemas/Commit"
   558  
   559      CommitCreation:
   560        type: object
   561        required:
   562          - message
   563        properties:
   564          message:
   565            type: string
   566          metadata:
   567            type: object
   568            additionalProperties:
   569              type: string
   570          date:
   571            description: set date to override creation date in the commit (Unix Epoch in seconds)
   572            type: integer
   573            format: int64
   574          allow_empty:
   575            description: sets whether a commit can contain no changes
   576            type: boolean
   577            default: false
   578          force:
   579            type: boolean
   580            default: false
   581  
   582      CommitRecordCreation:
   583        type: object
   584        required:
   585          - commit_id
   586          - version
   587          - committer
   588          - message
   589          - metarange_id
   590          - creation_date
   591          - parents
   592          - generation
   593        properties:
   594          commit_id:
   595            type: string
   596            description: id of the commit record
   597          version:
   598            type: integer
   599            minimum: 0
   600            maximum: 1
   601            description: version of the commit record
   602          committer:
   603            type: string
   604            description: committer of the commit record
   605          message:
   606            type: string
   607            description: message of the commit record
   608          metarange_id:
   609            type: string
   610            description: metarange_id of the commit record
   611          creation_date:
   612            type: integer
   613            format: int64
   614            description: Unix Epoch in seconds
   615          parents:
   616            type: array
   617            items:
   618              type: string
   619            description: parents of the commit record
   620          metadata:
   621            type: object
   622            additionalProperties:
   623              type: string
   624            description: metadata of the commit record
   625          generation:
   626            type: integer
   627            format: int64
   628            description: generation of the commit record
   629          force:
   630            type: boolean
   631            default: false
   632  
   633      Merge:
   634        type: object
   635        properties:
   636          message:
   637            type: string
   638          metadata:
   639            type: object
   640            additionalProperties:
   641              type: string
   642          strategy:
   643            description: In case of a merge conflict, this option will force the merge process to automatically favor changes from the dest branch ('dest-wins') or from the source branch('source-wins'). In case no selection is made, the merge process will fail in case of a conflict
   644            type: string
   645          force:
   646            type: boolean
   647            default: false
   648  
   649      BranchCreation:
   650        type: object
   651        required:
   652          - name
   653          - source
   654        properties:
   655          name:
   656            type: string
   657          source:
   658            type: string
   659          force:
   660            type: boolean
   661            default: false
   662  
   663      TagCreation:
   664        type: object
   665        description: Make tag ID point at this REF.
   666        required:
   667          - id
   668          - ref
   669        properties:
   670          id:
   671            type: string
   672            description: ID of tag to create
   673          ref:
   674            type: string
   675            description: the commit to tag
   676          force:
   677            type: boolean
   678            default: false
   679  
   680      TaskInfo:
   681        type: object
   682        required:
   683          - id
   684        properties:
   685          id:
   686            type: string
   687            description: ID of the task
   688  
   689      RepositoryDumpStatus:
   690        type: object
   691        required:
   692          - id
   693          - done
   694          - update_time
   695        properties:
   696          id:
   697            type: string
   698            description: ID of the task
   699          done:
   700            type: boolean
   701          update_time:
   702            type: string
   703            format: date-time
   704          error:
   705            type: string
   706          refs:
   707              $ref: "#/components/schemas/RefsDump"
   708  
   709      RepositoryRestoreStatus:
   710        type: object
   711        required:
   712          - id
   713          - done
   714          - update_time
   715        properties:
   716          id:
   717            type: string
   718            description: ID of the task
   719          done:
   720            type: boolean
   721          update_time:
   722            type: string
   723            format: date-time
   724          error:
   725            type: string
   726  
   727      RefsDump:
   728        type: object
   729        required:
   730          - branches_meta_range_id
   731          - tags_meta_range_id
   732          - commits_meta_range_id
   733        properties:
   734          commits_meta_range_id:
   735            type: string
   736          tags_meta_range_id:
   737            type: string
   738          branches_meta_range_id:
   739            type: string
   740  
   741      RefsRestore:
   742        type: object
   743        required:
   744          - branches_meta_range_id
   745          - tags_meta_range_id
   746          - commits_meta_range_id
   747        properties:
   748          commits_meta_range_id:
   749            type: string
   750          tags_meta_range_id:
   751            type: string
   752          branches_meta_range_id:
   753            type: string
   754          force:
   755            type: boolean
   756            default: false
   757  
   758      StorageURI:
   759        description: URI to a path in a storage provider (e.g. "s3://bucket1/path/to/object")
   760        required:
   761          - location
   762        type: object
   763        properties:
   764          location:
   765            type: string
   766  
   767      Error:
   768        type: object
   769        required:
   770          - message
   771        properties:
   772          message:
   773            description: short message explaining the error
   774            type: string
   775  
   776      ObjectError:
   777        type: object
   778        required:
   779          - status_code
   780          - message
   781        properties:
   782          status_code:
   783            type: integer
   784            description: HTTP status code associated for operation on path
   785          message:
   786            type: string
   787            description: short message explaining status_code
   788          path:
   789            type: string
   790            description: affected path
   791  
   792      ObjectErrorList:
   793        type: object
   794        required:
   795          - errors
   796        properties:
   797          errors:
   798            type: array
   799            items:
   800              $ref: "#/components/schemas/ObjectError"
   801  
   802      ErrorNoACL:
   803        type: object
   804        required:
   805          - message
   806        properties:
   807          message:
   808            description: short message explaining the error
   809            type: string
   810          no_acl:
   811            description: "true if the group exists but has no ACL"
   812            type: boolean
   813  
   814      User:
   815        type: object
   816        required:
   817          - id
   818          - creation_date
   819        properties:
   820          id:
   821            type: string
   822            description: A unique identifier for the user. Cannot be edited.
   823          creation_date:
   824            type: integer
   825            format: int64
   826            description: Unix Epoch in seconds
   827          friendly_name:
   828            type: string
   829            description: |
   830              A shorter name for the user than the id. Unlike id it does not identify the user (it
   831              might not be unique). Used in some places in the UI.
   832          email:
   833            type: string
   834            description: |
   835              The email address of the user. If API authentication is enabled, this field is mandatory and will be invited to login.
   836              If API authentication is disabled, this field will be ignored. All current APIAuthenticators require the email to be 
   837              lowercase and unique, although custom authenticators may not enforce this.
   838  
   839      CurrentUser:
   840        type: object
   841        required:
   842          - user
   843        properties:
   844          user:
   845            $ref: "#/components/schemas/User"
   846  
   847      UserCreation:
   848        type: object
   849        properties:
   850          id:
   851            type: string
   852            description: a unique identifier for the user.
   853          invite_user:
   854            type: boolean
   855        required:
   856          - id
   857  
   858      LoginConfig:
   859        type: object
   860        properties:
   861          RBAC:
   862            description: |
   863              RBAC will remain enabled on GUI if "external".  That only works
   864              with an external auth service.
   865            type: string
   866            enum: [simplified, external]
   867          login_url:
   868            description: primary URL to use for login.
   869            type: string
   870          login_failed_message:
   871            description: |
   872              message to display to users who fail to login; a full sentence that is rendered
   873              in HTML and may contain a link to a secondary login method
   874            type: string
   875          fallback_login_url:
   876            description: secondary URL to offer users to use for login.
   877            type: string
   878          fallback_login_label:
   879            description: label to place on fallback_login_url.
   880            type: string
   881          login_cookie_names:
   882            description: cookie names used to store JWT
   883            type: array
   884            items:
   885              type: string
   886          logout_url:
   887            description: URL to use for logging out.
   888            type: string
   889        required:
   890          - login_url
   891          - login_cookie_names
   892          - logout_url
   893  
   894      SetupState:
   895        type: object
   896        properties:
   897          state:
   898            type: string
   899            enum: [initialized, not_initialized]
   900          comm_prefs_missing:
   901            type: boolean
   902            description: true if the comm prefs are missing.
   903          login_config:
   904            $ref: "#/components/schemas/LoginConfig"
   905      AccessKeyCredentials:
   906        type: object
   907        properties:
   908          # Example values as seen on
   909          # https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
   910          access_key_id:
   911            description: access key ID to set for user for use in integration testing.
   912            example: AKIAIOSFODNN7EXAMPLE
   913            type: string
   914            minLength: 1
   915          secret_access_key:
   916            description: secret access key to set for user for use in integration testing.
   917            example: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   918            type: string
   919            minLength: 1
   920        required:
   921          - access_key_id
   922          - secret_access_key
   923  
   924      Setup:
   925        type: object
   926        properties:
   927          username:
   928            description: an identifier for the user (e.g. jane.doe)
   929            type: string
   930          key:
   931            $ref: "#/components/schemas/AccessKeyCredentials"
   932        required:
   933          - username
   934  
   935      CommPrefsInput:
   936        type: object
   937        properties:
   938          email:
   939            description: the provided email
   940            type: string
   941          featureUpdates:
   942            description: user preference to receive feature updates
   943            type: boolean
   944          securityUpdates:
   945            description: user preference to receive security updates
   946            type: boolean
   947        required:
   948          - featureUpdates
   949          - securityUpdates
   950  
   951  
   952      Credentials:
   953        type: object
   954        required:
   955          - creation_date
   956          - access_key_id
   957        properties:
   958          access_key_id:
   959            type: string
   960          creation_date:
   961            type: integer
   962            format: int64
   963            description: Unix Epoch in seconds
   964  
   965      CredentialsList:
   966        type: object
   967        required:
   968          - pagination
   969          - results
   970        properties:
   971          pagination:
   972            $ref: "#/components/schemas/Pagination"
   973          results:
   974            type: array
   975            items:
   976              $ref: "#/components/schemas/Credentials"
   977  
   978      CredentialsWithSecret:
   979        type: object
   980        required:
   981          - access_key_id
   982          - creation_date
   983          - secret_access_key
   984        properties:
   985          access_key_id:
   986            type: string
   987          secret_access_key:
   988            type: string
   989          creation_date:
   990            type: integer
   991            format: int64
   992            description: Unix Epoch in seconds
   993  
   994      Group:
   995        type: object
   996        required:
   997          - creation_date
   998          - id
   999        properties:
  1000          id:
  1001            type: string
  1002          name:
  1003            type: string
  1004          creation_date:
  1005            type: integer
  1006            format: int64
  1007            description: Unix Epoch in seconds
  1008  
  1009      GroupList:
  1010        type: object
  1011        required:
  1012          - results
  1013          - pagination
  1014        properties:
  1015          pagination:
  1016            $ref: "#/components/schemas/Pagination"
  1017          results:
  1018            type: array
  1019            items:
  1020              $ref: "#/components/schemas/Group"
  1021  
  1022      AuthCapabilities:
  1023        type: object
  1024        properties:
  1025          invite_user:
  1026            type: boolean
  1027          forgot_password:
  1028            type: boolean
  1029  
  1030      UserList:
  1031        type: object
  1032        required:
  1033          - pagination
  1034          - results
  1035        properties:
  1036          pagination:
  1037            $ref: "#/components/schemas/Pagination"
  1038          results:
  1039            type: array
  1040            items:
  1041              $ref: "#/components/schemas/User"
  1042  
  1043      LoginInformation:
  1044        type: object
  1045        required:
  1046          - access_key_id
  1047          - secret_access_key
  1048        properties:
  1049          access_key_id:
  1050            type: string
  1051          secret_access_key:
  1052            type: string
  1053  
  1054      ExternalLoginInformation:
  1055        type: object
  1056        required:
  1057          - identityRequest
  1058        properties:
  1059          token_expiration_duration:
  1060            type: integer
  1061          identityRequest:
  1062            type: object
  1063  
  1064      StsAuthRequest:
  1065        type: object
  1066        required:
  1067          - code
  1068          - state
  1069          - redirect_uri
  1070        properties:
  1071          code:
  1072            type: string
  1073          state:
  1074            type: string
  1075          redirect_uri:
  1076            type: string
  1077          ttl_seconds:
  1078            type: integer
  1079            format: int64
  1080            description: |
  1081              The time-to-live for the generated token in seconds.  The default
  1082              value is 3600 seconds (1 hour) maximum time allowed is 12 hours.
  1083      AuthenticationToken:
  1084        type: object
  1085        required:
  1086          - token
  1087        properties:
  1088          token:
  1089            description: a JWT token that could be used to authenticate requests
  1090            type: string
  1091          token_expiration:
  1092            type: integer
  1093            format: int64
  1094            description: Unix Epoch in seconds
  1095  
  1096      GroupCreation:
  1097        type: object
  1098        required:
  1099          - id
  1100        properties:
  1101          id:
  1102            type: string
  1103  
  1104      Statement:
  1105        type: object
  1106        required:
  1107          - effect
  1108          - resource
  1109          - action
  1110        properties:
  1111          effect:
  1112            type: string
  1113            enum: [allow, deny]
  1114          resource:
  1115            type: string
  1116          action:
  1117            type: array
  1118            items:
  1119              type: string
  1120            minItems: 1
  1121  
  1122      Policy:
  1123        type: object
  1124        required:
  1125          - id
  1126          - statement
  1127        properties:
  1128          id:
  1129            type: string
  1130          creation_date:
  1131            type: integer
  1132            format: int64
  1133            description: Unix Epoch in seconds
  1134          statement:
  1135            type: array
  1136            items:
  1137              $ref: "#/components/schemas/Statement"
  1138            minItems: 1
  1139  
  1140      PolicyList:
  1141        type: object
  1142        required:
  1143          - pagination
  1144          - results
  1145        properties:
  1146          pagination:
  1147            $ref: "#/components/schemas/Pagination"
  1148          results:
  1149            type: array
  1150            items:
  1151              $ref: "#/components/schemas/Policy"
  1152  
  1153      ACL:
  1154        type: object
  1155        required:
  1156          - permission
  1157        properties:
  1158          permission:
  1159            type: string
  1160            description: |
  1161              Permission level to give this ACL.  "Read", "Write", "Super" and
  1162              "Admin" are all supported.
  1163  
  1164      StorageConfig:
  1165        type: object
  1166        required:
  1167          - blockstore_type
  1168          - blockstore_namespace_example
  1169          - blockstore_namespace_ValidityRegex
  1170          - pre_sign_support
  1171          - pre_sign_support_ui
  1172          - import_support
  1173          - import_validity_regex
  1174        properties:
  1175          blockstore_type:
  1176            type: string
  1177          blockstore_namespace_example:
  1178            type: string
  1179          blockstore_namespace_ValidityRegex:
  1180            type: string
  1181          default_namespace_prefix:
  1182            type: string
  1183          pre_sign_support:
  1184            type: boolean
  1185          pre_sign_support_ui:
  1186            type: boolean
  1187          import_support:
  1188            type: boolean
  1189          import_validity_regex:
  1190            type: string
  1191          pre_sign_multipart_upload:
  1192            type: boolean
  1193  
  1194      Config:
  1195        type: object
  1196        properties:
  1197          version_config:
  1198            $ref: "#/components/schemas/VersionConfig"
  1199          storage_config:
  1200            $ref: "#/components/schemas/StorageConfig"
  1201      VersionConfig:
  1202        type: object
  1203        properties:
  1204          version:
  1205            type: string
  1206          latest_version:
  1207            type: string
  1208          upgrade_recommended:
  1209            type: boolean
  1210          upgrade_url:
  1211            type: string
  1212      GarbageCollectionConfig:
  1213        type: object
  1214        properties:
  1215          grace_period:
  1216            description: Duration in seconds. Objects created in the recent grace_period will not be collected.
  1217            type: integer
  1218  
  1219      ActionRun:
  1220        type: object
  1221        required:
  1222          - run_id
  1223          - branch
  1224          - start_time
  1225          - commit_id
  1226          - event_type
  1227          - status
  1228        properties:
  1229          run_id:
  1230            type: string
  1231          branch:
  1232            type: string
  1233          start_time:
  1234            type: string
  1235            format: date-time
  1236          end_time:
  1237            type: string
  1238            format: date-time
  1239          event_type:
  1240            type: string
  1241          status:
  1242            type: string
  1243            enum: [failed, completed]
  1244          commit_id:
  1245            type: string
  1246  
  1247      ActionRunList:
  1248        type: object
  1249        required:
  1250          - pagination
  1251          - results
  1252        properties:
  1253          pagination:
  1254            $ref: "#/components/schemas/Pagination"
  1255          results:
  1256            type: array
  1257            items:
  1258              $ref: "#/components/schemas/ActionRun"
  1259  
  1260      HookRun:
  1261        type: object
  1262        required:
  1263          - hook_run_id
  1264          - action
  1265          - hook_id
  1266          - start_time
  1267          - status
  1268        properties:
  1269          hook_run_id:
  1270            type: string
  1271          action:
  1272            type: string
  1273          hook_id:
  1274            type: string
  1275          start_time:
  1276            type: string
  1277            format: date-time
  1278          end_time:
  1279            type: string
  1280            format: date-time
  1281          status:
  1282            type: string
  1283            enum: [failed, completed]
  1284  
  1285      HookRunList:
  1286        type: object
  1287        required:
  1288          - pagination
  1289          - results
  1290        properties:
  1291          pagination:
  1292            $ref: "#/components/schemas/Pagination"
  1293          results:
  1294            type: array
  1295            items:
  1296              $ref: "#/components/schemas/HookRun"
  1297  
  1298      StagingLocation:
  1299        type: object
  1300        description: location for placing an object when staging it
  1301        properties:
  1302          physical_address:
  1303            type: string
  1304          presigned_url:
  1305            type: string
  1306            nullable: true
  1307            description: if presign=true is passed in the request, this field will contain a pre-signed URL to use when uploading
  1308          presigned_url_expiry:
  1309            type: integer
  1310            format: int64
  1311            description: |
  1312              If present and nonzero, physical_address is a pre-signed URL and
  1313              will expire at this Unix Epoch time.  This will be shorter than
  1314              the pre-signed URL lifetime if an authentication token is about
  1315              to expire.
  1316  
  1317              This field is *optional*.
  1318  
  1319      StagingMetadata:
  1320        type: object
  1321        description: information about uploaded object
  1322        properties:
  1323          staging:
  1324            $ref: "#/components/schemas/StagingLocation"
  1325          checksum:
  1326            type: string
  1327            description: unique identifier of object content on backing store (typically ETag)
  1328          size_bytes:
  1329            type: integer
  1330            format: int64
  1331          user_metadata:
  1332            type: object
  1333            additionalProperties:
  1334              type: string
  1335          content_type:
  1336            type: string
  1337            description: Object media type
  1338          force:
  1339            type: boolean
  1340            default: false
  1341        required:
  1342          - staging
  1343          - checksum
  1344          - size_bytes
  1345  
  1346      GarbageCollectionPrepareResponse:
  1347        type: object
  1348        properties:
  1349          run_id:
  1350            type: string
  1351            description: a unique identifier generated for this GC job
  1352            example: 64eaa103-d726-4a33-bcb8-7c0b4abfe09e
  1353          gc_commits_location:
  1354            type: string
  1355            description: location of the resulting commits csv table (partitioned by run_id)
  1356            example: s3://my-storage-namespace/_lakefs/retention/commits
  1357          gc_addresses_location:
  1358            type: string
  1359            description: location to use for expired addresses parquet table (partitioned by run_id)
  1360            example: s3://my-storage-namespace/_lakefs/retention/addresses
  1361          gc_commits_presigned_url:
  1362            type: string
  1363            description: a presigned url to download the commits csv
  1364        required:
  1365          - run_id
  1366          - gc_commits_location
  1367          - gc_addresses_location
  1368  
  1369      PrepareGCUncommittedRequest:
  1370        type: object
  1371        properties:
  1372          continuation_token:
  1373            type: string
  1374  
  1375      PrepareGCUncommittedResponse:
  1376        type: object
  1377        properties:
  1378          run_id:
  1379            type: string
  1380          gc_uncommitted_location:
  1381            type: string
  1382            description: location of uncommitted information data
  1383          continuation_token:
  1384            type: string
  1385        required:
  1386          - run_id
  1387          - gc_uncommitted_location
  1388  
  1389      GarbageCollectionRule:
  1390        type: object
  1391        properties:
  1392          branch_id:
  1393            type: string
  1394          retention_days:
  1395            type: integer
  1396        required:
  1397          - branch_id
  1398          - retention_days
  1399  
  1400      GarbageCollectionRules:
  1401        type: object
  1402        properties:
  1403          default_retention_days:
  1404            type: integer
  1405          branches:
  1406            type: array
  1407            items:
  1408              $ref: "#/components/schemas/GarbageCollectionRule"
  1409        required:
  1410          - default_retention_days
  1411          - branches
  1412  
  1413      BranchProtectionRule:
  1414        type: object
  1415        properties:
  1416          pattern:
  1417            type: string
  1418            description: fnmatch pattern for the branch name, supporting * and ? wildcards
  1419            example: "stable_*"
  1420            minLength: 1
  1421        required:
  1422          - pattern
  1423  
  1424      ImportLocation:
  1425        type: object
  1426        required:
  1427          - type
  1428          - path
  1429          - destination
  1430        properties:
  1431          type:
  1432            type: string
  1433            enum: [ common_prefix, object ]
  1434            description: Path type, can either be 'common_prefix' or 'object'
  1435          path:
  1436            type: string
  1437            description: A source location to a 'common_prefix' or to a single object. Must match the lakeFS installation blockstore type.
  1438            example: s3://my-bucket/production/collections/
  1439          destination:
  1440            type: string
  1441            description: |
  1442              Destination for the imported objects on the branch. Must be a relative path to the branch.
  1443              If the type is an 'object', the destination is the exact object name under the branch.
  1444              If the type is a 'common_prefix', the destination is the prefix under the branch.
  1445            example: collections/
  1446  
  1447      ImportCreation:
  1448        type: object
  1449        required:
  1450          - paths
  1451          - commit
  1452        properties:
  1453          paths:
  1454            type: array
  1455            items:
  1456              $ref: "#/components/schemas/ImportLocation"
  1457          commit:
  1458            $ref: "#/components/schemas/CommitCreation"
  1459          force:
  1460            type: boolean
  1461            default: false
  1462        example:
  1463          paths:
  1464            - path: s3://my-bucket/production/collections/
  1465              destination: collections/
  1466              type: common_prefix
  1467            - path: s3://my-bucket/production/collections/file1
  1468              destination: collections/file1
  1469              type: object
  1470  
  1471      RangeMetadata:
  1472        type: object
  1473        required:
  1474          - id
  1475          - min_key
  1476          - max_key
  1477          - count
  1478          - estimated_size
  1479        properties:
  1480          id:
  1481            type: string
  1482            description: ID of the range.
  1483            example: 480e19972a6fbe98ab8e81ae5efdfd1a29037587e91244e87abd4adefffdb01c
  1484          min_key:
  1485            type: string
  1486            description: First key in the range.
  1487            example: production/collections/some/file_1.parquet
  1488          max_key:
  1489            type: string
  1490            description: Last key in the range.
  1491            example: production/collections/some/file_8229.parquet
  1492          count:
  1493            type: integer
  1494            description: Number of records in the range.
  1495          estimated_size:
  1496            type: integer
  1497            description: Estimated size of the range in bytes
  1498  
  1499      ImportStatus:
  1500        type: object
  1501        properties:
  1502          completed:
  1503            type: boolean
  1504          update_time:
  1505            type: string
  1506            format: date-time
  1507          ingested_objects:
  1508            description: Number of objects processed so far
  1509            type: integer
  1510            format: int64
  1511          metarange_id:
  1512            type: string
  1513          commit:
  1514            $ref: "#/components/schemas/Commit"
  1515          error:
  1516            $ref: "#/components/schemas/Error"
  1517        required:
  1518          - update_time
  1519          - completed
  1520  
  1521      ImportCreationResponse:
  1522        type: object
  1523        properties:
  1524          id:
  1525            description: The id of the import process
  1526            type: string
  1527        required:
  1528          - id
  1529  
  1530      MetaRangeCreation:
  1531        type: object
  1532        properties:
  1533          ranges:
  1534            type: array
  1535            items:
  1536              $ref: "#/components/schemas/RangeMetadata"
  1537            minItems: 1
  1538        required:
  1539          - ranges
  1540  
  1541      MetaRangeCreationResponse:
  1542        type: object
  1543        properties:
  1544          id:
  1545            description: The id of the created metarange
  1546            type: string
  1547  
  1548      UpdateToken:
  1549        type: object
  1550        properties:
  1551          staging_token:
  1552            type: string
  1553        required:
  1554          - staging_token
  1555  
  1556      StatsEvent:
  1557        type: object
  1558        properties:
  1559          class:
  1560            description: stats event class (e.g. "s3_gateway", "openapi_request", "experimental-feature", "ui-event")
  1561            type: string
  1562          name:
  1563            description: stats event name (e.g. "put_object", "create_repository", "<experimental-feature-name>")
  1564            type: string
  1565          count:
  1566            description: number of events of the class and name
  1567            type: integer
  1568        required:
  1569          - class
  1570          - name
  1571          - count
  1572  
  1573      StatsEventsList:
  1574        type: object
  1575        required:
  1576          - events
  1577        properties:
  1578          events:
  1579            type: array
  1580            items:
  1581              $ref: "#/components/schemas/StatsEvent"
  1582  
  1583      PresignMultipartUpload:
  1584        type: object
  1585        properties:
  1586          upload_id:
  1587            type: string
  1588          physical_address:
  1589            type: string
  1590          presigned_urls:
  1591            type: array
  1592            items:
  1593              type: string
  1594        required:
  1595          - upload_id
  1596          - physical_address
  1597  
  1598      UploadPart:
  1599        type: object
  1600        properties:
  1601          part_number:
  1602            type: integer
  1603          etag:
  1604            type: string
  1605        required:
  1606          - part_number
  1607          - etag
  1608  
  1609      CompletePresignMultipartUpload:
  1610        type: object
  1611        properties:
  1612          physical_address:
  1613            type: string
  1614          parts:
  1615            type: array
  1616            description: "List of uploaded parts, should be ordered by ascending part number"
  1617            items:
  1618              $ref: "#/components/schemas/UploadPart"
  1619          user_metadata:
  1620            type: object
  1621            additionalProperties:
  1622              type: string
  1623          content_type:
  1624            type: string
  1625            description: Object media type
  1626        required:
  1627          - physical_address
  1628          - parts
  1629  
  1630      AbortPresignMultipartUpload:
  1631        type: object
  1632        properties:
  1633          physical_address:
  1634            type: string
  1635        required:
  1636          - physical_address
  1637  
  1638      UsageReport:
  1639        type: object
  1640        properties:
  1641          year:
  1642            type: integer
  1643          month:
  1644            type: integer
  1645          count:
  1646            type: integer
  1647            format: int64
  1648        required:
  1649          - year
  1650          - month
  1651          - count
  1652  
  1653      InstallationUsageReport:
  1654        type: object
  1655        properties:
  1656          installation_id:
  1657            type: string
  1658          reports:
  1659            type: array
  1660            items:
  1661              $ref: "#/components/schemas/UsageReport"
  1662        required:
  1663          - installation_id
  1664          - reports
  1665  
  1666      ExternalPrincipalList: 
  1667        type: object
  1668        required:
  1669          - pagination
  1670          - results
  1671        properties:
  1672          pagination:
  1673            $ref: "#/components/schemas/Pagination"
  1674          results:
  1675            type: array
  1676            items:
  1677              $ref: "#/components/schemas/ExternalPrincipal"
  1678      ExternalPrincipalSettings:
  1679        type: object
  1680        additionalProperties:
  1681          type: string
  1682        description: Additional settings to be consumed by the remote authenticator
  1683      ExternalPrincipalCreation:
  1684        type: object
  1685        properties:
  1686          settings:
  1687            type: object
  1688            items:
  1689              $ref: "#/components/schemas/ExternalPrincipalSettings"
  1690      ExternalPrincipal:
  1691        type: object
  1692        required:
  1693          - user_id
  1694          - id
  1695        properties:
  1696          id:
  1697            type: string
  1698            description: A unique identifier for the external principal i.e aws:sts::123:assumed-role/role-name
  1699          user_id:
  1700            type: string
  1701            description: |
  1702              lakeFS user ID to associate with an external principal.
  1703          settings:
  1704            type: object
  1705            items:
  1706              $ref: "#/components/schemas/ExternalPrincipalSettings"
  1707  paths:
  1708    /setup_comm_prefs:
  1709      post:
  1710        tags:
  1711          - internal
  1712        operationId: setupCommPrefs
  1713        summary: setup communications preferences
  1714        security: []
  1715        requestBody:
  1716          required: true
  1717          content:
  1718            application/json:
  1719              schema:
  1720                $ref: "#/components/schemas/CommPrefsInput"
  1721        responses:
  1722          200:
  1723            description: communication preferences saved successfully
  1724          409:
  1725            description: setup was already completed
  1726            content:
  1727              application/json:
  1728                schema:
  1729                  $ref: "#/components/schemas/Error"
  1730          412:
  1731            description: wrong setup state for this operation
  1732            content:
  1733              application/json:
  1734                schema:
  1735                  $ref: "#/components/schemas/Error"
  1736          420:
  1737            description: too many requests
  1738          default:
  1739            $ref: "#/components/responses/ServerError"
  1740  
  1741    /setup_lakefs:
  1742      get:
  1743        tags:
  1744          - internal
  1745        operationId: getSetupState
  1746        summary: check if the lakeFS installation is already set up
  1747        security: []
  1748        responses:
  1749          200:
  1750            description: lakeFS setup state
  1751            content:
  1752              application/json:
  1753                schema:
  1754                  $ref: "#/components/schemas/SetupState"
  1755          420:
  1756            description: too many requests
  1757          default:
  1758            $ref: "#/components/responses/ServerError"
  1759      post:
  1760        tags:
  1761          - internal
  1762        operationId: setup
  1763        summary: setup lakeFS and create a first user
  1764        security: []
  1765        requestBody:
  1766          required: true
  1767          content:
  1768            application/json:
  1769              schema:
  1770                $ref: "#/components/schemas/Setup"
  1771        responses:
  1772          200:
  1773            description: user created successfully
  1774            content:
  1775              application/json:
  1776                schema:
  1777                  $ref: "#/components/schemas/CredentialsWithSecret"
  1778          400:
  1779            $ref: "#/components/responses/BadRequest"
  1780          409:
  1781            description: setup was already called
  1782            content:
  1783              application/json:
  1784                schema:
  1785                  $ref: "#/components/schemas/Error"
  1786          420:
  1787            description: too many requests
  1788          default:
  1789            $ref: "#/components/responses/ServerError"
  1790  
  1791    /user:
  1792      get:
  1793        tags:
  1794          - auth
  1795        operationId: getCurrentUser
  1796        summary: get current user
  1797        responses:
  1798          200:
  1799            description: user
  1800            content:
  1801              application/json:
  1802                schema:
  1803                  $ref: "#/components/schemas/CurrentUser"
  1804  
  1805    /auth/login:
  1806      post:
  1807        tags:
  1808          - auth
  1809        operationId: login
  1810        summary: perform a login
  1811        security: [] # No authentication
  1812        requestBody:
  1813          content:
  1814            application/json:
  1815              schema:
  1816                $ref: "#/components/schemas/LoginInformation"
  1817        responses:
  1818          200:
  1819            description: successful login
  1820            headers:
  1821              Set-Cookie:
  1822                schema:
  1823                  type: string
  1824                  example: "access_token=abcde12356; Path=/; HttpOnly"
  1825            content:
  1826              application/json:
  1827                schema:
  1828                  $ref: "#/components/schemas/AuthenticationToken"
  1829          401:
  1830            $ref: "#/components/responses/Unauthorized"
  1831          420:
  1832            description: too many requests
  1833          default:
  1834            $ref: "#/components/responses/ServerError"
  1835  
  1836    /auth/external/principal/login:
  1837      post:
  1838        tags:
  1839          - external
  1840          - experimental
  1841          - auth
  1842        operationId: externalPrincipalLogin
  1843        summary: perform a login using an external authenticator
  1844        security: []
  1845        requestBody:
  1846          content:
  1847            application/json:
  1848              schema:
  1849                $ref: "#/components/schemas/ExternalLoginInformation"
  1850        responses:
  1851          200:
  1852            description: successful external login
  1853            content:
  1854              application/json:
  1855                schema:
  1856                  $ref: "#/components/schemas/AuthenticationToken"
  1857          400:
  1858            $ref: "#/components/responses/BadRequest"
  1859          401:
  1860            $ref: "#/components/responses/Unauthorized"
  1861          403:
  1862            $ref: "#/components/responses/Forbidden"
  1863          404:
  1864            $ref: "#/components/responses/NotFound"
  1865          420:
  1866            description: too many requests
  1867          default:
  1868            $ref: "#/components/responses/ServerError"
  1869  
  1870    /sts/login:
  1871      post:
  1872        tags:
  1873          - experimental
  1874        operationId: stsLogin # change to stsLogin
  1875        summary: perform a login with STS
  1876        security: []
  1877        requestBody:
  1878          required: true
  1879          content:
  1880            application/json:
  1881              schema:
  1882                $ref: "#/components/schemas/StsAuthRequest"
  1883        responses:
  1884          200:
  1885            description: successful STS login
  1886            content:
  1887              application/json:
  1888                schema:
  1889                  $ref: "#/components/schemas/AuthenticationToken"
  1890          401:
  1891            $ref: "#/components/responses/Unauthorized"
  1892          420:
  1893            description: too many requests
  1894          default:
  1895            $ref: "#/components/responses/ServerError"
  1896  
  1897    /auth/capabilities:
  1898      get:
  1899        tags:
  1900          - internal
  1901        operationId: getAuthCapabilities
  1902        summary: list authentication capabilities supported
  1903        security: []
  1904        responses:
  1905          200:
  1906            description: auth capabilities
  1907            content:
  1908              application/json:
  1909                schema:
  1910                  $ref: "#/components/schemas/AuthCapabilities"
  1911          420:
  1912            description: too many requests
  1913          default:
  1914            $ref: "#/components/responses/ServerError"
  1915  
  1916    /auth/users:
  1917      get:
  1918        tags:
  1919          - auth
  1920        operationId: listUsers
  1921        summary: list users
  1922        parameters:
  1923          - $ref: "#/components/parameters/PaginationPrefix"
  1924          - $ref: "#/components/parameters/PaginationAfter"
  1925          - $ref: "#/components/parameters/PaginationAmount"
  1926        responses:
  1927          200:
  1928            description: user list
  1929            content:
  1930              application/json:
  1931                schema:
  1932                  $ref: "#/components/schemas/UserList"
  1933          401:
  1934            $ref: "#/components/responses/Unauthorized"
  1935          420:
  1936            description: too many requests
  1937          default:
  1938            $ref: "#/components/responses/ServerError"
  1939      post:
  1940        tags:
  1941          - auth
  1942        operationId: createUser
  1943        summary: create user
  1944        requestBody:
  1945          content:
  1946            application/json:
  1947              schema:
  1948                $ref: "#/components/schemas/UserCreation"
  1949        responses:
  1950          201:
  1951            description: user
  1952            content:
  1953              application/json:
  1954                schema:
  1955                  $ref: "#/components/schemas/User"
  1956          400:
  1957            description: validation error
  1958            content:
  1959              application/json:
  1960                schema:
  1961                  $ref: "#/components/schemas/Error"
  1962          401:
  1963            $ref: "#/components/responses/Unauthorized"
  1964          409:
  1965            $ref: "#/components/responses/Conflict"
  1966          420:
  1967            description: too many requests
  1968          default:
  1969            $ref: "#/components/responses/ServerError"
  1970  
  1971    /auth/users/{userId}:
  1972      parameters:
  1973        - in: path
  1974          name: userId
  1975          required: true
  1976          schema:
  1977            type: string
  1978      get:
  1979        tags:
  1980          - auth
  1981        operationId: getUser
  1982        summary: get user
  1983        responses:
  1984          200:
  1985            description: user
  1986            content:
  1987              application/json:
  1988                schema:
  1989                  $ref: "#/components/schemas/User"
  1990          401:
  1991            $ref: "#/components/responses/Unauthorized"
  1992          404:
  1993            $ref: "#/components/responses/NotFound"
  1994          420:
  1995            description: too many requests
  1996          default:
  1997            $ref: "#/components/responses/ServerError"
  1998      delete:
  1999        tags:
  2000          - auth
  2001        operationId: deleteUser
  2002        summary: delete user
  2003        responses:
  2004          204:
  2005            description: user deleted successfully
  2006          401:
  2007            $ref: "#/components/responses/Unauthorized"
  2008          404:
  2009            $ref: "#/components/responses/NotFound"
  2010          420:
  2011            description: too many requests
  2012          default:
  2013            $ref: "#/components/responses/ServerError"
  2014  
  2015    /auth/groups:
  2016      get:
  2017        tags:
  2018          - auth
  2019        operationId: listGroups
  2020        summary: list groups
  2021        parameters:
  2022          - $ref: "#/components/parameters/PaginationPrefix"
  2023          - $ref: "#/components/parameters/PaginationAfter"
  2024          - $ref: "#/components/parameters/PaginationAmount"
  2025        responses:
  2026          200:
  2027            description: group list
  2028            content:
  2029              application/json:
  2030                schema:
  2031                  $ref: "#/components/schemas/GroupList"
  2032          401:
  2033            $ref: "#/components/responses/Unauthorized"
  2034          420:
  2035            description: too many requests
  2036          default:
  2037            $ref: "#/components/responses/ServerError"
  2038      post:
  2039        tags:
  2040          - auth
  2041        operationId: createGroup
  2042        summary: create group
  2043        requestBody:
  2044          content:
  2045            application/json:
  2046              schema:
  2047                $ref: "#/components/schemas/GroupCreation"
  2048        responses:
  2049          201:
  2050            description: group
  2051            content:
  2052              application/json:
  2053                schema:
  2054                  $ref: "#/components/schemas/Group"
  2055          401:
  2056            $ref: "#/components/responses/Unauthorized"
  2057          404:
  2058            $ref: "#/components/responses/NotFound"
  2059          420:
  2060            description: too many requests
  2061          default:
  2062            $ref: "#/components/responses/ServerError"
  2063  
  2064    /auth/groups/{groupId}:
  2065      parameters:
  2066        - in: path
  2067          name: groupId
  2068          required: true
  2069          schema:
  2070            type: string
  2071      get:
  2072        tags:
  2073          - auth
  2074        operationId: getGroup
  2075        summary: get group
  2076        responses:
  2077          200:
  2078            description: group
  2079            content:
  2080              application/json:
  2081                schema:
  2082                  $ref: "#/components/schemas/Group"
  2083          401:
  2084            $ref: "#/components/responses/Unauthorized"
  2085          404:
  2086            $ref: "#/components/responses/NotFound"
  2087          420:
  2088            description: too many requests
  2089          default:
  2090            $ref: "#/components/responses/ServerError"
  2091      delete:
  2092        tags:
  2093          - auth
  2094        operationId: deleteGroup
  2095        summary: delete group
  2096        responses:
  2097          204:
  2098            description: group deleted successfully
  2099          401:
  2100            $ref: "#/components/responses/Unauthorized"
  2101          404:
  2102            $ref: "#/components/responses/NotFound"
  2103          420:
  2104            description: too many requests
  2105          default:
  2106            $ref: "#/components/responses/ServerError"
  2107  
  2108    /auth/policies:
  2109      get:
  2110        tags:
  2111          - auth
  2112        operationId: listPolicies
  2113        summary: list policies
  2114        parameters:
  2115          - $ref: "#/components/parameters/PaginationPrefix"
  2116          - $ref: "#/components/parameters/PaginationAfter"
  2117          - $ref: "#/components/parameters/PaginationAmount"
  2118        responses:
  2119          200:
  2120            description: policy list
  2121            content:
  2122              application/json:
  2123                schema:
  2124                  $ref: "#/components/schemas/PolicyList"
  2125          401:
  2126            $ref: "#/components/responses/Unauthorized"
  2127          420:
  2128            description: too many requests
  2129          default:
  2130            $ref: "#/components/responses/ServerError"
  2131      post:
  2132        tags:
  2133          - auth
  2134        operationId: createPolicy
  2135        summary: create policy
  2136        requestBody:
  2137          required: true
  2138          content:
  2139            application/json:
  2140              schema:
  2141                $ref: "#/components/schemas/Policy"
  2142        responses:
  2143          201:
  2144            description: policy
  2145            content:
  2146              application/json:
  2147                schema:
  2148                  $ref: "#/components/schemas/Policy"
  2149          400:
  2150            $ref: "#/components/responses/ValidationError"
  2151          401:
  2152            $ref: "#/components/responses/Unauthorized"
  2153          409:
  2154            $ref: "#/components/responses/Conflict"
  2155          420:
  2156            description: too many requests
  2157          default:
  2158            $ref: "#/components/responses/ServerError"
  2159  
  2160    /auth/policies/{policyId}:
  2161      parameters:
  2162        - in: path
  2163          name: policyId
  2164          required: true
  2165          schema:
  2166            type: string
  2167      get:
  2168        tags:
  2169          - auth
  2170        operationId: getPolicy
  2171        summary: get policy
  2172        responses:
  2173          200:
  2174            description: policy
  2175            content:
  2176              application/json:
  2177                schema:
  2178                  $ref: "#/components/schemas/Policy"
  2179          401:
  2180            $ref: "#/components/responses/Unauthorized"
  2181          404:
  2182            $ref: "#/components/responses/NotFound"
  2183          420:
  2184            description: too many requests
  2185          default:
  2186            $ref: "#/components/responses/ServerError"
  2187      put:
  2188        tags:
  2189          - auth
  2190        operationId: updatePolicy
  2191        summary: update policy
  2192        requestBody:
  2193          required: true
  2194          content:
  2195            application/json:
  2196              schema:
  2197                $ref: "#/components/schemas/Policy"
  2198        responses:
  2199          200:
  2200            description: policy
  2201            content:
  2202              application/json:
  2203                schema:
  2204                  $ref: "#/components/schemas/Policy"
  2205          400:
  2206            $ref: "#/components/responses/ValidationError"
  2207          401:
  2208            $ref: "#/components/responses/Unauthorized"
  2209          404:
  2210            $ref: "#/components/responses/NotFound"
  2211          420:
  2212            description: too many requests
  2213          default:
  2214            $ref: "#/components/responses/ServerError"
  2215      delete:
  2216        tags:
  2217          - auth
  2218        operationId: deletePolicy
  2219        summary: delete policy
  2220        responses:
  2221          204:
  2222            description: policy deleted successfully
  2223          401:
  2224            $ref: "#/components/responses/Unauthorized"
  2225          404:
  2226            $ref: "#/components/responses/NotFound"
  2227          420:
  2228            description: too many requests
  2229          default:
  2230            $ref: "#/components/responses/ServerError"
  2231  
  2232    /auth/groups/{groupId}/members:
  2233      parameters:
  2234        - in: path
  2235          name: groupId
  2236          required: true
  2237          schema:
  2238            type: string
  2239      get:
  2240        tags:
  2241          - auth
  2242        operationId: listGroupMembers
  2243        summary: list group members
  2244        parameters:
  2245          - $ref: "#/components/parameters/PaginationPrefix"
  2246          - $ref: "#/components/parameters/PaginationAfter"
  2247          - $ref: "#/components/parameters/PaginationAmount"
  2248        responses:
  2249          200:
  2250            description: group member list
  2251            content:
  2252              application/json:
  2253                schema:
  2254                  $ref: "#/components/schemas/UserList"
  2255          401:
  2256            $ref: "#/components/responses/Unauthorized"
  2257          420:
  2258            description: too many requests
  2259          default:
  2260            $ref: "#/components/responses/ServerError"
  2261  
  2262    /auth/groups/{groupId}/members/{userId}:
  2263      parameters:
  2264        - in: path
  2265          name: groupId
  2266          required: true
  2267          schema:
  2268            type: string
  2269        - in: path
  2270          name: userId
  2271          required: true
  2272          schema:
  2273            type: string
  2274      put:
  2275        tags:
  2276          - auth
  2277        operationId: addGroupMembership
  2278        summary: add group membership
  2279        responses:
  2280          201:
  2281            description: membership added successfully
  2282          401:
  2283            $ref: "#/components/responses/Unauthorized"
  2284          404:
  2285            $ref: "#/components/responses/NotFound"
  2286          420:
  2287            description: too many requests
  2288          default:
  2289            $ref: "#/components/responses/ServerError"
  2290  
  2291      delete:
  2292        tags:
  2293          - auth
  2294        operationId: deleteGroupMembership
  2295        summary: delete group membership
  2296        responses:
  2297          204:
  2298            description: membership deleted successfully
  2299          401:
  2300            $ref: "#/components/responses/Unauthorized"
  2301          404:
  2302            $ref: "#/components/responses/NotFound"
  2303          420:
  2304            description: too many requests
  2305          default:
  2306            $ref: "#/components/responses/ServerError"
  2307  
  2308    /auth/users/{userId}/credentials:
  2309      parameters:
  2310        - in: path
  2311          name: userId
  2312          required: true
  2313          schema:
  2314            type: string
  2315      get:
  2316        tags:
  2317          - auth
  2318        parameters:
  2319          - $ref: "#/components/parameters/PaginationPrefix"
  2320          - $ref: "#/components/parameters/PaginationAfter"
  2321          - $ref: "#/components/parameters/PaginationAmount"
  2322        operationId: listUserCredentials
  2323        summary: list user credentials
  2324        responses:
  2325          200:
  2326            description: credential list
  2327            content:
  2328              application/json:
  2329                schema:
  2330                  $ref: "#/components/schemas/CredentialsList"
  2331          401:
  2332            $ref: "#/components/responses/Unauthorized"
  2333          404:
  2334            $ref: "#/components/responses/NotFound"
  2335          420:
  2336            description: too many requests
  2337          default:
  2338            $ref: "#/components/responses/ServerError"
  2339  
  2340      post:
  2341        tags:
  2342          - auth
  2343        operationId: createCredentials
  2344        summary: create credentials
  2345        responses:
  2346          201:
  2347            description: credentials
  2348            content:
  2349              application/json:
  2350                schema:
  2351                  $ref: "#/components/schemas/CredentialsWithSecret"
  2352          401:
  2353            $ref: "#/components/responses/Unauthorized"
  2354          404:
  2355            $ref: "#/components/responses/NotFound"
  2356          420:
  2357            description: too many requests
  2358          default:
  2359            $ref: "#/components/responses/ServerError"
  2360  
  2361    /auth/users/{userId}/credentials/{accessKeyId}:
  2362      parameters:
  2363        - in: path
  2364          name: userId
  2365          required: true
  2366          schema:
  2367            type: string
  2368        - in: path
  2369          name: accessKeyId
  2370          required: true
  2371          schema:
  2372            type: string
  2373      delete:
  2374        tags:
  2375          - auth
  2376        operationId: deleteCredentials
  2377        summary: delete credentials
  2378        responses:
  2379          204:
  2380            description: credentials deleted successfully
  2381          401:
  2382            $ref: "#/components/responses/Unauthorized"
  2383          404:
  2384            $ref: "#/components/responses/NotFound"
  2385          420:
  2386            description: too many requests
  2387          default:
  2388            $ref: "#/components/responses/ServerError"
  2389  
  2390      get:
  2391        tags:
  2392          - auth
  2393        operationId: getCredentials
  2394        summary: get credentials
  2395        responses:
  2396          200:
  2397            description: credentials
  2398            content:
  2399              application/json:
  2400                schema:
  2401                  $ref: "#/components/schemas/Credentials"
  2402          401:
  2403            $ref: "#/components/responses/Unauthorized"
  2404          404:
  2405            $ref: "#/components/responses/NotFound"
  2406          420:
  2407            description: too many requests
  2408          default:
  2409            $ref: "#/components/responses/ServerError"
  2410  
  2411    /auth/users/{userId}/groups:
  2412      parameters:
  2413        - in: path
  2414          name: userId
  2415          required: true
  2416          schema:
  2417            type: string
  2418      get:
  2419        tags:
  2420          - auth
  2421        parameters:
  2422          - $ref: "#/components/parameters/PaginationPrefix"
  2423          - $ref: "#/components/parameters/PaginationAfter"
  2424          - $ref: "#/components/parameters/PaginationAmount"
  2425        operationId: listUserGroups
  2426        summary: list user groups
  2427        responses:
  2428          200:
  2429            description: group list
  2430            content:
  2431              application/json:
  2432                schema:
  2433                  $ref: "#/components/schemas/GroupList"
  2434          401:
  2435            $ref: "#/components/responses/Unauthorized"
  2436          404:
  2437            $ref: "#/components/responses/NotFound"
  2438          420:
  2439            description: too many requests
  2440          default:
  2441            $ref: "#/components/responses/ServerError"
  2442  
  2443    /auth/users/{userId}/policies:
  2444      parameters:
  2445        - in: path
  2446          name: userId
  2447          required: true
  2448          schema:
  2449            type: string
  2450      get:
  2451        tags:
  2452          - auth
  2453        parameters:
  2454          - $ref: "#/components/parameters/PaginationPrefix"
  2455          - $ref: "#/components/parameters/PaginationAfter"
  2456          - $ref: "#/components/parameters/PaginationAmount"
  2457          - in: query
  2458            name: effective
  2459            schema:
  2460              type: boolean
  2461              default: false
  2462            description: will return all distinct policies attached to the user or any of its groups
  2463        operationId: listUserPolicies
  2464        summary: list user policies
  2465        responses:
  2466          200:
  2467            description: policy list
  2468            content:
  2469              application/json:
  2470                schema:
  2471                  $ref: "#/components/schemas/PolicyList"
  2472          401:
  2473            $ref: "#/components/responses/Unauthorized"
  2474          404:
  2475            $ref: "#/components/responses/NotFound"
  2476          420:
  2477            description: too many requests
  2478          default:
  2479            $ref: "#/components/responses/ServerError"
  2480  
  2481    /auth/users/{userId}/policies/{policyId}:
  2482      parameters:
  2483        - in: path
  2484          name: userId
  2485          required: true
  2486          schema:
  2487            type: string
  2488        - in: path
  2489          name: policyId
  2490          required: true
  2491          schema:
  2492            type: string
  2493      put:
  2494        tags:
  2495          - auth
  2496        operationId: attachPolicyToUser
  2497        summary: attach policy to user
  2498        responses:
  2499          201:
  2500            description: policy attached successfully
  2501          401:
  2502            $ref: "#/components/responses/Unauthorized"
  2503          404:
  2504            $ref: "#/components/responses/NotFound"
  2505          420:
  2506            description: too many requests
  2507          default:
  2508            $ref: "#/components/responses/ServerError"
  2509      delete:
  2510        tags:
  2511          - auth
  2512        operationId: detachPolicyFromUser
  2513        summary: detach policy from user
  2514        responses:
  2515          204:
  2516            description: policy detached successfully
  2517          401:
  2518            $ref: "#/components/responses/Unauthorized"
  2519          404:
  2520            $ref: "#/components/responses/NotFound"
  2521          420:
  2522            description: too many requests
  2523          default:
  2524            $ref: "#/components/responses/ServerError"
  2525  
  2526  
  2527    /auth/users/{userId}/external/principals:
  2528      parameters:
  2529        - in: path
  2530          name: userId
  2531          required: true
  2532          schema:
  2533            type: string
  2534        - in: query
  2535          name: principalId
  2536          required: true
  2537          schema:
  2538            type: string
  2539      post:
  2540        tags:
  2541          - auth
  2542          - external
  2543          - experimental
  2544        operationId: createUserExternalPrincipal
  2545        summary: attach external principal to user
  2546        requestBody: 
  2547          required: false
  2548          content: 
  2549            application/json: 
  2550              schema: 
  2551                $ref: "#/components/schemas/ExternalPrincipalCreation"
  2552        responses:
  2553          201:
  2554            description: external principal attached successfully
  2555          401:
  2556            $ref: "#/components/responses/Unauthorized"
  2557          404:
  2558            $ref: "#/components/responses/NotFound"
  2559          409:
  2560            $ref: "#/components/responses/Conflict"
  2561          420:
  2562            description: too many requests
  2563          default:
  2564            $ref: "#/components/responses/ServerError"
  2565      delete:
  2566        tags:
  2567          - auth
  2568          - external
  2569          - experimental
  2570        operationId: deleteUserExternalPrincipal
  2571        summary: delete external principal from user
  2572        responses:
  2573          204:
  2574            description: external principal detached successfully
  2575          401:
  2576            $ref: "#/components/responses/Unauthorized"
  2577          404:
  2578            $ref: "#/components/responses/NotFound"
  2579          420:
  2580            description: too many requests
  2581          default:
  2582            $ref: "#/components/responses/ServerError"
  2583  
  2584    /auth/users/{userId}/external/principals/ls:
  2585      parameters:
  2586        - in: path
  2587          name: userId
  2588          required: true
  2589          schema:
  2590            type: string
  2591      get:
  2592        tags:
  2593          - auth
  2594          - external
  2595          - experimental
  2596        parameters:
  2597          - $ref: "#/components/parameters/PaginationPrefix"
  2598          - $ref: "#/components/parameters/PaginationAfter"
  2599          - $ref: "#/components/parameters/PaginationAmount"
  2600        operationId: listUserExternalPrincipals
  2601        summary: list user external policies attached to a user
  2602        responses:
  2603          200:
  2604            description: external principals list
  2605            content:
  2606              application/json:
  2607                schema:
  2608                  $ref: "#/components/schemas/ExternalPrincipalList"
  2609          401:
  2610            $ref: "#/components/responses/Unauthorized"
  2611          404:
  2612            $ref: "#/components/responses/NotFound"
  2613          420:
  2614            description: too many requests
  2615          default:
  2616            $ref: "#/components/responses/ServerError"
  2617  
  2618    /auth/external/principals:
  2619      parameters:
  2620        - in: query
  2621          name: principalId
  2622          required: true
  2623          schema:
  2624            type: string
  2625      get:
  2626        tags:
  2627          - auth
  2628          - external
  2629          - experimental
  2630        operationId: getExternalPrincipal
  2631        summary: describe external principal by id 
  2632        responses:
  2633          200:
  2634            description: external principal
  2635            content:
  2636              application/json:
  2637                schema:
  2638                  $ref: "#/components/schemas/ExternalPrincipal"
  2639          401:
  2640            $ref: "#/components/responses/Unauthorized"
  2641          404:
  2642            $ref: "#/components/responses/NotFound"
  2643          420:
  2644            description: too many requests
  2645          default:
  2646            $ref: "#/components/responses/ServerError"
  2647  
  2648    /auth/groups/{groupId}/policies:
  2649      parameters:
  2650        - in: path
  2651          name: groupId
  2652          required: true
  2653          schema:
  2654            type: string
  2655      get:
  2656        tags:
  2657          - auth
  2658        parameters:
  2659          - $ref: "#/components/parameters/PaginationPrefix"
  2660          - $ref: "#/components/parameters/PaginationAfter"
  2661          - $ref: "#/components/parameters/PaginationAmount"
  2662        operationId: listGroupPolicies
  2663        summary: list group policies
  2664        responses:
  2665          200:
  2666            description: policy list
  2667            content:
  2668              application/json:
  2669                schema:
  2670                  $ref: "#/components/schemas/PolicyList"
  2671          401:
  2672            $ref: "#/components/responses/Unauthorized"
  2673          404:
  2674            $ref: "#/components/responses/NotFound"
  2675          420:
  2676            description: too many requests
  2677          default:
  2678            $ref: "#/components/responses/ServerError"
  2679  
  2680    /auth/groups/{groupId}/policies/{policyId}:
  2681      parameters:
  2682        - in: path
  2683          name: groupId
  2684          required: true
  2685          schema:
  2686            type: string
  2687        - in: path
  2688          name: policyId
  2689          required: true
  2690          schema:
  2691            type: string
  2692      put:
  2693        tags:
  2694          - auth
  2695        operationId: attachPolicyToGroup
  2696        summary: attach policy to group
  2697        responses:
  2698          201:
  2699            description: policy attached successfully
  2700          401:
  2701            $ref: "#/components/responses/Unauthorized"
  2702          404:
  2703            $ref: "#/components/responses/NotFound"
  2704          420:
  2705            description: too many requests
  2706          default:
  2707            $ref: "#/components/responses/ServerError"
  2708  
  2709      delete:
  2710        tags:
  2711          - auth
  2712        operationId: detachPolicyFromGroup
  2713        summary: detach policy from group
  2714        responses:
  2715          204:
  2716            description: policy detached successfully
  2717          401:
  2718            $ref: "#/components/responses/Unauthorized"
  2719          404:
  2720            $ref: "#/components/responses/NotFound"
  2721          420:
  2722            description: too many requests
  2723          default:
  2724            $ref: "#/components/responses/ServerError"
  2725  
  2726    /auth/groups/{groupId}/acl:
  2727      parameters:
  2728        - in: path
  2729          name: groupId
  2730          required: true
  2731          schema:
  2732            type: string
  2733  
  2734      post:
  2735        tags:
  2736          - auth
  2737        operationId: setGroupACL
  2738        summary: set ACL of group
  2739        requestBody:
  2740          required: true
  2741          content:
  2742            application/json:
  2743              schema:
  2744                $ref: "#/components/schemas/ACL"
  2745        responses:
  2746          201:
  2747            description: ACL successfully changed
  2748          401:
  2749            $ref: "#/components/responses/Unauthorized"
  2750          404:
  2751            $ref: "#/components/responses/NotFound"
  2752          420:
  2753            description: too many requests
  2754          default:
  2755            $ref: "#/components/responses/ServerError"
  2756  
  2757      get:
  2758        tags:
  2759          - auth
  2760        operationId: getGroupACL
  2761        summary: get ACL of group
  2762        responses:
  2763          200:
  2764            description: ACL of group
  2765            content:
  2766              application/json:
  2767                schema:
  2768                  $ref: "#/components/schemas/ACL"
  2769          401:
  2770            $ref: "#/components/responses/Unauthorized"
  2771          404:
  2772            $ref: "#/components/responses/NotFoundOrNoACL"
  2773          420:
  2774            description: too many requests
  2775          default:
  2776            $ref: "#/components/responses/ServerError"
  2777          
  2778    /repositories:
  2779      get:
  2780        tags:
  2781          - repositories
  2782        parameters:
  2783          - $ref: "#/components/parameters/PaginationPrefix"
  2784          - $ref: "#/components/parameters/PaginationAfter"
  2785          - $ref: "#/components/parameters/PaginationAmount"
  2786        operationId: listRepositories
  2787        summary: list repositories
  2788        responses:
  2789          200:
  2790            description: repository list
  2791            content:
  2792              application/json:
  2793                schema:
  2794                  $ref: "#/components/schemas/RepositoryList"
  2795          401:
  2796            $ref: "#/components/responses/Unauthorized"
  2797          420:
  2798            description: too many requests
  2799          default:
  2800            $ref: "#/components/responses/ServerError"
  2801      post:
  2802        tags:
  2803          - repositories
  2804        operationId: createRepository
  2805        summary: create repository
  2806        requestBody:
  2807          required: true
  2808          content:
  2809            application/json:
  2810              schema:
  2811                $ref: "#/components/schemas/RepositoryCreation"
  2812        parameters:
  2813          - in: query
  2814            name: bare
  2815            schema:
  2816              type: boolean
  2817              default: false
  2818            description: If true, create a bare repository with no initial commit and branch
  2819        responses:
  2820          201:
  2821            description: repository
  2822            content:
  2823              application/json:
  2824                schema:
  2825                  $ref: "#/components/schemas/Repository"
  2826          400:
  2827            $ref: "#/components/responses/ValidationError"
  2828          401:
  2829            $ref: "#/components/responses/Unauthorized"
  2830          409:
  2831            $ref: "#/components/responses/Conflict"
  2832          420:
  2833            description: too many requests
  2834          default:
  2835            $ref: "#/components/responses/ServerError"
  2836  
  2837    /repositories/{repository}:
  2838      parameters:
  2839        - in: path
  2840          name: repository
  2841          required: true
  2842          schema:
  2843            type: string
  2844      get:
  2845        tags:
  2846          - repositories
  2847        operationId: getRepository
  2848        summary: get repository
  2849        responses:
  2850          200:
  2851            description: repository
  2852            content:
  2853              application/json:
  2854                schema:
  2855                  $ref: "#/components/schemas/Repository"
  2856          401:
  2857            $ref: "#/components/responses/Unauthorized"
  2858          404:
  2859            $ref: "#/components/responses/NotFound"
  2860          420:
  2861            description: too many requests
  2862          default:
  2863            $ref: "#/components/responses/ServerError"
  2864      delete:
  2865        tags:
  2866          - repositories
  2867        operationId: deleteRepository
  2868        summary: delete repository
  2869        parameters:
  2870          - in: query
  2871            name: force
  2872            schema:
  2873              type: boolean
  2874              default: false
  2875            description: Bypass read-only protection and delete the repository
  2876        responses:
  2877          204:
  2878            description: repository deleted successfully
  2879          401:
  2880            $ref: "#/components/responses/Unauthorized"
  2881          404:
  2882            $ref: "#/components/responses/NotFound"
  2883          420:
  2884            description: too many requests
  2885          default:
  2886            $ref: "#/components/responses/ServerError"
  2887  
  2888    /repositories/{repository}/metadata:
  2889      parameters:
  2890        - in: path
  2891          name: repository
  2892          required: true
  2893          schema:
  2894            type: string
  2895      get:
  2896        tags:
  2897          - repositories
  2898        operationId: getRepositoryMetadata
  2899        summary: get repository metadata
  2900        responses:
  2901          200:
  2902            description: repository metadata
  2903            content:
  2904              application/json:
  2905                schema:
  2906                  $ref: "#/components/schemas/RepositoryMetadata"
  2907          401:
  2908            $ref: "#/components/responses/Unauthorized"
  2909          404:
  2910            $ref: "#/components/responses/NotFound"
  2911          420:
  2912            description: too many requests
  2913          default:
  2914            $ref: "#/components/responses/ServerError"
  2915      post:
  2916        tags:
  2917          - internal
  2918        operationId: setRepositoryMetadata
  2919        summary: set repository metadata
  2920        description: |
  2921          Set repository metadata. This will only add or update the provided keys, and will not remove any existing keys.
  2922        requestBody:
  2923          required: true
  2924          content:
  2925            application/json:
  2926              schema:
  2927                $ref: "#/components/schemas/RepositoryMetadataSet"
  2928        responses:
  2929          204:
  2930            description: repository metadata set successfully
  2931          401:
  2932            $ref: "#/components/responses/Unauthorized"
  2933          404:
  2934            $ref: "#/components/responses/NotFound"
  2935          420:
  2936            description: too many requests
  2937          default:
  2938            $ref: "#/components/responses/ServerError"
  2939      delete:
  2940        tags:
  2941          - internal
  2942        operationId: deleteRepositoryMetadata
  2943        summary: delete repository metadata
  2944        description: |
  2945          Delete specified keys from the repository's metadata.
  2946        requestBody:
  2947          required: true
  2948          content:
  2949            application/json:
  2950              schema:
  2951                $ref: "#/components/schemas/RepositoryMetadataKeys"
  2952        responses:
  2953          204:
  2954            description: repository metadata keys deleted successfully
  2955          401:
  2956            $ref: "#/components/responses/Unauthorized"
  2957          420:
  2958            description: too many requests
  2959          default:
  2960            $ref: "#/components/responses/ServerError"
  2961  
  2962    /repositories/{repository}/settings/gc_rules:
  2963      parameters:
  2964        - in: path
  2965          name: repository
  2966          required: true
  2967          schema:
  2968            type: string
  2969      get:
  2970        tags:
  2971          - repositories
  2972        operationId: getGCRules
  2973        summary: get repository GC rules
  2974        responses:
  2975          200:
  2976            description: repository GC rules
  2977            content:
  2978              application/json:
  2979                schema:
  2980                  $ref: "#/components/schemas/GarbageCollectionRules"
  2981          401:
  2982            $ref: "#/components/responses/Unauthorized"
  2983          404:
  2984            $ref: "#/components/responses/NotFound"
  2985          420:
  2986            description: too many requests
  2987          default:
  2988            $ref: "#/components/responses/ServerError"
  2989      put:
  2990        tags:
  2991          - repositories
  2992        operationId: setGCRules
  2993        requestBody:
  2994          required: true
  2995          content:
  2996            application/json:
  2997              schema:
  2998                $ref: "#/components/schemas/GarbageCollectionRules"
  2999        responses:
  3000          204:
  3001            description: set garbage collection rules successfully
  3002          401:
  3003            $ref: "#/components/responses/Unauthorized"
  3004          403:
  3005            $ref: "#/components/responses/Forbidden"
  3006          404:
  3007            $ref: "#/components/responses/NotFound"
  3008          420:
  3009            description: too many requests
  3010          default:
  3011            $ref: "#/components/responses/ServerError"
  3012      delete:
  3013        tags:
  3014          - repositories
  3015        operationId: deleteGCRules
  3016        responses:
  3017          204:
  3018            description: deleted garbage collection rules successfully
  3019          401:
  3020            $ref: "#/components/responses/Unauthorized"
  3021          403:
  3022            $ref: "#/components/responses/Forbidden"
  3023          404:
  3024            $ref: "#/components/responses/NotFound"
  3025          420:
  3026            description: too many requests
  3027          default:
  3028            $ref: "#/components/responses/ServerError"
  3029  
  3030    /repositories/{repository}/settings/branch_protection:
  3031      parameters:
  3032        - in: path
  3033          name: repository
  3034          required: true
  3035          schema:
  3036            type: string
  3037      get:
  3038        tags:
  3039          - repositories
  3040        operationId: getBranchProtectionRules
  3041        summary: get branch protection rules
  3042        responses:
  3043          200:
  3044            description: branch protection rules
  3045            content:
  3046              application/json:
  3047                schema:
  3048                  type: array
  3049                  items:
  3050                    $ref: "#/components/schemas/BranchProtectionRule"
  3051            headers:
  3052              ETag:
  3053                schema:
  3054                  type: string
  3055                  description: ETag of the branch protection rules
  3056          401:
  3057            $ref: "#/components/responses/Unauthorized"
  3058          404:
  3059            $ref: "#/components/responses/NotFound"
  3060          420:
  3061            description: too many requests
  3062          default:
  3063            $ref: "#/components/responses/ServerError"
  3064  
  3065      put:
  3066        parameters:
  3067          - in: header
  3068            name: If-Match
  3069            schema:
  3070              type: string
  3071            description: if provided, the branch protection rules will be updated only if the current ETag match the provided value
  3072            allowEmptyValue: true
  3073        tags:
  3074          - repositories
  3075        operationId: setBranchProtectionRules
  3076        requestBody:
  3077          required: true
  3078          content:
  3079            application/json:
  3080              schema:
  3081                type: array
  3082                items:
  3083                  $ref: "#/components/schemas/BranchProtectionRule"
  3084        responses:
  3085          204:
  3086            description: branch protection rule created successfully
  3087          400:
  3088            $ref: "#/components/responses/BadRequest"
  3089          401:
  3090            $ref: "#/components/responses/Unauthorized"
  3091          403:
  3092            $ref: "#/components/responses/Forbidden"
  3093          404:
  3094            $ref: "#/components/responses/NotFound"
  3095          412:
  3096            $ref: "#/components/responses/PreconditionFailed"
  3097          420:
  3098            description: too many requests
  3099          default:
  3100            $ref: "#/components/responses/ServerError"
  3101  
  3102    /repositories/{repository}/refs/dump:
  3103      parameters:
  3104        - in: path
  3105          name: repository
  3106          required: true
  3107          schema:
  3108            type: string
  3109      put:
  3110        tags:
  3111          - internal
  3112        operationId: dumpRefs
  3113        summary: |
  3114          Dump repository refs (tags, commits, branches) to object store
  3115          Deprecated: a new API will introduce long running operations
  3116        responses:
  3117          201:
  3118            description: refs dump
  3119            content:
  3120              application/json:
  3121                schema:
  3122                  $ref: "#/components/schemas/RefsDump"
  3123          400:
  3124            $ref: "#/components/responses/ValidationError"
  3125          401:
  3126            $ref: "#/components/responses/Unauthorized"
  3127          404:
  3128            $ref: "#/components/responses/NotFound"
  3129          420:
  3130            description: too many requests
  3131          default:
  3132            $ref: "#/components/responses/ServerError"
  3133  
  3134    /repositories/{repository}/refs/restore:
  3135      parameters:
  3136        - in: path
  3137          name: repository
  3138          required: true
  3139          schema:
  3140            type: string
  3141      put:
  3142        tags:
  3143          - internal
  3144        operationId: restoreRefs
  3145        summary: |
  3146          Restore repository refs (tags, commits, branches) from object store.
  3147          Deprecated: a new API will introduce long running operations
  3148        requestBody:
  3149          required: true
  3150          content:
  3151            application/json:
  3152              schema:
  3153                $ref: "#/components/schemas/RefsRestore"
  3154        responses:
  3155          200:
  3156            description: refs successfully loaded
  3157          400:
  3158            $ref: "#/components/responses/ValidationError"
  3159          401:
  3160            $ref: "#/components/responses/Unauthorized"
  3161          404:
  3162            $ref: "#/components/responses/NotFound"
  3163          420:
  3164            description: too many requests
  3165          default:
  3166            $ref: "#/components/responses/ServerError"
  3167  
  3168    /repositories/{repository}/dump:
  3169      parameters:
  3170        - in: path
  3171          name: repository
  3172          required: true
  3173          schema:
  3174            type: string
  3175      post:
  3176        tags:
  3177          - repositories
  3178        operationId: dumpSubmit
  3179        summary: Backup the repository metadata (tags, commits, branches) and save the backup to the object store.
  3180        responses:
  3181          202:
  3182            description: dump task information
  3183            content:
  3184              application/json:
  3185                schema:
  3186                  $ref: "#/components/schemas/TaskInfo"
  3187          400:
  3188            $ref: "#/components/responses/ValidationError"
  3189          401:
  3190            $ref: "#/components/responses/Unauthorized"
  3191          404:
  3192            $ref: "#/components/responses/NotFound"
  3193          default:
  3194            $ref: "#/components/responses/ServerError"
  3195      get:
  3196        tags:
  3197          - repositories
  3198        operationId: dumpStatus
  3199        summary: Status of a repository dump task
  3200        parameters:
  3201          - in: query
  3202            name: task_id
  3203            required: true
  3204            schema:
  3205              type: string
  3206        responses:
  3207          200:
  3208            description: dump task status
  3209            content:
  3210              application/json:
  3211                schema:
  3212                  $ref: "#/components/schemas/RepositoryDumpStatus"
  3213          400:
  3214            $ref: "#/components/responses/ValidationError"
  3215          401:
  3216            $ref: "#/components/responses/Unauthorized"
  3217          404:
  3218            $ref: "#/components/responses/NotFound"
  3219          420:
  3220            description: too many requests
  3221          default:
  3222            $ref: "#/components/responses/ServerError"
  3223  
  3224    /repositories/{repository}/restore:
  3225      parameters:
  3226        - in: path
  3227          name: repository
  3228          required: true
  3229          schema:
  3230            type: string
  3231      post:
  3232        tags:
  3233          - repositories
  3234        operationId: restoreSubmit
  3235        summary: Restore repository from a dump in the object store
  3236        requestBody:
  3237          required: true
  3238          content:
  3239            application/json:
  3240              schema:
  3241                $ref: "#/components/schemas/RefsRestore"
  3242        responses:
  3243          202:
  3244            description: restore task created
  3245            content:
  3246              application/json:
  3247                schema:
  3248                  $ref: "#/components/schemas/TaskInfo"
  3249          400:
  3250            $ref: "#/components/responses/ValidationError"
  3251          403:
  3252            $ref: "#/components/responses/Forbidden"
  3253          401:
  3254            $ref: "#/components/responses/Unauthorized"
  3255          404:
  3256            $ref: "#/components/responses/NotFound"
  3257          default:
  3258            $ref: "#/components/responses/ServerError"
  3259      get:
  3260        tags:
  3261          - repositories
  3262        operationId: restoreStatus
  3263        summary: Status of a restore request
  3264        parameters:
  3265          - in: query
  3266            name: task_id
  3267            required: true
  3268            schema:
  3269              type: string
  3270        responses:
  3271          200:
  3272            description: restore task status
  3273            content:
  3274              application/json:
  3275                schema:
  3276                  $ref: "#/components/schemas/RepositoryRestoreStatus"
  3277          400:
  3278            $ref: "#/components/responses/ValidationError"
  3279          401:
  3280            $ref: "#/components/responses/Unauthorized"
  3281          404:
  3282            $ref: "#/components/responses/NotFound"
  3283          420:
  3284            description: too many requests
  3285          default:
  3286            $ref: "#/components/responses/ServerError"
  3287  
  3288    /repositories/{repository}/tags:
  3289      parameters:
  3290        - in: path
  3291          name: repository
  3292          required: true
  3293          schema:
  3294            type: string
  3295      get:
  3296        tags:
  3297          - tags
  3298        operationId: listTags
  3299        summary: list tags
  3300        parameters:
  3301          - $ref: "#/components/parameters/PaginationPrefix"
  3302          - $ref: "#/components/parameters/PaginationAfter"
  3303          - $ref: "#/components/parameters/PaginationAmount"
  3304        responses:
  3305          200:
  3306            description: tag list
  3307            content:
  3308              application/json:
  3309                schema:
  3310                  $ref: "#/components/schemas/RefList"
  3311          401:
  3312            $ref: "#/components/responses/Unauthorized"
  3313          404:
  3314            $ref: "#/components/responses/NotFound"
  3315          420:
  3316            description: too many requests
  3317          default:
  3318            $ref: "#/components/responses/ServerError"
  3319  
  3320      post:
  3321        tags:
  3322          - tags
  3323        operationId: createTag
  3324        summary: create tag
  3325        requestBody:
  3326          required: true
  3327          content:
  3328            application/json:
  3329              schema:
  3330                $ref: "#/components/schemas/TagCreation"
  3331        responses:
  3332          201:
  3333            description: tag
  3334            content:
  3335              application/json:
  3336                schema:
  3337                  $ref: "#/components/schemas/Ref"
  3338          400:
  3339            $ref: "#/components/responses/ValidationError"
  3340          401:
  3341            $ref: "#/components/responses/Unauthorized"
  3342          403:
  3343            $ref: "#/components/responses/Forbidden"
  3344          404:
  3345            $ref: "#/components/responses/NotFound"
  3346          409:
  3347            $ref: "#/components/responses/Conflict"
  3348          420:
  3349            description: too many requests
  3350          default:
  3351            $ref: "#/components/responses/ServerError"
  3352  
  3353    /repositories/{repository}/tags/{tag}:
  3354      parameters:
  3355        - in: path
  3356          name: repository
  3357          required: true
  3358          schema:
  3359            type: string
  3360        - in: path
  3361          name: tag
  3362          required: true
  3363          schema:
  3364            type: string
  3365      get:
  3366        tags:
  3367          - tags
  3368        operationId: getTag
  3369        summary: get tag
  3370        responses:
  3371          200:
  3372            description: tag
  3373            content:
  3374              application/json:
  3375                schema:
  3376                  $ref: "#/components/schemas/Ref"
  3377          401:
  3378            $ref: "#/components/responses/Unauthorized"
  3379          404:
  3380            $ref: "#/components/responses/NotFound"
  3381          420:
  3382            description: too many requests
  3383          default:
  3384            $ref: "#/components/responses/ServerError"
  3385      delete:
  3386        tags:
  3387          - tags
  3388        operationId: deleteTag
  3389        summary: delete tag
  3390        parameters:
  3391          - in: query
  3392            name: force
  3393            required: false
  3394            schema:
  3395              type: boolean
  3396        responses:
  3397          204:
  3398            description: tag deleted successfully
  3399          401:
  3400            $ref: "#/components/responses/Unauthorized"
  3401          403:
  3402            $ref: "#/components/responses/Forbidden"
  3403          404:
  3404            $ref: "#/components/responses/NotFound"
  3405          420:
  3406            description: too many requests
  3407          default:
  3408            $ref: "#/components/responses/ServerError"
  3409  
  3410    /repositories/{repository}/branches:
  3411      parameters:
  3412        - in: path
  3413          name: repository
  3414          required: true
  3415          schema:
  3416            type: string
  3417      get:
  3418        tags:
  3419          - branches
  3420        operationId: listBranches
  3421        summary: list branches
  3422        parameters:
  3423          - $ref: "#/components/parameters/PaginationPrefix"
  3424          - $ref: "#/components/parameters/PaginationAfter"
  3425          - $ref: "#/components/parameters/PaginationAmount"
  3426        responses:
  3427          200:
  3428            description: branch list
  3429            content:
  3430              application/json:
  3431                schema:
  3432                  $ref: "#/components/schemas/RefList"
  3433          401:
  3434            $ref: "#/components/responses/Unauthorized"
  3435          404:
  3436            $ref: "#/components/responses/NotFound"
  3437          420:
  3438            description: too many requests
  3439          default:
  3440            $ref: "#/components/responses/ServerError"
  3441      post:
  3442        tags:
  3443          - branches
  3444        operationId: createBranch
  3445        summary: create branch
  3446        requestBody:
  3447          required: true
  3448          content:
  3449            application/json:
  3450              schema:
  3451                $ref: "#/components/schemas/BranchCreation"
  3452        responses:
  3453          201:
  3454            description: reference
  3455            content:
  3456              text/html:
  3457                schema:
  3458                  type: string
  3459          400:
  3460            $ref: "#/components/responses/ValidationError"
  3461          401:
  3462            $ref: "#/components/responses/Unauthorized"
  3463          403:
  3464            $ref: "#/components/responses/Forbidden"
  3465          404:
  3466            $ref: "#/components/responses/NotFound"
  3467          409:
  3468            $ref: "#/components/responses/Conflict"
  3469          420:
  3470            description: too many requests
  3471          default:
  3472            $ref: "#/components/responses/ServerError"
  3473  
  3474    /repositories/{repository}/refs/{ref}/commits:
  3475      parameters:
  3476        - in: path
  3477          name: repository
  3478          required: true
  3479          schema:
  3480            type: string
  3481        - in: path
  3482          name: ref
  3483          required: true
  3484          schema:
  3485            type: string
  3486      get:
  3487        tags:
  3488          - refs
  3489        operationId: logCommits
  3490        summary: get commit log from ref. If both objects and prefixes are empty, return all commits.
  3491        parameters:
  3492          - $ref: "#/components/parameters/PaginationAfter"
  3493          - $ref: "#/components/parameters/PaginationAmount"
  3494          - in: query
  3495            name: objects
  3496            description: list of paths, each element is a path of a specific object
  3497            schema:
  3498              type: array
  3499              items:
  3500                type: string
  3501          - in: query
  3502            name: prefixes
  3503            description: list of paths, each element is a path of a prefix
  3504            schema:
  3505              type: array
  3506              items:
  3507                type: string
  3508          - in: query
  3509            name: limit
  3510            description: limit the number of items in return to 'amount'. Without further indication on actual number of items.
  3511            schema:
  3512              type: boolean
  3513          - in: query
  3514            name: first_parent
  3515            description: if set to true, follow only the first parent upon reaching a merge commit
  3516            schema:
  3517              type: boolean
  3518          - in: query
  3519            name: since
  3520            description: Show commits more recent than a specific date-time. In case used with stop_at parameter, will stop at the first commit that meets any of the conditions.
  3521            schema:
  3522              type: string
  3523              format: date-time
  3524          - in: query
  3525            name: stop_at
  3526            description: A reference to stop at. In case used with since parameter, will stop at the first commit that meets any of the conditions.
  3527            schema:
  3528              type: string
  3529        responses:
  3530          200:
  3531            description: commit log
  3532            content:
  3533              application/json:
  3534                schema:
  3535                  $ref: "#/components/schemas/CommitList"
  3536          401:
  3537            $ref: "#/components/responses/Unauthorized"
  3538          404:
  3539            $ref: "#/components/responses/NotFound"
  3540          420:
  3541            description: too many requests
  3542          default:
  3543            $ref: "#/components/responses/ServerError"
  3544  
  3545    /repositories/{repository}/branches/{branch}/commits:
  3546      parameters:
  3547        - in: path
  3548          name: repository
  3549          required: true
  3550          schema:
  3551            type: string
  3552        - in: path
  3553          name: branch
  3554          required: true
  3555          schema:
  3556            type: string
  3557      post:
  3558        parameters:
  3559          - in: query
  3560            name: source_metarange
  3561            required: false
  3562            description: The source metarange to commit. Branch must not have uncommitted changes.
  3563            schema:
  3564              type: string
  3565        tags:
  3566          - commits
  3567        operationId: commit
  3568        summary: create commit
  3569        requestBody:
  3570          required: true
  3571          content:
  3572            application/json:
  3573              schema:
  3574                $ref: "#/components/schemas/CommitCreation"
  3575        responses:
  3576          201:
  3577            description: commit
  3578            content:
  3579              application/json:
  3580                schema:
  3581                  $ref: "#/components/schemas/Commit"
  3582          400:
  3583            $ref: "#/components/responses/ValidationError"
  3584          401:
  3585            $ref: "#/components/responses/Unauthorized"
  3586          403:
  3587            $ref: "#/components/responses/Forbidden"
  3588          404:
  3589            $ref: "#/components/responses/NotFound"
  3590          409:
  3591            $ref: "#/components/responses/Conflict"
  3592          412:
  3593            description: Precondition Failed (e.g. a pre-commit hook returned a failure)
  3594            content:
  3595              application/json:
  3596                schema:
  3597                  $ref: "#/components/schemas/Error"
  3598          420:
  3599            description: too many requests
  3600          default:
  3601            $ref: "#/components/responses/ServerError"
  3602  
  3603    /repositories/{repository}/commits:
  3604      parameters:
  3605        - in: path
  3606          name: repository
  3607          required: true
  3608          schema:
  3609            type: string
  3610      post:
  3611        tags:
  3612          - internal
  3613        operationId: CreateCommitRecord
  3614        summary: create commit record
  3615        requestBody:
  3616          required: true
  3617          content:
  3618            application/json:
  3619              schema:
  3620                $ref: "#/components/schemas/CommitRecordCreation"
  3621        responses:
  3622          204:
  3623            description: commit record created
  3624          400:
  3625            $ref: "#/components/responses/ValidationError"
  3626          401:
  3627            $ref: "#/components/responses/Unauthorized"
  3628          403:
  3629            $ref: "#/components/responses/Forbidden"
  3630          404:
  3631            $ref: "#/components/responses/NotFound"
  3632          420:
  3633            description: too many requests
  3634          default:
  3635            $ref: "#/components/responses/ServerError"
  3636  
  3637    /repositories/{repository}/branches/{branch}:
  3638      parameters:
  3639        - in: path
  3640          name: repository
  3641          required: true
  3642          schema:
  3643            type: string
  3644        - in: path
  3645          name: branch
  3646          required: true
  3647          schema:
  3648            type: string
  3649      get:
  3650        tags:
  3651          - branches
  3652        operationId: getBranch
  3653        summary: get branch
  3654        responses:
  3655          200:
  3656            description: branch
  3657            content:
  3658              application/json:
  3659                schema:
  3660                  $ref: "#/components/schemas/Ref"
  3661          401:
  3662            $ref: "#/components/responses/Unauthorized"
  3663          404:
  3664            $ref: "#/components/responses/NotFound"
  3665          420:
  3666            description: too many requests
  3667          default:
  3668            $ref: "#/components/responses/ServerError"
  3669      delete:
  3670        tags:
  3671          - branches
  3672        operationId: deleteBranch
  3673        summary: delete branch
  3674        parameters:
  3675          - in: query
  3676            name: force
  3677            required: false
  3678            schema:
  3679              type: boolean
  3680              default: false
  3681        responses:
  3682          204:
  3683            description: branch deleted successfully
  3684          401:
  3685            $ref: "#/components/responses/Unauthorized"
  3686          403:
  3687            $ref: "#/components/responses/Forbidden"
  3688          404:
  3689            $ref: "#/components/responses/NotFound"
  3690          420:
  3691            description: too many requests
  3692          default:
  3693            $ref: "#/components/responses/ServerError"
  3694      put:
  3695        tags:
  3696          - branches
  3697        operationId: resetBranch
  3698        summary: reset branch
  3699        requestBody:
  3700          required: true
  3701          content:
  3702            application/json:
  3703              schema:
  3704                $ref: "#/components/schemas/ResetCreation"
  3705        responses:
  3706          204:
  3707            description: reset successful
  3708          400:
  3709            $ref: "#/components/responses/BadRequest"
  3710          401:
  3711            $ref: "#/components/responses/Unauthorized"
  3712          403:
  3713            $ref: "#/components/responses/Forbidden"
  3714          404:
  3715            $ref: "#/components/responses/NotFound"
  3716          420:
  3717            description: too many requests
  3718          default:
  3719            $ref: "#/components/responses/ServerError"
  3720  
  3721    /repositories/{repository}/branches/{branch}/hard_reset:
  3722      parameters:
  3723        - in: path
  3724          name: repository
  3725          required: true
  3726          schema:
  3727            type: string
  3728        - in: path
  3729          name: branch
  3730          required: true
  3731          schema:
  3732            type: string
  3733      put:
  3734        tags:
  3735          - experimental
  3736        operationId: hardResetBranch
  3737        summary: hard reset branch
  3738        description:
  3739          Relocate branch to refer to ref.  Branch must not contain
  3740          uncommitted data.
  3741        parameters:
  3742          - in: query
  3743            name: ref
  3744            required: true
  3745            schema:
  3746              type: string
  3747            description: After reset, branch will point at this reference.
  3748          - in: query
  3749            name: force
  3750            required: false
  3751            schema:
  3752              type: boolean
  3753              default: false
  3754        responses:
  3755          204:
  3756            description: reset successful
  3757          400:
  3758            $ref: "#/components/responses/BadRequest"
  3759          401:
  3760            $ref: "#/components/responses/Unauthorized"
  3761          403:
  3762            $ref: "#/components/responses/Forbidden"
  3763          404:
  3764            $ref: "#/components/responses/NotFound"
  3765          420:
  3766            description: too many requests
  3767          default:
  3768            $ref: "#/components/responses/ServerError"
  3769  
  3770    /repositories/{repository}/branches/{branch}/revert:
  3771      parameters:
  3772        - in: path
  3773          name: repository
  3774          required: true
  3775          schema:
  3776            type: string
  3777        - in: path
  3778          name: branch
  3779          required: true
  3780          schema:
  3781            type: string
  3782      post:
  3783        tags:
  3784          - branches
  3785        operationId: revertBranch
  3786        summary: revert
  3787        requestBody:
  3788          required: true
  3789          content:
  3790            application/json:
  3791              schema:
  3792                $ref: "#/components/schemas/RevertCreation"
  3793        responses:
  3794          204:
  3795            description: revert successful
  3796          400:
  3797            $ref: "#/components/responses/ValidationError"
  3798          401:
  3799            $ref: "#/components/responses/Unauthorized"
  3800          403:
  3801            $ref: "#/components/responses/Forbidden"
  3802          404:
  3803            $ref: "#/components/responses/NotFound"
  3804          409:
  3805            description: Conflict Found
  3806            content:
  3807              application/json:
  3808                schema:
  3809                  $ref: "#/components/schemas/Error"
  3810          420:
  3811            description: too many requests
  3812          default:
  3813            $ref: "#/components/responses/ServerError"
  3814  
  3815    /repositories/{repository}/branches/{branch}/cherry-pick:
  3816      parameters:
  3817        - in: path
  3818          name: repository
  3819          required: true
  3820          schema:
  3821            type: string
  3822        - in: path
  3823          name: branch
  3824          required: true
  3825          schema:
  3826            type: string
  3827      post:
  3828        tags:
  3829          - branches
  3830        operationId: cherryPick
  3831        summary: Replay the changes from the given commit on the branch
  3832        requestBody:
  3833          required: true
  3834          content:
  3835            application/json:
  3836              schema:
  3837                $ref: "#/components/schemas/CherryPickCreation"
  3838        responses:
  3839          201:
  3840            description: the cherry-pick commit
  3841            content:
  3842              application/json:
  3843                schema:
  3844                  $ref: "#/components/schemas/Commit"
  3845          400:
  3846            $ref: "#/components/responses/ValidationError"
  3847          401:
  3848            $ref: "#/components/responses/Unauthorized"
  3849          403:
  3850            $ref: "#/components/responses/Forbidden"
  3851          404:
  3852            $ref: "#/components/responses/NotFound"
  3853          409:
  3854            description: Conflict Found
  3855            content:
  3856              application/json:
  3857                schema:
  3858                  $ref: "#/components/schemas/Error"
  3859          420:
  3860            description: too many requests
  3861          default:
  3862            $ref: "#/components/responses/ServerError"
  3863  
  3864    /repositories/{repository}/refs/{sourceRef}/merge/{destinationBranch}:
  3865      parameters:
  3866        - in: path
  3867          name: repository
  3868          required: true
  3869          schema:
  3870            type: string
  3871        - in: path
  3872          name: sourceRef
  3873          required: true
  3874          schema:
  3875            type: string
  3876          description: source ref
  3877        - in: path
  3878          name: destinationBranch
  3879          required: true
  3880          schema:
  3881            type: string
  3882          description: destination branch name
  3883      post:
  3884        tags:
  3885          - refs
  3886        operationId: mergeIntoBranch
  3887        summary: merge references
  3888        requestBody:
  3889          content:
  3890            application/json:
  3891              schema:
  3892                $ref: "#/components/schemas/Merge"
  3893        responses:
  3894          200:
  3895            description: merge completed
  3896            content:
  3897              application/json:
  3898                schema:
  3899                  $ref: "#/components/schemas/MergeResult"
  3900          400:
  3901            $ref: "#/components/responses/ValidationError"
  3902          401:
  3903            $ref: "#/components/responses/Unauthorized"
  3904          403:
  3905            $ref: "#/components/responses/Forbidden"
  3906          404:
  3907            $ref: "#/components/responses/NotFound"
  3908          409:
  3909            description: |
  3910              Conflict
  3911              Deprecated: content schema will return Error format and not an empty MergeResult
  3912            content:
  3913              application/json:
  3914                schema:
  3915                  $ref: "#/components/schemas/MergeResult"
  3916          412:
  3917            description: precondition failed (e.g. a pre-merge hook returned a failure)
  3918            content:
  3919              application/json:
  3920                schema:
  3921                  $ref: "#/components/schemas/Error"
  3922          420:
  3923            description: too many requests
  3924          default:
  3925            $ref: "#/components/responses/ServerError"
  3926      get:
  3927        tags:
  3928          - refs
  3929        operationId: findMergeBase
  3930        summary: find the merge base for 2 references
  3931        responses:
  3932          200:
  3933            description: Found the merge base
  3934            content:
  3935              application/json:
  3936                schema:
  3937                  $ref: "#/components/schemas/FindMergeBaseResult"
  3938          400:
  3939            $ref: "#/components/responses/ValidationError"
  3940          401:
  3941            $ref: "#/components/responses/Unauthorized"
  3942          404:
  3943            $ref: "#/components/responses/NotFound"
  3944          420:
  3945            description: too many requests
  3946          default:
  3947            $ref: "#/components/responses/ServerError"
  3948  
  3949    /repositories/{repository}/branches/{branch}/diff:
  3950      parameters:
  3951        - $ref: "#/components/parameters/PaginationAfter"
  3952        - $ref: "#/components/parameters/PaginationAmount"
  3953        - $ref: "#/components/parameters/PaginationPrefix"
  3954        - $ref: "#/components/parameters/PaginationDelimiter"
  3955        - in: path
  3956          name: repository
  3957          required: true
  3958          schema:
  3959            type: string
  3960        - in: path
  3961          name: branch
  3962          required: true
  3963          schema:
  3964            type: string
  3965  
  3966      get:
  3967        tags:
  3968          - branches
  3969        operationId: diffBranch
  3970        summary: diff branch
  3971        responses:
  3972          200:
  3973            description: diff of branch uncommitted changes
  3974            content:
  3975              application/json:
  3976                schema:
  3977                  $ref: "#/components/schemas/DiffList"
  3978          401:
  3979            $ref: "#/components/responses/Unauthorized"
  3980          404:
  3981            $ref: "#/components/responses/NotFound"
  3982          420:
  3983            description: too many requests
  3984          default:
  3985            $ref: "#/components/responses/ServerError"
  3986  
  3987    /repositories/{repository}/refs/{leftRef}/diff/{rightRef}:
  3988      parameters:
  3989        - in: path
  3990          name: repository
  3991          required: true
  3992          schema:
  3993            type: string
  3994        - in: path
  3995          name: leftRef
  3996          required: true
  3997          schema:
  3998            type: string
  3999          description: a reference (could be either a branch or a commit ID)
  4000        - in: path
  4001          name: rightRef
  4002          required: true
  4003          schema:
  4004            type: string
  4005          description: a reference (could be either a branch or a commit ID) to compare against
  4006        - $ref: "#/components/parameters/PaginationAfter"
  4007        - $ref: "#/components/parameters/PaginationAmount"
  4008        - $ref: "#/components/parameters/PaginationPrefix"
  4009        - $ref: "#/components/parameters/PaginationDelimiter"
  4010        - in: query
  4011          name: type
  4012          schema:
  4013            type: string
  4014            enum: [two_dot, three_dot]
  4015            default: three_dot
  4016  
  4017      get:
  4018        tags:
  4019          - refs
  4020        operationId: diffRefs
  4021        summary: diff references
  4022        responses:
  4023          200:
  4024            description: diff between refs
  4025            content:
  4026              application/json:
  4027                schema:
  4028                  $ref: "#/components/schemas/DiffList"
  4029          401:
  4030            $ref: "#/components/responses/Unauthorized"
  4031          404:
  4032            $ref: "#/components/responses/NotFound"
  4033          420:
  4034            description: too many requests
  4035          default:
  4036            $ref: "#/components/responses/ServerError"
  4037  
  4038    /repositories/{repository}/commits/{commitId}:
  4039      parameters:
  4040        - in: path
  4041          name: repository
  4042          required: true
  4043          schema:
  4044            type: string
  4045        - in: path
  4046          name: commitId
  4047          required: true
  4048          schema:
  4049            type: string
  4050      get:
  4051        tags:
  4052          - commits
  4053        operationId: getCommit
  4054        summary: get commit
  4055        responses:
  4056          200:
  4057            description: commit
  4058            content:
  4059              application/json:
  4060                schema:
  4061                  $ref: "#/components/schemas/Commit"
  4062          401:
  4063            $ref: "#/components/responses/Unauthorized"
  4064          404:
  4065            $ref: "#/components/responses/NotFound"
  4066          420:
  4067            description: too many requests
  4068          default:
  4069            $ref: "#/components/responses/ServerError"
  4070  
  4071    /repositories/{repository}/refs/{ref}/objects:
  4072      parameters:
  4073        - in: path
  4074          name: repository
  4075          required: true
  4076          schema:
  4077            type: string
  4078        - in: path
  4079          name: ref
  4080          required: true
  4081          schema:
  4082            type: string
  4083          description: a reference (could be either a branch or a commit ID)
  4084        - in: query
  4085          name: path
  4086          description: relative to the ref
  4087          required: true
  4088          schema:
  4089            type: string
  4090      get:
  4091        tags:
  4092          - objects
  4093        operationId: getObject
  4094        summary: get object content
  4095        parameters:
  4096          - in: header
  4097            name: Range
  4098            description: Byte range to retrieve
  4099            example: "bytes=0-1023"
  4100            required: false
  4101            schema:
  4102              type: string
  4103              pattern: '^bytes=((\d*-\d*,? ?)+)$'
  4104          - in: header
  4105            name: If-None-Match
  4106            description: Returns response only if the object does not have a matching ETag
  4107            example: "33a64df551425fcc55e4d42a148795d9f25f89d4"
  4108            required: false
  4109            schema:
  4110              type: string
  4111          - in: query
  4112            name: presign
  4113            required: false
  4114            schema:
  4115              type: boolean
  4116        responses:
  4117          200:
  4118            description: object content
  4119            content:
  4120              application/octet-stream:
  4121                schema:
  4122                  type: string
  4123                  format: binary
  4124            headers:
  4125              Content-Length:
  4126                schema:
  4127                  type: integer
  4128                  format: int64
  4129              Last-Modified:
  4130                schema:
  4131                  type: string
  4132              ETag:
  4133                schema:
  4134                  type: string
  4135          206:
  4136            description: partial object content
  4137            content:
  4138              application/octet-stream:
  4139                schema:
  4140                  type: string
  4141                  format: binary
  4142            headers:
  4143              Content-Length:
  4144                schema:
  4145                  type: integer
  4146                  format: int64
  4147              Content-Range:
  4148                schema:
  4149                  type: string
  4150                  pattern: '^bytes=((\d*-\d*,? ?)+)$'
  4151              Last-Modified:
  4152                schema:
  4153                  type: string
  4154              ETag:
  4155                schema:
  4156                  type: string
  4157          302:
  4158            description: Redirect to a pre-signed URL for the object
  4159            headers:
  4160              Location:
  4161                schema:
  4162                  type: string
  4163          304:
  4164            description: Content not modified
  4165          401:
  4166            $ref: "#/components/responses/Unauthorized"
  4167          404:
  4168            $ref: "#/components/responses/NotFound"
  4169          410:
  4170            description: object expired
  4171            content:
  4172              application/json:
  4173                schema:
  4174                  $ref: "#/components/schemas/Error"
  4175          416:
  4176            description: Requested Range Not Satisfiable
  4177            content:
  4178              application/json:
  4179                schema:
  4180                  $ref: "#/components/schemas/Error"
  4181          420:
  4182            description: too many requests
  4183          default:
  4184            $ref: "#/components/responses/ServerError"
  4185      head:
  4186        tags:
  4187          - objects
  4188        operationId: headObject
  4189        summary: check if object exists
  4190        parameters:
  4191          - in: header
  4192            name: Range
  4193            description: Byte range to retrieve
  4194            example: "bytes=0-1023"
  4195            required: false
  4196            schema:
  4197              type: string
  4198              pattern: '^bytes=((\d*-\d*,? ?)+)$'
  4199        responses:
  4200          200:
  4201            description: object exists
  4202            headers:
  4203              Content-Length:
  4204                schema:
  4205                  type: integer
  4206                  format: int64
  4207              Last-Modified:
  4208                schema:
  4209                  type: string
  4210              ETag:
  4211                schema:
  4212                  type: string
  4213          206:
  4214            description: partial object content info
  4215            headers:
  4216              Content-Length:
  4217                schema:
  4218                  type: integer
  4219                  format: int64
  4220              Content-Range:
  4221                schema:
  4222                  type: string
  4223                  pattern: '^bytes=((\d*-\d*,? ?)+)$'
  4224              Last-Modified:
  4225                schema:
  4226                  type: string
  4227              ETag:
  4228                schema:
  4229                  type: string
  4230          401:
  4231            description: Unauthorized
  4232          404:
  4233            description: object not found
  4234          410:
  4235            description: object expired
  4236          416:
  4237            description: Requested Range Not Satisfiable
  4238          420:
  4239            description: too many requests
  4240          default:
  4241            description: internal server error
  4242  
  4243    /repositories/{repository}/branches/{branch}/staging/pmpu:
  4244      parameters:
  4245        - in: path
  4246          name: repository
  4247          required: true
  4248          schema:
  4249            type: string
  4250        - in: path
  4251          name: branch
  4252          required: true
  4253          schema:
  4254            type: string
  4255        - in: query
  4256          name: path
  4257          description: relative to the branch
  4258          required: true
  4259          schema:
  4260            type: string
  4261        - in: query
  4262          name: parts
  4263          description: number of presigned URL parts required to upload
  4264          schema:
  4265            type: integer
  4266      post:
  4267        tags:
  4268          - experimental
  4269        operationId: createPresignMultipartUpload
  4270        summary: Initiate a multipart upload
  4271        description: |
  4272          Initiates a multipart upload and returns an upload ID with presigned URLs for each part (optional).
  4273          Part numbers starts with 1. Each part except the last one has minimum size depends on the underlying blockstore implementation.
  4274          For example working with S3 blockstore, minimum size is 5MB (excluding the last part).
  4275        responses:
  4276          201:
  4277            description: Presign multipart upload initiated
  4278            content:
  4279              application/json:
  4280                schema:
  4281                  $ref: "#/components/schemas/PresignMultipartUpload"
  4282          400:
  4283            $ref: "#/components/responses/BadRequest"
  4284          401:
  4285            $ref: "#/components/responses/Unauthorized"
  4286          404:
  4287            $ref: "#/components/responses/NotFound"
  4288          420:
  4289            description: too many requests
  4290          default:
  4291            $ref: "#/components/responses/ServerError"
  4292  
  4293    /repositories/{repository}/branches/{branch}/staging/pmpu/{uploadId}:
  4294      parameters:
  4295        - in: path
  4296          name: repository
  4297          required: true
  4298          schema:
  4299            type: string
  4300        - in: path
  4301          name: branch
  4302          required: true
  4303          schema:
  4304            type: string
  4305        - in: path
  4306          name: uploadId
  4307          required: true
  4308          schema:
  4309            type: string
  4310        - in: query
  4311          name: path
  4312          description: relative to the branch
  4313          required: true
  4314          schema:
  4315            type: string
  4316      put:
  4317        tags:
  4318          - experimental
  4319        operationId: completePresignMultipartUpload
  4320        summary: Complete a presign multipart upload request
  4321        description: Completes a presign multipart upload by assembling the uploaded parts.
  4322        requestBody:
  4323          content:
  4324            application/json:
  4325              schema:
  4326                $ref: "#/components/schemas/CompletePresignMultipartUpload"
  4327        responses:
  4328          200:
  4329            description: Presign multipart upload completed
  4330            content:
  4331              application/json:
  4332                schema:
  4333                  $ref: "#/components/schemas/ObjectStats"
  4334          400:
  4335            $ref: "#/components/responses/BadRequest"
  4336          401:
  4337            $ref: "#/components/responses/Unauthorized"
  4338          404:
  4339            $ref: "#/components/responses/NotFound"
  4340          409:
  4341            description: conflict with a commit, try here
  4342            content:
  4343              application/json:
  4344                schema:
  4345                  $ref: "#/components/schemas/StagingLocation"
  4346          420:
  4347            description: too many requests
  4348          default:
  4349            $ref: "#/components/responses/ServerError"
  4350  
  4351      delete:
  4352        tags:
  4353          - experimental
  4354        operationId: abortPresignMultipartUpload
  4355        summary: Abort a presign multipart upload
  4356        description: Aborts a presign multipart upload.
  4357        requestBody:
  4358          content:
  4359            application/json:
  4360              schema:
  4361                $ref: "#/components/schemas/AbortPresignMultipartUpload"
  4362        responses:
  4363          204:
  4364            description: Presign multipart upload aborted
  4365          400:
  4366            $ref: "#/components/responses/BadRequest"
  4367          401:
  4368            $ref: "#/components/responses/Unauthorized"
  4369          404:
  4370            $ref: "#/components/responses/NotFound"
  4371          420:
  4372            description: too many requests
  4373          default:
  4374            $ref: "#/components/responses/ServerError"
  4375  
  4376  
  4377    /repositories/{repository}/branches/{branch}/staging/backing:
  4378      parameters:
  4379        - in: path
  4380          name: repository
  4381          required: true
  4382          schema:
  4383            type: string
  4384        - in: path
  4385          name: branch
  4386          required: true
  4387          schema:
  4388            type: string
  4389        - in: query
  4390          name: path
  4391          description: relative to the branch
  4392          required: true
  4393          schema:
  4394            type: string
  4395      get:
  4396        tags:
  4397          - staging
  4398        operationId: getPhysicalAddress
  4399        summary: generate an address to which the client can upload an object
  4400        parameters:
  4401          - in: query
  4402            name: presign
  4403            required: false
  4404            schema:
  4405              type: boolean
  4406        responses:
  4407          200:
  4408            description: physical address for staging area
  4409            content:
  4410              application/json:
  4411                schema:
  4412                  $ref: "#/components/schemas/StagingLocation"
  4413          401:
  4414            $ref: "#/components/responses/Unauthorized"
  4415          404:
  4416            $ref: "#/components/responses/NotFound"
  4417          420:
  4418            description: too many requests
  4419          default:
  4420            $ref: "#/components/responses/ServerError"
  4421  
  4422      put:
  4423        tags:
  4424          - staging
  4425        operationId: linkPhysicalAddress
  4426        summary: associate staging on this physical address with a path
  4427        description: |
  4428          Link the physical address with the path in lakeFS, creating an uncommitted change.
  4429          The given address can be one generated by getPhysicalAddress, or an address outside the repository's storage namespace.
  4430        requestBody:
  4431          required: true
  4432          content:
  4433            application/json:
  4434              schema:
  4435                $ref: "#/components/schemas/StagingMetadata"
  4436                
  4437        parameters:
  4438          - $ref: "#/components/parameters/IfNoneMatch"
  4439            
  4440        responses:
  4441          200:
  4442            # This actually violates HTTP, which requires returning 201 if a new object was
  4443            # created or 200 if an existing object was modified,
  4444            # https://tools.ietf.org/html/rfc7231#section-4.3.4
  4445            description: object metadata
  4446            content:
  4447              application/json:
  4448                schema:
  4449                  $ref: "#/components/schemas/ObjectStats"
  4450          400:
  4451            $ref: "#/components/responses/ValidationError"
  4452          401:
  4453            $ref: "#/components/responses/Unauthorized"
  4454          403:
  4455            $ref: "#/components/responses/Forbidden"
  4456          404:
  4457            $ref: "#/components/responses/ServerError"
  4458          409:
  4459            description: conflict with a commit, try here
  4460            content:
  4461              application/json:
  4462                schema:
  4463                  $ref: "#/components/schemas/StagingLocation"
  4464          412:
  4465            $ref: "#/components/responses/PreconditionFailed"
  4466          420:
  4467            description: too many requests
  4468          default:
  4469            $ref: "#/components/responses/ServerError"
  4470  
  4471    /repositories/{repository}/branches/{branch}/import:
  4472      parameters:
  4473        - in: path
  4474          name: repository
  4475          required: true
  4476          schema:
  4477            type: string
  4478        - in: path
  4479          name: branch
  4480          required: true
  4481          schema:
  4482            type: string
  4483      get:
  4484        tags:
  4485          - import
  4486        operationId: importStatus
  4487        summary: get import status
  4488        parameters:
  4489          - in: query
  4490            name: id
  4491            description: Unique identifier of the import process
  4492            schema:
  4493              type: string
  4494            required: true
  4495        responses:
  4496          200:
  4497            description: import status
  4498            content:
  4499              application/json:
  4500                schema:
  4501                  $ref: "#/components/schemas/ImportStatus"
  4502          401:
  4503            $ref: "#/components/responses/Unauthorized"
  4504          404:
  4505            $ref: "#/components/responses/NotFound"
  4506          420:
  4507            description: too many requests
  4508          default:
  4509            $ref: "#/components/responses/ServerError"
  4510      post:
  4511        tags:
  4512          - import
  4513        operationId: importStart
  4514        summary: import data from object store
  4515        requestBody:
  4516          required: true
  4517          content:
  4518            application/json:
  4519              schema:
  4520                $ref: "#/components/schemas/ImportCreation"
  4521        responses:
  4522          202:
  4523            description: Import started
  4524            content:
  4525              application/json:
  4526                schema:
  4527                  $ref: "#/components/schemas/ImportCreationResponse"
  4528          400:
  4529            $ref: "#/components/responses/ValidationError"
  4530          401:
  4531            $ref: "#/components/responses/Unauthorized"
  4532          403:
  4533            $ref: "#/components/responses/Forbidden"
  4534          404:
  4535            $ref: "#/components/responses/NotFound"
  4536          420:
  4537            description: too many requests
  4538          default:
  4539            $ref: "#/components/responses/ServerError"
  4540      delete:
  4541        tags:
  4542          - import
  4543        operationId: importCancel
  4544        summary: cancel ongoing import
  4545        parameters:
  4546          - in: query
  4547            name: id
  4548            description: Unique identifier of the import process
  4549            schema:
  4550              type: string
  4551            required: true
  4552        responses:
  4553          204:
  4554            description: import canceled successfully
  4555          401:
  4556            $ref: "#/components/responses/Unauthorized"
  4557          403:
  4558            $ref: "#/components/responses/Forbidden"
  4559          404:
  4560            $ref: "#/components/responses/NotFound"
  4561          409:
  4562            $ref: "#/components/responses/Conflict"
  4563          420:
  4564            description: too many requests
  4565          default:
  4566            $ref: "#/components/responses/ServerError"
  4567  
  4568    /repositories/{repository}/branches/{branch}/objects/stage_allowed:
  4569      parameters:
  4570        - in: path
  4571          name: repository
  4572          required: true
  4573          schema:
  4574            type: string
  4575        - in: path
  4576          name: branch
  4577          required: true
  4578          schema:
  4579            type: string
  4580        - in: query
  4581          name: path
  4582          description: relative to the branch
  4583          required: true
  4584          schema:
  4585            type: string
  4586      get:
  4587        tags:
  4588          - internal
  4589        operationId: uploadObjectPreflight
  4590        responses:
  4591          204:
  4592            description: User has permissions to upload this object. This does not guarantee that the upload will be successful or even possible. It indicates only the permission at the time of calling this endpoint
  4593          401:
  4594            $ref: "#/components/responses/Unauthorized"
  4595          403:
  4596            $ref: "#/components/responses/Forbidden"
  4597          404:
  4598            $ref: "#/components/responses/NotFound"
  4599          420:
  4600            description: too many requests
  4601          default:
  4602            $ref: "#/components/responses/ServerError"
  4603  
  4604    /repositories/{repository}/branches/{branch}/objects:
  4605      parameters:
  4606        - in: path
  4607          name: repository
  4608          required: true
  4609          schema:
  4610            type: string
  4611        - in: path
  4612          name: branch
  4613          required: true
  4614          schema:
  4615            type: string
  4616        - in: query
  4617          name: path
  4618          description: relative to the branch
  4619          required: true
  4620          schema:
  4621            type: string
  4622      put:
  4623        deprecated: true
  4624        tags:
  4625          - internal
  4626        operationId: stageObject
  4627        summary: stage an object's metadata for the given branch
  4628        requestBody:
  4629          required: true
  4630          content:
  4631            application/json:
  4632              schema:
  4633                $ref: "#/components/schemas/ObjectStageCreation"
  4634        responses:
  4635          201:
  4636            description: object metadata
  4637            content:
  4638              application/json:
  4639                schema:
  4640                  $ref: "#/components/schemas/ObjectStats"
  4641          400:
  4642            $ref: "#/components/responses/ValidationError"
  4643          401:
  4644            $ref: "#/components/responses/Unauthorized"
  4645          403:
  4646            $ref: "#/components/responses/Forbidden"
  4647          404:
  4648            $ref: "#/components/responses/NotFound"
  4649          420:
  4650            description: too many requests
  4651          default:
  4652            $ref: "#/components/responses/ServerError"
  4653  
  4654      post:
  4655        tags:
  4656          - objects
  4657        operationId: uploadObject
  4658        x-validation-exclude-body: true
  4659        requestBody:
  4660          content:
  4661            multipart/form-data:
  4662              schema:
  4663                type: object
  4664                properties:
  4665                  content:
  4666                    description: Only a single file per upload which must be named "content".
  4667                    type: string
  4668                    format: binary
  4669            application/octet-stream:
  4670              schema:
  4671                type: string
  4672                format: binary
  4673  
  4674        parameters:
  4675          - $ref: "#/components/parameters/IfNoneMatch"
  4676          - in: query
  4677            name: storageClass
  4678            description: Deprecated, this capability will not be supported in future releases.
  4679            required: false
  4680            deprecated: true
  4681            schema:
  4682              type: string
  4683          - in: query
  4684            name: force
  4685            required: false
  4686            schema:
  4687              type: boolean
  4688              default: false
  4689        responses:
  4690          201:
  4691            description: object metadata
  4692            content:
  4693              application/json:
  4694                schema:
  4695                  $ref: "#/components/schemas/ObjectStats"
  4696          400:
  4697            $ref: "#/components/responses/ValidationError"
  4698          401:
  4699            $ref: "#/components/responses/Unauthorized"
  4700          403:
  4701            $ref: "#/components/responses/Forbidden"
  4702          404:
  4703            $ref: "#/components/responses/NotFound"
  4704          412:
  4705            $ref: "#/components/responses/PreconditionFailed"
  4706          420:
  4707            description: too many requests
  4708          default:
  4709            $ref: "#/components/responses/ServerError"
  4710      delete:
  4711        tags:
  4712          - objects
  4713        operationId: deleteObject
  4714        summary: delete object. Missing objects will not return a NotFound error.
  4715        parameters:
  4716          - in: query
  4717            name: force
  4718            required: false
  4719            schema:
  4720              type: boolean
  4721              default: false
  4722        responses:
  4723          204:
  4724            description: object deleted successfully
  4725          401:
  4726            $ref: "#/components/responses/Unauthorized"
  4727          403:
  4728            $ref: "#/components/responses/Forbidden"
  4729          404:
  4730            $ref: "#/components/responses/NotFound"
  4731          420:
  4732            description: too many requests
  4733          default:
  4734            $ref: "#/components/responses/ServerError"
  4735  
  4736    /repositories/{repository}/branches/{branch}/objects/delete:
  4737      parameters:
  4738        - in: path
  4739          name: repository
  4740          required: true
  4741          schema:
  4742            type: string
  4743        - in: path
  4744          name: branch
  4745          required: true
  4746          schema:
  4747            type: string
  4748        - in: query
  4749          name: force
  4750          required: false
  4751          schema:
  4752            type: boolean
  4753            default: false
  4754      post:
  4755        tags:
  4756          - objects
  4757        operationId: deleteObjects
  4758        summary: delete objects. Missing objects will not return a NotFound error.
  4759        requestBody:
  4760          required: true
  4761          content:
  4762            application/json:
  4763              schema:
  4764                $ref: "#/components/schemas/PathList"
  4765        responses:
  4766          200:
  4767            description: Delete objects response
  4768            content:
  4769              application/json:
  4770                schema:
  4771                  $ref: "#/components/schemas/ObjectErrorList"
  4772          401:
  4773            $ref: "#/components/responses/Unauthorized"
  4774          403:
  4775            $ref: "#/components/responses/Forbidden"
  4776          404:
  4777            $ref: "#/components/responses/NotFound"
  4778          420:
  4779            description: too many requests
  4780          default:
  4781            $ref: "#/components/responses/ServerError"
  4782  
  4783    /repositories/{repository}/branches/{branch}/objects/copy:
  4784      parameters:
  4785        - in: path
  4786          name: repository
  4787          required: true
  4788          schema:
  4789            type: string
  4790        - in: path
  4791          name: branch
  4792          required: true
  4793          schema:
  4794            type: string
  4795          description: destination branch for the copy
  4796        - in: query
  4797          name: dest_path
  4798          description: destination path relative to the branch
  4799          required: true
  4800          schema:
  4801            type: string
  4802      post:
  4803        tags:
  4804          - objects
  4805        operationId: copyObject
  4806        summary: create a copy of an object
  4807        requestBody:
  4808          required: true
  4809          content:
  4810            application/json:
  4811              schema:
  4812                $ref: "#/components/schemas/ObjectCopyCreation"
  4813        responses:
  4814          201:
  4815            description: Copy object response
  4816            content:
  4817              application/json:
  4818                schema:
  4819                  $ref: "#/components/schemas/ObjectStats"
  4820          400:
  4821            $ref: "#/components/responses/ValidationError"
  4822          401:
  4823            $ref: "#/components/responses/Unauthorized"
  4824          403:
  4825            $ref: "#/components/responses/Forbidden"
  4826          404:
  4827            $ref: "#/components/responses/NotFound"
  4828          420:
  4829            description: too many requests
  4830          default:
  4831            $ref: "#/components/responses/ServerError"
  4832  
  4833    /repositories/{repository}/refs/{ref}/objects/stat:
  4834      parameters:
  4835        - in: path
  4836          name: repository
  4837          required: true
  4838          schema:
  4839            type: string
  4840        - in: path
  4841          name: ref
  4842          required: true
  4843          schema:
  4844            type: string
  4845          description: a reference (could be either a branch or a commit ID)
  4846        - in: query
  4847          name: path
  4848          description: relative to the branch
  4849          required: true
  4850          schema:
  4851            type: string
  4852        - in: query
  4853          name: user_metadata
  4854          required: false
  4855          schema:
  4856            type: boolean
  4857            default: true
  4858        - in: query
  4859          name: presign
  4860          required: false
  4861          schema:
  4862            type: boolean
  4863      get:
  4864        tags:
  4865          - objects
  4866        operationId: statObject
  4867        summary: get object metadata
  4868        responses:
  4869          200:
  4870            description: object metadata
  4871            content:
  4872              application/json:
  4873                schema:
  4874                  $ref: "#/components/schemas/ObjectStats"
  4875          401:
  4876            $ref: "#/components/responses/Unauthorized"
  4877          404:
  4878            $ref: "#/components/responses/NotFound"
  4879          400:
  4880            $ref: "#/components/responses/BadRequest"
  4881          410:
  4882            description: object gone (but partial metadata may be available)
  4883          420:
  4884            description: too many requests
  4885          default:
  4886            $ref: "#/components/responses/ServerError"
  4887  
  4888    /repositories/{repository}/refs/{ref}/objects/underlyingProperties:
  4889      parameters:
  4890        - in: path
  4891          name: repository
  4892          required: true
  4893          schema:
  4894            type: string
  4895        - in: path
  4896          name: ref
  4897          required: true
  4898          schema:
  4899            type: string
  4900          description: a reference (could be either a branch or a commit ID)
  4901        - in: query
  4902          name: path
  4903          description: relative to the branch
  4904          required: true
  4905          schema:
  4906            type: string
  4907      get:
  4908        tags:
  4909          - objects
  4910        operationId: getUnderlyingProperties
  4911        summary: get object properties on underlying storage
  4912        responses:
  4913          200:
  4914            description: object metadata on underlying storage
  4915            content:
  4916              application/json:
  4917                schema:
  4918                  $ref: "#/components/schemas/UnderlyingObjectProperties"
  4919          401:
  4920            $ref: "#/components/responses/Unauthorized"
  4921          404:
  4922            $ref: "#/components/responses/NotFound"
  4923          420:
  4924            description: too many requests
  4925          default:
  4926            $ref: "#/components/responses/ServerError"
  4927  
  4928    /repositories/{repository}/refs/{ref}/objects/ls:
  4929      parameters:
  4930        - in: path
  4931          name: repository
  4932          required: true
  4933          schema:
  4934            type: string
  4935        - in: path
  4936          name: ref
  4937          required: true
  4938          schema:
  4939            type: string
  4940          description: a reference (could be either a branch or a commit ID)
  4941        - in: query
  4942          name: user_metadata
  4943          required: false
  4944          schema:
  4945            type: boolean
  4946            default: true
  4947        - in: query
  4948          name: presign
  4949          required: false
  4950          schema:
  4951            type: boolean
  4952        - $ref: "#/components/parameters/PaginationAfter"
  4953        - $ref: "#/components/parameters/PaginationAmount"
  4954        - $ref: "#/components/parameters/PaginationDelimiter"
  4955        - $ref: "#/components/parameters/PaginationPrefix"
  4956  
  4957      get:
  4958        tags:
  4959          - objects
  4960        operationId: listObjects
  4961        summary: list objects under a given prefix
  4962        responses:
  4963          200:
  4964            description: object listing
  4965            content:
  4966              application/json:
  4967                schema:
  4968                  $ref: "#/components/schemas/ObjectStatsList"
  4969          401:
  4970            $ref: "#/components/responses/Unauthorized"
  4971          404:
  4972            $ref: "#/components/responses/NotFound"
  4973          420:
  4974            description: too many requests
  4975          default:
  4976            $ref: "#/components/responses/ServerError"
  4977  
  4978    /repositories/{repository}/refs/{branch}/symlink:
  4979      parameters:
  4980        - in: path
  4981          name: repository
  4982          required: true
  4983          schema:
  4984            type: string
  4985        - in: path
  4986          name: branch
  4987          required: true
  4988          schema:
  4989            type: string
  4990        - in: query
  4991          name: location
  4992          schema:
  4993            type: string
  4994          description: path to the table data
  4995      post:
  4996        tags:
  4997          - internal
  4998        operationId: createSymlinkFile
  4999        summary: creates symlink files corresponding to the given directory
  5000  
  5001        responses:
  5002          201:
  5003            description: location created
  5004            content:
  5005              application/json:
  5006                schema:
  5007                  $ref: "#/components/schemas/StorageURI"
  5008          401:
  5009            $ref: "#/components/responses/Unauthorized"
  5010          404:
  5011            $ref: "#/components/responses/NotFound"
  5012          420:
  5013            description: too many requests
  5014          default:
  5015            $ref: "#/components/responses/ServerError"
  5016  
  5017    /repositories/{repository}/actions/runs:
  5018      get:
  5019        tags:
  5020          - actions
  5021        operationId: listRepositoryRuns
  5022        summary: list runs
  5023        parameters:
  5024          - in: path
  5025            name: repository
  5026            required: true
  5027            schema:
  5028              type: string
  5029          - $ref: "#/components/parameters/PaginationAfter"
  5030          - $ref: "#/components/parameters/PaginationAmount"
  5031          - in: query
  5032            name: branch
  5033            schema:
  5034              type: string
  5035          - in: query
  5036            name: commit
  5037            schema:
  5038              type: string
  5039        responses:
  5040          200:
  5041            description: list action runs
  5042            content:
  5043              application/json:
  5044                schema:
  5045                  $ref: "#/components/schemas/ActionRunList"
  5046          401:
  5047            $ref: "#/components/responses/Unauthorized"
  5048          404:
  5049            $ref: "#/components/responses/NotFound"
  5050          420:
  5051            description: too many requests
  5052          default:
  5053            $ref: "#/components/responses/ServerError"
  5054  
  5055    /repositories/{repository}/actions/runs/{run_id}:
  5056      get:
  5057        tags:
  5058          - actions
  5059        operationId: getRun
  5060        summary: get a run
  5061        parameters:
  5062          - in: path
  5063            name: repository
  5064            required: true
  5065            schema:
  5066              type: string
  5067          - in: path
  5068            name: run_id
  5069            required: true
  5070            schema:
  5071              type: string
  5072        responses:
  5073          200:
  5074            description: action run result
  5075            content:
  5076              application/json:
  5077                schema:
  5078                  $ref: "#/components/schemas/ActionRun"
  5079          401:
  5080            $ref: "#/components/responses/Unauthorized"
  5081          404:
  5082            $ref: "#/components/responses/NotFound"
  5083          420:
  5084            description: too many requests
  5085          default:
  5086            $ref: "#/components/responses/ServerError"
  5087  
  5088    /repositories/{repository}/actions/runs/{run_id}/hooks:
  5089      get:
  5090        tags:
  5091          - actions
  5092        operationId: listRunHooks
  5093        summary: list run hooks
  5094        parameters:
  5095          - in: path
  5096            name: repository
  5097            required: true
  5098            schema:
  5099              type: string
  5100          - in: path
  5101            name: run_id
  5102            required: true
  5103            schema:
  5104              type: string
  5105          - $ref: "#/components/parameters/PaginationAfter"
  5106          - $ref: "#/components/parameters/PaginationAmount"
  5107        responses:
  5108          200:
  5109            description: list specific run hooks
  5110            content:
  5111              application/json:
  5112                schema:
  5113                  $ref: "#/components/schemas/HookRunList"
  5114          401:
  5115            $ref: "#/components/responses/Unauthorized"
  5116          404:
  5117            $ref: "#/components/responses/NotFound"
  5118          420:
  5119            description: too many requests
  5120          default:
  5121            $ref: "#/components/responses/ServerError"
  5122  
  5123    /repositories/{repository}/actions/runs/{run_id}/hooks/{hook_run_id}/output:
  5124      get:
  5125        tags:
  5126          - actions
  5127        operationId: getRunHookOutput
  5128        summary: get run hook output
  5129        parameters:
  5130          - in: path
  5131            name: repository
  5132            required: true
  5133            schema:
  5134              type: string
  5135          - in: path
  5136            name: run_id
  5137            required: true
  5138            schema:
  5139              type: string
  5140          - in: path
  5141            name: hook_run_id
  5142            required: true
  5143            schema:
  5144              type: string
  5145        responses:
  5146          200:
  5147            description: run hook output
  5148            content:
  5149              application/octet-stream:
  5150                schema:
  5151                  type: string
  5152                  format: binary
  5153          401:
  5154            $ref: "#/components/responses/Unauthorized"
  5155          404:
  5156            $ref: "#/components/responses/NotFound"
  5157          420:
  5158            description: too many requests
  5159          default:
  5160            $ref: "#/components/responses/ServerError"
  5161  
  5162    /repositories/{repository}/metadata/meta_range/{meta_range}:
  5163      parameters:
  5164        - in: path
  5165          name: repository
  5166          required: true
  5167          schema:
  5168            type: string
  5169        - in: path
  5170          name: meta_range
  5171          required: true
  5172          schema:
  5173            type: string
  5174      get:
  5175        tags:
  5176          - metadata
  5177        operationId: getMetaRange
  5178        summary: return URI to a meta-range file
  5179        responses:
  5180          200:
  5181            description: meta-range URI
  5182            content:
  5183              application/json:
  5184                schema:
  5185                  $ref: "#/components/schemas/StorageURI"
  5186            headers:
  5187              Location:
  5188                schema:
  5189                  type: string
  5190                description: redirect to S3
  5191          401:
  5192            $ref: "#/components/responses/Unauthorized"
  5193          404:
  5194            $ref: "#/components/responses/NotFound"
  5195          420:
  5196            description: too many requests
  5197          default:
  5198            $ref: "#/components/responses/ServerError"
  5199  
  5200    /repositories/{repository}/metadata/range/{range}:
  5201      parameters:
  5202        - in: path
  5203          name: repository
  5204          required: true
  5205          schema:
  5206            type: string
  5207        - in: path
  5208          name: range
  5209          required: true
  5210          schema:
  5211            type: string
  5212      get:
  5213        tags:
  5214          - metadata
  5215        operationId: getRange
  5216        summary: return URI to a range file
  5217        responses:
  5218          200:
  5219            description: range URI
  5220            headers:
  5221              Location:
  5222                schema:
  5223                  type: string
  5224                description: redirect to S3
  5225            content:
  5226              application/json:
  5227                schema:
  5228                  $ref: "#/components/schemas/StorageURI"
  5229          401:
  5230            $ref: "#/components/responses/Unauthorized"
  5231          404:
  5232            $ref: "#/components/responses/NotFound"
  5233          420:
  5234            description: too many requests
  5235          default:
  5236            $ref: "#/components/responses/ServerError"
  5237  
  5238    /repositories/{repository}/gc/rules/set_allowed:
  5239      parameters:
  5240        - in: path
  5241          name: repository
  5242          required: true
  5243          schema:
  5244            type: string
  5245      get:
  5246        tags:
  5247          - internal
  5248        operationId: setGarbageCollectionRulesPreflight
  5249        responses:
  5250          204:
  5251            description: User has permissions to set garbage collection rules on this repository
  5252          401:
  5253            $ref: "#/components/responses/Unauthorized"
  5254          404:
  5255            $ref: "#/components/responses/NotFound"
  5256          420:
  5257            description: too many requests
  5258          default:
  5259            $ref: "#/components/responses/ServerError"
  5260  
  5261    /repositories/{repository}/gc/rules:
  5262      parameters:
  5263        - in: path
  5264          name: repository
  5265          required: true
  5266          schema:
  5267            type: string
  5268      get:
  5269        deprecated: true
  5270        tags:
  5271          - internal
  5272        operationId: internalGetGarbageCollectionRules
  5273        responses:
  5274          200:
  5275            description: gc rule list
  5276            content:
  5277              application/json:
  5278                schema:
  5279                  $ref: "#/components/schemas/GarbageCollectionRules"
  5280          401:
  5281            $ref: "#/components/responses/Unauthorized"
  5282          404:
  5283            $ref: "#/components/responses/NotFound"
  5284          420:
  5285            description: too many requests
  5286          default:
  5287            $ref: "#/components/responses/ServerError"
  5288  
  5289      post:
  5290        deprecated: true
  5291        tags:
  5292          - internal
  5293        operationId: internalSetGarbageCollectionRules
  5294        requestBody:
  5295          required: true
  5296          content:
  5297            application/json:
  5298              schema:
  5299                $ref: "#/components/schemas/GarbageCollectionRules"
  5300        responses:
  5301          204:
  5302            description: set garbage collection rules successfully
  5303          401:
  5304            $ref: "#/components/responses/Unauthorized"
  5305          404:
  5306            $ref: "#/components/responses/NotFound"
  5307          420:
  5308            description: too many requests
  5309          default:
  5310            $ref: "#/components/responses/ServerError"
  5311      delete:
  5312        deprecated: true
  5313        tags:
  5314          - internal
  5315        operationId: internalDeleteGarbageCollectionRules
  5316        responses:
  5317          204:
  5318            description: deleted garbage collection rules successfully
  5319          401:
  5320            $ref: "#/components/responses/Unauthorized"
  5321          404:
  5322            $ref: "#/components/responses/NotFound"
  5323          420:
  5324            description: too many requests
  5325          default:
  5326            $ref: "#/components/responses/ServerError"
  5327  
  5328    /repositories/{repository}/gc/prepare_commits:
  5329      parameters:
  5330        - in: path
  5331          name: repository
  5332          required: true
  5333          schema:
  5334            type: string
  5335      post:
  5336        tags:
  5337          - internal
  5338        operationId: prepareGarbageCollectionCommits
  5339        summary: save lists of active commits for garbage collection
  5340        responses:
  5341          201:
  5342            description: paths to commit dataset
  5343            content:
  5344              application/json:
  5345                schema:
  5346                  $ref: "#/components/schemas/GarbageCollectionPrepareResponse"
  5347          401:
  5348            $ref: "#/components/responses/Unauthorized"
  5349          403:
  5350            $ref: "#/components/responses/Forbidden"
  5351          404:
  5352            $ref: "#/components/responses/NotFound"
  5353          420:
  5354            description: too many requests
  5355          default:
  5356            $ref: "#/components/responses/ServerError"
  5357  
  5358    /repositories/{repository}/gc/prepare_uncommited:
  5359      parameters:
  5360        - in: path
  5361          name: repository
  5362          required: true
  5363          schema:
  5364            type: string
  5365      post:
  5366        requestBody:
  5367          content:
  5368            application/json:
  5369              schema:
  5370                $ref: "#/components/schemas/PrepareGCUncommittedRequest"
  5371        tags:
  5372          - internal
  5373        operationId: prepareGarbageCollectionUncommitted
  5374        summary: save repository uncommitted metadata for garbage collection
  5375        responses:
  5376          201:
  5377            description: paths to commit dataset
  5378            content:
  5379              application/json:
  5380                schema:
  5381                  $ref: "#/components/schemas/PrepareGCUncommittedResponse"
  5382          400:
  5383            $ref: "#/components/responses/ValidationError"
  5384          401:
  5385            $ref: "#/components/responses/Unauthorized"
  5386          403:
  5387            $ref: "#/components/responses/Forbidden"
  5388          404:
  5389            $ref: "#/components/responses/NotFound"
  5390          420:
  5391            description: too many requests
  5392          default:
  5393            $ref: "#/components/responses/ServerError"
  5394  
  5395    /repositories/{repository}/branch_protection/set_allowed:
  5396      parameters:
  5397        - in: path
  5398          name: repository
  5399          required: true
  5400          schema:
  5401            type: string
  5402      get:
  5403        tags:
  5404          - internal
  5405        operationId: createBranchProtectionRulePreflight
  5406        responses:
  5407          204:
  5408            description: User has permissions to create a branch protection rule in this repository
  5409          401:
  5410            $ref: "#/components/responses/Unauthorized"
  5411          404:
  5412            $ref: "#/components/responses/NotFound"
  5413          409:
  5414            $ref: "#/components/responses/Conflict"
  5415          420:
  5416            description: too many requests
  5417          default:
  5418            $ref: "#/components/responses/ServerError"
  5419  
  5420    /repositories/{repository}/branch_protection:
  5421      parameters:
  5422        - in: path
  5423          name: repository
  5424          required: true
  5425          schema:
  5426            type: string
  5427      get:
  5428        deprecated: true
  5429        tags:
  5430          - internal
  5431        operationId: internalGetBranchProtectionRules
  5432        summary: get branch protection rules
  5433        responses:
  5434          200:
  5435            description: branch protection rules
  5436            content:
  5437              application/json:
  5438                schema:
  5439                  type: array
  5440                  items:
  5441                    $ref: "#/components/schemas/BranchProtectionRule"
  5442          401:
  5443            $ref: "#/components/responses/Unauthorized"
  5444          404:
  5445            $ref: "#/components/responses/NotFound"
  5446          420:
  5447            description: too many requests
  5448          default:
  5449            $ref: "#/components/responses/ServerError"
  5450  
  5451      post:
  5452        deprecated: true
  5453        tags:
  5454          - internal
  5455        operationId: internalCreateBranchProtectionRule
  5456        requestBody:
  5457          required: true
  5458          content:
  5459            application/json:
  5460              schema:
  5461                $ref: "#/components/schemas/BranchProtectionRule"
  5462        responses:
  5463          204:
  5464            description: branch protection rule created successfully
  5465          401:
  5466            $ref: "#/components/responses/Unauthorized"
  5467          404:
  5468            $ref: "#/components/responses/NotFound"
  5469          420:
  5470            description: too many requests
  5471          default:
  5472            $ref: "#/components/responses/ServerError"
  5473      delete:
  5474        deprecated: true
  5475        tags:
  5476          - internal
  5477        operationId: internalDeleteBranchProtectionRule
  5478        requestBody:
  5479          required: true
  5480          content:
  5481            application/json:
  5482              schema:
  5483                type: object
  5484                properties:
  5485                  pattern:
  5486                    type: string
  5487                required:
  5488                  - pattern
  5489        responses:
  5490          204:
  5491            description: branch protection rule deleted successfully
  5492          401:
  5493            $ref: "#/components/responses/Unauthorized"
  5494          404:
  5495            $ref: "#/components/responses/NotFound"
  5496          420:
  5497            description: too many requests
  5498          default:
  5499            $ref: "#/components/responses/ServerError"
  5500    /healthcheck:
  5501      get:
  5502        operationId: healthCheck
  5503        security: []
  5504        tags:
  5505          - healthCheck
  5506        description: check that the API server is up and running
  5507        responses:
  5508          204:
  5509            description: NoContent
  5510    /config:
  5511      get:
  5512        tags:
  5513          - config
  5514        operationId: getConfig
  5515        description: retrieve lakeFS configuration
  5516        responses:
  5517          200:
  5518            description: lakeFS configuration
  5519            content:
  5520              application/json:
  5521                schema:
  5522                  $ref: "#/components/schemas/Config"
  5523          401:
  5524            $ref: "#/components/responses/Unauthorized"
  5525    /config/version:
  5526      get:
  5527        tags:
  5528          - internal
  5529        operationId: getLakeFSVersion
  5530        description: get version of lakeFS server
  5531        deprecated: true
  5532        responses:
  5533          200:
  5534            description: lakeFS version
  5535            content:
  5536              application/json:
  5537                schema:
  5538                  $ref: "#/components/schemas/VersionConfig"
  5539          401:
  5540            $ref: "#/components/responses/Unauthorized"
  5541    /config/storage:
  5542      get:
  5543        tags:
  5544          - internal
  5545        operationId: getStorageConfig
  5546        description: retrieve lakeFS storage configuration
  5547        deprecated: true
  5548        responses:
  5549          200:
  5550            description: lakeFS storage configuration
  5551            content:
  5552              application/json:
  5553                schema:
  5554                  $ref: "#/components/schemas/StorageConfig"
  5555          401:
  5556            $ref: "#/components/responses/Unauthorized"
  5557    /config/garbage-collection:
  5558      get:
  5559        tags:
  5560          - internal
  5561        operationId: getGarbageCollectionConfig
  5562        description: get information of gc settings
  5563        responses:
  5564          200:
  5565            description: lakeFS garbage collection config
  5566            content:
  5567              application/json:
  5568                schema:
  5569                  $ref: "#/components/schemas/GarbageCollectionConfig"
  5570          401:
  5571            $ref: "#/components/responses/Unauthorized"
  5572  
  5573    /statistics:
  5574      post:
  5575        tags:
  5576          - internal
  5577        operationId: postStatsEvents
  5578        summary: post stats events, this endpoint is meant for internal use only
  5579        requestBody:
  5580          required: true
  5581          content:
  5582            application/json:
  5583              schema:
  5584                $ref: "#/components/schemas/StatsEventsList"
  5585        responses:
  5586          204:
  5587            description: reported successfully
  5588          400:
  5589            $ref: "#/components/responses/BadRequest"
  5590          401:
  5591            $ref: "#/components/responses/Unauthorized"
  5592          420:
  5593            description: too many requests
  5594          default:
  5595            $ref: "#/components/responses/ServerError"
  5596  
  5597    /usage-report/summary:
  5598      get:
  5599        tags:
  5600          - internal
  5601        operationId: getUsageReportSummary
  5602        summary: get usage report summary
  5603        responses:
  5604          200:
  5605            description: Usage report
  5606            content:
  5607              application/json:
  5608                schema:
  5609                  $ref: "#/components/schemas/InstallationUsageReport"
  5610              application/text:
  5611                schema:
  5612                  type: string
  5613          400:
  5614            $ref: "#/components/responses/BadRequest"
  5615          401:
  5616            $ref: "#/components/responses/Unauthorized"
  5617          404:
  5618            $ref: "#/components/responses/NotFound"
  5619          420:
  5620            description: too many requests
  5621          default:
  5622            $ref: "#/components/responses/ServerError"