# @format

swagger: "2.0"
info:
  title: MinIO Console Server
  version: 0.1.0
consumes:
  - application/json
produces:
  - application/json
schemes:
  - http
  - ws
basePath: /api/v1
# We are going to be taking `Authorization: Bearer TOKEN` header for our authentication
securityDefinitions:
  key:
    type: oauth2
    flow: accessCode
    authorizationUrl: http://min.io
    tokenUrl: http://min.io
  anonymous:
    name: X-Anonymous
    in: header
    type: apiKey
# Apply the key security definition to all APIs
security:
  - key: []
parameters:
  limit:
    name: limit
    in: query
    type: number
    format: int32
    default: 20
  offset:
    name: offset
    in: query
    type: number
    format: int32
    default: 0
paths:
  /login:
    get:
      summary: Returns login strategy, form or sso.
      operationId: LoginDetail
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/loginDetails"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      # Exclude this API from the authentication requirement
      security: []
      tags:
        - Auth
    post:
      summary: Login to Console
      operationId: Login
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/loginRequest"
      responses:
        204:
          description: A successful login.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      # Exclude this API from the authentication requirement
      security: []
      tags:
        - Auth
  /login/oauth2/auth:
    post:
      summary: Identity Provider oauth2 callback endpoint.
      operationId: LoginOauth2Auth
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/loginOauth2AuthRequest"
      responses:
        204:
          description: A successful login.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      security: []
      tags:
        - Auth

  /logout:
    post:
      summary: Logout from Console.
      operationId: Logout
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/logoutRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Auth

  /session:
    get:
      summary: Endpoint to check if your session is still valid
      operationId: SessionCheck
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/sessionResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Auth

  /account/change-password:
    post:
      summary: Change password of currently logged in user.
      operationId: AccountChangePassword
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/accountChangePasswordRequest"
      responses:
        204:
          description: A successful login.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Account

  /account/change-user-password:
    post:
      summary: Change password of currently logged in user.
      operationId: ChangeUserPassword
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/changeUserPasswordRequest"
      responses:
        201:
          description: Password successfully changed.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Account

  /buckets:
    get:
      summary: List Buckets
      operationId: ListBuckets
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listBucketsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    post:
      summary: Make bucket
      operationId: MakeBucket
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/makeBucketRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/makeBucketsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{name}:
    get:
      summary: Bucket Info
      operationId: BucketInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucket"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    delete:
      summary: Delete Bucket
      operationId: DeleteBucket
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/retention:
    get:
      summary: Get Bucket's retention config
      operationId: GetBucketRetentionConfig
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/getBucketRetentionConfig"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    put:
      summary: Set Bucket's retention config
      operationId: SetBucketRetentionConfig
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/putBucketRetentionRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/objects:
    get:
      summary: List Objects
      security:
        - key: []
        - anonymous: []
      operationId: ListObjects
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: false
          type: string
        - name: recursive
          in: query
          required: false
          type: boolean
        - name: with_versions
          in: query
          required: false
          type: boolean
        - name: with_metadata
          in: query
          required: false
          type: boolean
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listObjectsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object
    delete:
      summary: Delete Object
      operationId: DeleteObject
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: false
          type: string
        - name: recursive
          in: query
          required: false
          type: boolean
        - name: all_versions
          in: query
          required: false
          type: boolean
        - name: non_current_versions
          in: query
          required: false
          type: boolean
        - name: bypass
          in: query
          required: false
          type: boolean
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/delete-objects:
    post:
      summary: Delete Multiple Objects
      operationId: DeleteMultipleObjects
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: all_versions
          in: query
          required: false
          type: boolean
        - name: bypass
          in: query
          required: false
          type: boolean
        - name: files
          in: body
          required: true
          schema:
            type: array
            items:
              $ref: "#/definitions/deleteFile"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/upload:
    post:
      summary: Uploads an Object.
      security:
        - key: []
        - anonymous: []
      consumes:
        - multipart/form-data
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/download-multiple:
    post:
      summary: Download Multiple Objects
      operationId: DownloadMultipleObjects
      security:
        - key: []
        - anonymous: []
      produces:
        - application/octet-stream
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: objectList
          in: body
          required: true
          schema:
            type: array
            items:
              type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: file
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/download:
    get:
      summary: Download Object
      operationId: Download Object
      security:
        - key: []
        - anonymous: []
      produces:
        - application/octet-stream
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: false
          type: string
        - name: preview
          in: query
          required: false
          type: boolean
          default: false
        - name: override_file_name
          in: query
          required: false
          type: string
          default: ""
      responses:
        200:
          description: A successful response.
          schema:
            type: file
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/share:
    get:
      summary: Shares an Object on a url
      operationId: ShareObject
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
        - name: expires
          in: query
          required: false
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object
  /buckets/{bucket_name}/objects/legalhold:
    put:
      summary: Put Object's legalhold status
      operationId: PutObjectLegalHold
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/putObjectLegalHoldRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/retention:
    put:
      summary: Put Object's retention status
      operationId: PutObjectRetention
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/putObjectRetentionRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object
    delete:
      summary: Delete Object retention from an object
      operationId: DeleteObjectRetention
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/tags:
    put:
      summary: Put Object's tags
      operationId: PutObjectTags
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/putObjectTagsRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/restore:
    put:
      summary: Restore Object to a selected version
      operationId: PutObjectRestore
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: version_id
          in: query
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/objects/metadata:
    get:
      summary: Gets the metadata of an object
      operationId: GetObjectMetadata
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: true
          type: string
        - name: versionID
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/metadata"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Object

  /buckets/{bucket_name}/tags:
    put:
      summary: Put Bucket's tags
      operationId: PutBucketTags
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/putBucketTagsRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{name}/set-policy:
    put:
      summary: Bucket Set Policy
      operationId: BucketSetPolicy
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setBucketPolicyRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucket"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{name}/quota:
    get:
      summary: Get Bucket Quota
      operationId: GetBucketQuota
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketQuota"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    put:
      summary: Bucket Quota
      operationId: SetBucketQuota
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setBucketQuota"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucket"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/events:
    get:
      summary: List Bucket Events
      operationId: ListBucketEvents
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listBucketEventsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    post:
      summary: Create Bucket Event
      operationId: CreateBucketEvent
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/bucketEventRequest"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/events/{arn}:
    delete:
      summary: Delete Bucket Event
      operationId: DeleteBucketEvent
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: arn
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/notificationDeleteRequest"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/replication:
    get:
      summary: Bucket Replication
      operationId: GetBucketReplication
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketReplicationResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/replication/{rule_id}:
    get:
      summary: Bucket Replication
      operationId: GetBucketReplicationRule
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: rule_id
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketReplicationRule"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

    put:
      summary: Update Replication rule
      operationId: UpdateMultiBucketReplication
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: rule_id
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/multiBucketReplicationEdit"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

    delete:
      summary: Bucket Replication Rule Delete
      operationId: DeleteBucketReplicationRule
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: rule_id
          in: path
          required: true
          type: string

      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/delete-all-replication-rules:
    delete:
      summary: Deletes all replication rules from a bucket
      operationId: DeleteAllReplicationRules
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/delete-selected-replication-rules:
    delete:
      summary: Deletes selected replication rules from a bucket
      operationId: DeleteSelectedReplicationRules
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: rules
          in: body
          required: true
          schema:
            $ref: "#/definitions/bucketReplicationRuleList"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/versioning:
    get:
      summary: Bucket Versioning
      operationId: GetBucketVersioning
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketVersioningResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    put:
      summary: Set Bucket Versioning
      operationId: SetBucketVersioning
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setBucketVersioning"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/object-locking:
    get:
      summary: Returns the status of object locking support on the bucket
      operationId: GetBucketObjectLockingStatus
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketObLockingResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/encryption/enable:
    post:
      summary: Enable bucket encryption.
      operationId: EnableBucketEncryption
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/bucketEncryptionRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/encryption/disable:
    post:
      summary: Disable bucket encryption.
      operationId: DisableBucketEncryption
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/encryption/info:
    get:
      summary: Get bucket encryption information.
      operationId: GetBucketEncryptionInfo
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketEncryptionInfo"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/lifecycle:
    get:
      summary: Bucket Lifecycle
      operationId: GetBucketLifecycle
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/bucketLifecycleResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    post:
      summary: Add Bucket Lifecycle
      operationId: AddBucketLifecycle
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/addBucketLifecycle"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/multi-lifecycle:
    post:
      summary: Add Multi Bucket Lifecycle
      operationId: AddMultiBucketLifecycle
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/addMultiBucketLifecycle"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/multiLifecycleResult"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/lifecycle/{lifecycle_id}:
    put:
      summary: Update Lifecycle rule
      operationId: UpdateBucketLifecycle
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: lifecycle_id
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/updateBucketLifecycle"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

    delete:
      summary: Delete Lifecycle rule
      operationId: DeleteBucketLifecycleRule
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: lifecycle_id
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/{bucket_name}/rewind/{date}:
    get:
      summary: Get objects in a bucket for a rewind date
      operationId: GetBucketRewind
      parameters:
        - name: bucket_name
          in: path
          required: true
          type: string
        - name: date
          in: path
          required: true
          type: string
        - name: prefix
          in: query
          required: false
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/rewindResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets/max-share-exp:
    get:
      summary: Get max expiration time for share link in seconds
      operationId: GetMaxShareLinkExp
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/maxShareLinkExpResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /list-external-buckets:
    post:
      summary: Lists an External list of buckets using custom credentials
      operationId: ListExternalBuckets
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/listExternalBucketsParams"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listBucketsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /buckets-replication:
    post:
      summary: Sets Multi Bucket Replication in multiple Buckets
      operationId: SetMultiBucketReplication
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/multiBucketReplication"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/multiBucketResponseState"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /service-accounts:
    get:
      summary: List User's Service Accounts
      operationId: ListUserServiceAccounts
      parameters:
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccounts"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount
    post:
      summary: Create Service Account
      operationId: CreateServiceAccount
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/serviceAccountRequest"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccountCreds"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount

  /service-account-credentials:
    post:
      summary: Create Service Account With Credentials
      operationId: CreateServiceAccountCreds
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/serviceAccountRequestCreds"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccountCreds"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount

  /service-accounts/delete-multi:
    delete:
      summary: Delete Multiple Service Accounts
      operationId: DeleteMultipleServiceAccounts
      parameters:
        - name: selectedSA
          in: body
          required: true
          schema:
            $ref: "#/definitions/selectedSAs"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount

  /service-accounts/{access_key}:
    get:
      summary: Get Service Account
      operationId: GetServiceAccount
      parameters:
        - name: access_key
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccount"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount
    put:
      summary: Set Service Account Policy
      operationId: UpdateServiceAccount
      parameters:
        - name: access_key
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/updateServiceAccountRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount
    delete:
      summary: Delete Service Account
      operationId: DeleteServiceAccount
      parameters:
        - name: access_key
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - ServiceAccount

  /users:
    get:
      summary: List Users
      operationId: ListUsers
      parameters:
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listUsersResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User
    post:
      summary: Add User
      operationId: AddUser
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/addUserRequest"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/user"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /users/service-accounts:
    post:
      summary: Check number of service accounts for each user specified
      operationId: CheckUserServiceAccounts
      parameters:
        - name: selectedUsers
          in: body
          required: true
          schema:
            $ref: "#/definitions/selectedUsers"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/userServiceAccountSummary"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /user/{name}:
    get:
      summary: Get User Info
      operationId: GetUserInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/user"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User
    put:
      summary: Update User Info
      operationId: UpdateUserInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/updateUser"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/user"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User
    delete:
      summary: Remove user
      operationId: RemoveUser
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /user/{name}/groups:
    put:
      summary: Update Groups for a user
      operationId: UpdateUserGroups
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/updateUserGroups"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/user"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User
  /user/policy:
    get:
      summary: returns policies for logged in user
      operationId: GetUserPolicy
      responses:
        200:
          description: A successful response.
          schema:
            type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy
  /user/{name}/policies:
    get:
      summary: returns policies assigned for a specified user
      operationId: GetSAUserPolicy
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/aUserPolicyResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy
  /user/{name}/service-accounts:
    get:
      summary: returns a list of service accounts for a user
      operationId: ListAUserServiceAccounts
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccounts"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User
    post:
      summary: Create Service Account for User
      operationId: CreateAUserServiceAccount
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/serviceAccountRequest"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccountCreds"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /user/{name}/service-account-credentials:
    post:
      summary: Create Service Account for User With Credentials
      operationId: CreateServiceAccountCredentials
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/serviceAccountRequestCreds"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/serviceAccountCreds"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /users-groups-bulk:
    put:
      summary: Bulk functionality to Add Users to Groups
      operationId: BulkUpdateUsersGroups
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/bulkUserGroups"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - User

  /groups:
    get:
      summary: List Groups
      operationId: ListGroups
      parameters:
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listGroupsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Group
    post:
      summary: Add Group
      operationId: AddGroup
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/addGroupRequest"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Group

  /group/{name}:
    get:
      summary: Group info
      operationId: GroupInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/group"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Group
    delete:
      summary: Remove group
      operationId: RemoveGroup
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Group
    put:
      summary: Update Group Members or Status
      operationId: UpdateGroup
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/updateGroupRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/group"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Group

  /policies:
    get:
      summary: List Policies
      operationId: ListPolicies
      parameters:
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listPoliciesResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy
    post:
      summary: Add Policy
      operationId: AddPolicy
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/addPolicyRequest"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/policy"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /policies/{policy}/users:
    get:
      summary: List Users for a Policy
      operationId: ListUsersForPolicy
      parameters:
        - name: policy
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: array
            items:
              type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /policies/{policy}/groups:
    get:
      summary: List Groups for a Policy
      operationId: ListGroupsForPolicy
      parameters:
        - name: policy
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: array
            items:
              type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /bucket-policy/{bucket}:
    get:
      summary: List Policies With Given Bucket
      operationId: ListPoliciesWithBucket
      parameters:
        - name: bucket
          in: path
          required: true
          type: string
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listPoliciesResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /bucket/{bucket}/access-rules:
    put:
      summary: Add Access Rule To Given Bucket
      operationId: SetAccessRuleWithBucket
      parameters:
        - name: bucket
          in: path
          required: true
          type: string
        - name: prefixaccess
          in: body
          required: true
          schema:
            $ref: "#/definitions/prefixAccessPair"
      responses:
        200:
          description: A successful response.
          schema:
            type: boolean
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    get:
      summary: List Access Rules With Given Bucket
      operationId: ListAccessRulesWithBucket
      parameters:
        - name: bucket
          in: path
          required: true
          type: string
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listAccessRulesResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    delete:
      summary: Delete Access Rule From Given Bucket
      operationId: DeleteAccessRuleWithBucket
      parameters:
        - name: bucket
          in: path
          required: true
          type: string
        - name: prefix
          in: body
          required: true
          schema:
            $ref: "#/definitions/prefixWrapper"
      responses:
        200:
          description: A successful response.
          schema:
            type: boolean
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /bucket-users/{bucket}:
    get:
      summary: List Users With Access to a Given Bucket
      operationId: ListUsersWithAccessToBucket
      parameters:
        - name: bucket
          in: path
          required: true
          type: string
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            type: array
            items:
              type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /policy/{name}:
    get:
      summary: Policy info
      operationId: PolicyInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/policy"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy
    delete:
      summary: Remove policy
      operationId: RemovePolicy
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /configs:
    get:
      summary: List Configurations
      operationId: ListConfig
      parameters:
        - $ref: "#/parameters/offset"
        - $ref: "#/parameters/limit"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listConfigResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration

  /set-policy:
    put:
      summary: Set policy
      operationId: SetPolicy
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setPolicyNameRequest"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /set-policy-multi:
    put:
      summary: Set policy to multiple users/groups
      operationId: SetPolicyMultiple
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setPolicyMultipleNameRequest"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Policy

  /configs/{name}:
    get:
      summary: Configuration info
      operationId: ConfigInfo
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: array
            items:
              $ref: "#/definitions/configuration"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration
    put:
      summary: Set Configuration
      operationId: SetConfig
      parameters:
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/setConfigRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/setConfigResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration

  /configs/{name}/reset:
    post:
      summary: Configuration reset
      operationId: ResetConfig
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/setConfigResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration

  /configs/export:
    get:
      summary: Export the current config from MinIO server
      operationId: ExportConfig
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/configExportResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration
  /configs/import:
    post:
      summary: Uploads a file to import MinIO server config.
      consumes:
        - multipart/form-data
      parameters:
        - name: file
          in: formData
          required: true
          type: file
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration
  /service/restart:
    post:
      summary: Restart Service
      operationId: RestartService
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Service
  /profiling/start:
    post:
      summary: Start recording profile data
      operationId: ProfilingStart
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/profilingStartRequest"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/startProfilingList"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Profile

  /profiling/stop:
    post:
      summary: Stop and download profile data
      operationId: ProfilingStop
      produces:
        - application/zip
      responses:
        201:
          description: A successful response.
          schema:
            type: file
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Profile
  /subnet/registration-token:
    get:
      summary: SUBNET registraton token
      operationId: SubnetRegToken
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/SubnetRegTokenResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet
  /subnet/info:
    get:
      summary: Subnet info
      operationId: SubnetInfo
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/license"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet
  /subnet/apikey:
    get:
      summary: Subnet api key
      operationId: SubnetApiKey
      parameters:
        - name: token
          in: query
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/apiKey"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet
  /subnet/register:
    post:
      summary: Register cluster with Subnet
      operationId: SubnetRegister
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/subnetRegisterRequest"
      responses:
        200:
          description: A successful response.
        #          schema:
        #            $ref: "#/definitions/subnetRegisterResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet

  /subnet/login:
    post:
      summary: Login to SUBNET
      operationId: SubnetLogin
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/subnetLoginRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/subnetLoginResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet

  /subnet/login/mfa:
    post:
      summary: Login to SUBNET using mfa
      operationId: SubnetLoginMFA
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/subnetLoginMFARequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/subnetLoginResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Subnet

  /admin/info:
    get:
      summary: Returns information about the deployment
      operationId: AdminInfo
      parameters:
        - name: defaultOnly
          in: query
          required: false
          type: boolean
          default: false
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/adminInfoResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - System

  /admin/info/widgets/{widgetId}:
    get:
      summary: Returns information about the deployment
      operationId: DashboardWidgetDetails
      parameters:
        - name: widgetId
          in: path
          type: integer
          format: int32
          required: true
        - name: start
          in: query
          type: integer
        - name: end
          in: query
          type: integer
        - name: step
          in: query
          type: integer
          format: int32
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/widgetDetails"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - System

  /admin/arns:
    get:
      summary: Returns a list of active ARNs in the instance
      operationId: ArnList
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/arnsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - System

  /admin/notification_endpoints:
    get:
      summary: Returns a list of active notification endpoints
      operationId: NotificationEndpointList
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/notifEndpointResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration
    post:
      summary: Allows to configure a new notification endpoint
      operationId: AddNotificationEndpoint
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/notificationEndpoint"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/setNotificationEndpointResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Configuration

  /admin/site-replication:
    get:
      summary: Get list of Replication Sites
      operationId: GetSiteReplicationInfo
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/siteReplicationInfoResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - SiteReplication
    post:
      summary: Add a Replication Site
      operationId: SiteReplicationInfoAdd
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/siteReplicationAddRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/siteReplicationAddResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - SiteReplication
    put:
      summary: Edit a Replication Site
      operationId: SiteReplicationEdit
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/peerInfo"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/peerSiteEditResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - SiteReplication
    delete:
      summary: Remove a Replication Site
      operationId: SiteReplicationRemove
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/peerInfoRemove"
      responses:
        204:
          description: A successful response.
          schema:
            $ref: "#/definitions/peerSiteRemoveResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - SiteReplication

  /admin/site-replication/status:
    get:
      summary: Display overall site replication status
      operationId: GetSiteReplicationStatus
      parameters:
        - name: buckets
          description: Include Bucket stats
          in: query
          type: boolean
          default: true
        - name: groups
          description: Include Group stats
          in: query
          type: boolean
          default: true
        - name: policies
          description: Include Policies stats
          in: query
          type: boolean
          default: true
        - name: users
          description: Include Policies stats
          in: query
          type: boolean
          default: true
        - name: entityType
          description: Entity Type to lookup
          in: query
          type: string
          required: false
        - name: entityValue
          description: Entity Value to lookup
          in: query
          type: string
          required: false
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/siteReplicationStatusResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - SiteReplication

  /admin/tiers:
    get:
      summary: Returns a list of tiers for ilm
      operationId: TiersList
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/tierListResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering
    post:
      summary: Allows to configure a new tier
      operationId: AddTier
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/tier"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering

  /admin/tiers/names:
    get:
      summary: Returns a list of tiers' names for ilm
      operationId: TiersListNames
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/tiersNameListResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering

  /admin/tiers/{type}/{name}:
    get:
      summary: Get Tier
      operationId: GetTier
      parameters:
        - name: type
          in: path
          required: true
          type: string
          enum:
            - s3
            - gcs
            - azure
            - minio
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/tier"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering

  /admin/tiers/{type}/{name}/credentials:
    put:
      summary: Edit Tier Credentials
      operationId: EditTierCredentials
      parameters:
        - name: type
          in: path
          required: true
          type: string
          enum:
            - s3
            - gcs
            - azure
            - minio
        - name: name
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/tierCredentialsRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering
  /admin/tiers/{name}/remove:
    delete:
      summary: Remove Tier
      operationId: RemoveTier
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Tiering

  /nodes:
    get:
      summary: Lists Nodes
      operationId: ListNodes
      responses:
        200:
          description: A successful response.
          schema:
            type: array
            items:
              type: string
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - System

  /remote-buckets:
    get:
      summary: List Remote Buckets
      operationId: ListRemoteBuckets
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/listRemoteBucketsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
    post:
      summary: Add Remote Bucket
      operationId: AddRemoteBucket
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/createRemoteBucket"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket

  /remote-buckets/{name}:
    get:
      summary: Remote Bucket Details
      operationId: RemoteBucketDetails
      parameters:
        - name: name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/remoteBucket"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
  /remote-buckets/{source-bucket-name}/{arn}:
    delete:
      summary: Delete Remote Bucket
      operationId: DeleteRemoteBucket
      parameters:
        - name: source-bucket-name
          in: path
          required: true
          type: string
        - name: arn
          in: path
          required: true
          type: string
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Bucket
  /logs/search:
    get:
      summary: Search the logs
      operationId: LogSearch
      parameters:
        - name: fp
          description: Filter Parameters
          in: query
          collectionFormat: multi
          type: array
          items:
            type: string
        - name: pageSize
          in: query
          type: number
          format: int32
          default: 10
        - name: pageNo
          in: query
          type: number
          format: int32
          default: 0
        - name: order
          in: query
          type: string
          enum: [timeDesc, timeAsc]
          default: timeDesc
        - name: timeStart
          in: query
          type: string
        - name: timeEnd
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/logSearchResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Logging

  /kms/status:
    get:
      summary: KMS status
      operationId: KMSStatus
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsStatusResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/metrics:
    get:
      summary: KMS metrics
      operationId: KMSMetrics
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsMetricsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/apis:
    get:
      summary: KMS apis
      operationId: KMSAPIs
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsAPIsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/version:
    get:
      summary: KMS version
      operationId: KMSVersion
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsVersionResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/keys:
    post:
      summary: KMS create key
      operationId: KMSCreateKey
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/kmsCreateKeyRequest"
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
    get:
      summary: KMS list keys
      operationId: KMSListKeys
      parameters:
        - name: pattern
          description: pattern to retrieve keys
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsListKeysResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/keys/{name}:
    get:
      summary: KMS key status
      operationId: KMSKeyStatus
      parameters:
        - name: name
          description: KMS key name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsKeyStatusResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
    delete:
      summary: KMS delete key
      operationId: KMSDeleteKey
      parameters:
        - name: name
          description: KMS key name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/keys/{name}/import:
    post:
      summary: KMS import key
      operationId: KMSImportKey
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/kmsImportKeyRequest"
        - name: name
          description: KMS key name
          in: path
          required: true
          type: string
      responses:
        201:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/policies:
    post:
      summary: KMS set policy
      operationId: KMSSetPolicy
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/kmsSetPolicyRequest"
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
    get:
      summary: KMS list policies
      operationId: KMSListPolicies
      parameters:
        - name: pattern
          description: pattern to retrieve policies
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsListPoliciesResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/policies/{name}:
    get:
      summary: KMS get policy
      operationId: KMSGetPolicy
      parameters:
        - name: name
          description: KMS policy name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsGetPolicyResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
    delete:
      summary: KMS delete policy
      operationId: KMSDeletePolicy
      parameters:
        - name: name
          description: KMS policy name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/policies/{name}/assign:
    post:
      summary: KMS assign policy
      operationId: KMSAssignPolicy
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/kmsAssignPolicyRequest"
        - name: name
          description: KMS policy name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/policies/{name}/describe:
    get:
      summary: KMS describe policy
      operationId: KMSDescribePolicy
      parameters:
        - name: name
          description: KMS policy name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsDescribePolicyResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/identities/{name}:
    delete:
      summary: KMS delete identity
      operationId: KMSDeleteIdentity
      parameters:
        - name: name
          description: KMS identity name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/identities/{name}/describe:
    get:
      summary: KMS describe identity
      operationId: KMSDescribeIdentity
      parameters:
        - name: name
          description: KMS identity name
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsDescribeIdentityResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/describe-self/identity:
    get:
      summary: KMS describe self identity
      operationId: KMSDescribeSelfIdentity
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsDescribeSelfIdentityResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS
  /kms/identities:
    get:
      summary: KMS list identities
      operationId: KMSListIdentities
      parameters:
        - name: pattern
          description: pattern to retrieve identities
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/kmsListIdentitiesResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - KMS

  /admin/inspect:
    get:
      summary: Inspect Files on Drive
      operationId: Inspect
      produces:
        - application/octet-stream
      parameters:
        - name: file
          in: query
          required: true
          type: string
        - name: volume
          in: query
          required: true
          type: string
        - name: encrypt
          in: query
          required: false
          type: boolean

      responses:
        200:
          description: A successful response.
          schema:
            type: file
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Inspect
  /idp/{type}:
    post:
      summary: Create IDP Configuration
      operationId: CreateConfiguration
      consumes:
        - application/json
      parameters:
        - name: type
          description: IDP Configuration Type
          in: path
          required: true
          type: string
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/idpServerConfiguration"
      responses:
        201:
          description: A successful response.
          schema:
            $ref: "#/definitions/setIDPResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp
    get:
      summary: List IDP Configurations
      operationId: ListConfigurations
      parameters:
        - name: type
          description: IDP Configuration Type
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/idpListConfigurationsResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp
  /idp/{type}/{name}:
    get:
      summary: Get IDP Configuration
      operationId: GetConfiguration
      parameters:
        - name: name
          description: IDP Configuration Name
          in: path
          required: true
          type: string
        - name: type
          description: IDP Configuration Type
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/idpServerConfiguration"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp
    delete:
      summary: Delete IDP Configuration
      operationId: DeleteConfiguration
      parameters:
        - name: name
          description: IDP Configuration Name
          in: path
          required: true
          type: string
        - name: type
          description: IDP Configuration Type
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/setIDPResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp
    put:
      summary: Update IDP Configuration
      operationId: UpdateConfiguration
      consumes:
        - application/json
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/idpServerConfiguration"
        - name: name
          description: IDP Configuration Name
          in: path
          required: true
          type: string
        - name: type
          description: IDP Configuration Type
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/setIDPResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp

  /ldap-entities:
    post:
      summary: Get LDAP Entities
      operationId: GetLDAPEntities
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/ldapEntitiesRequest"
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/ldapEntities"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - idp

  /releases:
    get:
      summary: Get repo releases for a given version
      operationId: ListReleases
      parameters:
        - name: repo
          description: repo name
          in: query
          type: string
          required: true
        - name: current
          description: Current Release
          in: query
          type: string
        - name: search
          description: search content
          in: query
          type: string
        - name: filter
          description: filter releases
          in: query
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/releaseListResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - release

  /support/callhome:
    get:
      summary: Get Callhome current status
      operationId: GetCallHomeOptionValue
      responses:
        200:
          description: A successful response.
          schema:
            $ref: "#/definitions/callHomeGetResponse"
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Support

    put:
      summary: Sets callhome status
      operationId: SetCallHomeStatus
      parameters:
        - name: body
          in: body
          required: true
          schema:
            $ref: "#/definitions/callHomeSetStatus"
      responses:
        204:
          description: A successful response.
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Support

  /download-shared-object/{url}:
    get:
      summary: Downloads an object from a presigned url
      operationId: DownloadSharedObject
      security: []
      produces:
        - application/octet-stream
      parameters:
        - name: url
          in: path
          required: true
          type: string
      responses:
        200:
          description: A successful response.
          schema:
            type: file
        default:
          description: Generic error response.
          schema:
            $ref: "#/definitions/ApiError"
      tags:
        - Public

definitions:
  accountChangePasswordRequest:
    type: object
    required:
      - current_secret_key
      - new_secret_key
    properties:
      current_secret_key:
        type: string
      new_secret_key:
        type: string

  changeUserPasswordRequest:
    type: object
    required:
      - selectedUser
      - newSecretKey
    properties:
      selectedUser:
        type: string
      newSecretKey:
        type: string

  bucketEncryptionType:
    type: string
    enum:
      - sse-s3
      - sse-kms
    default: sse-s3

  bucketAccess:
    type: string
    enum:
      - PRIVATE
      - PUBLIC
      - CUSTOM
    default: PRIVATE

  userServiceAccountItem:
    type: object
    properties:
      userName:
        type: string
      numSAs:
        type: integer
        format: int64

  bucket:
    type: object
    required:
      - name
    properties:
      name:
        type: string
        minLength: 3
      size:
        type: integer
        format: int64
      access:
        $ref: "#/definitions/bucketAccess"
      definition:
        type: string
      rw_access:
        type: object
        properties:
          write:
            type: boolean
          read:
            type: boolean
      objects:
        type: integer
        format: int64
      details:
        type: object
        properties:
          versioning:
            type: boolean
          versioningSuspended:
            type: boolean
          locking:
            type: boolean
          replication:
            type: boolean
          tags:
            type: object
            additionalProperties:
              type: string
          quota:
            type: object
            properties:
              quota:
                type: integer
                format: int64
              type:
                type: string
                enum:
                  - hard
      creation_date:
        type: string

  bucketEncryptionRequest:
    type: object
    properties:
      encType:
        $ref: "#/definitions/bucketEncryptionType"
      kmsKeyID:
        type: string

  bucketEncryptionInfo:
    type: object
    properties:
      kmsMasterKeyID:
        type: string
      algorithm:
        type: string

  listBucketsResponse:
    type: object
    properties:
      buckets:
        type: array
        items:
          $ref: "#/definitions/bucket"
        title: list of resulting buckets
      total:
        type: integer
        format: int64
        title: number of buckets accessible to the user

  userServiceAccountSummary:
    type: object
    properties:
      userServiceAccountList:
        type: array
        items:
          $ref: "#/definitions/userServiceAccountItem"
        title: list of users with number of service accounts
      hasSA:
        type: boolean

  listObjectsResponse:
    type: object
    properties:
      objects:
        type: array
        items:
          $ref: "#/definitions/bucketObject"
        title: list of resulting objects
      total:
        type: integer
        format: int64
        title: number of objects

  bucketObject:
    type: object
    properties:
      name:
        type: string
      size:
        type: integer
        format: int64
      content_type:
        type: string
      last_modified:
        type: string
      is_latest:
        type: boolean
      is_delete_marker:
        type: boolean
      version_id:
        type: string
      user_tags:
        type: object
        additionalProperties:
          type: string
      expiration:
        type: string
      expiration_rule_id:
        type: string
      legal_hold_status:
        type: string
      retention_mode:
        type: string
      retention_until_date:
        type: string
      etag:
        type: string
      tags:
        type: object
        additionalProperties:
          type: string
      metadata:
        type: object
        additionalProperties:
          type: string
      user_metadata:
        type: object
        additionalProperties:
          type: string

  makeBucketRequest:
    type: object
    required:
      - name
    properties:
      name:
        type: string
      locking:
        type: boolean
      versioning:
        $ref: "#/definitions/setBucketVersioning"
      quota:
        $ref: "#/definitions/setBucketQuota"
      retention:
        $ref: "#/definitions/putBucketRetentionRequest"
  ApiError:
    type: object
    properties:
      message:
        type: string
      detailedMessage:
        type: string
  user:
    type: object
    properties:
      accessKey:
        type: string
      policy:
        type: array
        items:
          type: string
      memberOf:
        type: array
        items:
          type: string
      status:
        type: string
      hasPolicy:
        type: boolean

  listUsersResponse:
    type: object
    properties:
      users:
        type: array
        items:
          $ref: "#/definitions/user"
        title: list of resulting users
  selectedUsers:
    type: array
    items:
      type: string
  addUserRequest:
    type: object
    required:
      - accessKey
      - secretKey
      - groups
      - policies
    properties:
      accessKey:
        type: string
      secretKey:
        type: string
      groups:
        type: array
        items:
          type: string
      policies:
        type: array
        items:
          type: string
  group:
    type: object
    properties:
      name:
        type: string
      status:
        type: string
      members:
        type: array
        items:
          type: string
      policy:
        type: string
  addGroupRequest:
    type: object
    required:
      - group
      - members
    properties:
      group:
        type: string
      members:
        type: array
        items:
          type: string
  listGroupsResponse:
    type: object
    properties:
      groups:
        type: array
        items:
          type: string
        title: list of groups
      total:
        type: integer
        format: int64
        title: total number of groups
  policy:
    type: object
    properties:
      name:
        type: string
      policy:
        type: string
  policyEntity:
    type: string
    enum:
      - user
      - group
    default: user
  setPolicyRequest:
    type: object
    required:
      - entityType
      - entityName
    properties:
      entityType:
        $ref: "#/definitions/policyEntity"
      entityName:
        type: string

  setPolicyNameRequest:
    type: object
    required:
      - name
      - entityType
      - entityName
    properties:
      name:
        type: array
        items:
          type: string
      entityType:
        $ref: "#/definitions/policyEntity"
      entityName:
        type: string

  setPolicyMultipleNameRequest:
    type: object
    properties:
      name:
        type: array
        items:
          type: string
      users:
        type: array
        items:
          $ref: "#/definitions/iamEntity"
      groups:
        type: array
        items:
          $ref: "#/definitions/iamEntity"

  iamEntity:
    type: string
    pattern: '^[\w+=,.@-]{1,64}$'

  addPolicyRequest:
    type: object
    required:
      - name
      - policy
    properties:
      name:
        type: string
      policy:
        type: string

  updateServiceAccountRequest:
    type: object
    required:
      - policy
    properties:
      policy:
        type: string
      secretKey:
        type: string
      name:
        type: string
      description:
        type: string
      expiry:
        type: string
      status:
        type: string

  listPoliciesResponse:
    type: object
    properties:
      policies:
        type: array
        items:
          $ref: "#/definitions/policy"
        title: list of policies
      total:
        type: integer
        format: int64
        title: total number of policies

  listAccessRulesResponse:
    type: object
    properties:
      accessRules:
        type: array
        items:
          $ref: "#/definitions/accessRule"
        title: list of policies
      total:
        type: integer
        format: int64
        title: total number of policies

  accessRule:
    type: object
    properties:
      prefix:
        type: string
      access:
        type: string

  updateGroupRequest:
    type: object
    required:
      - members
      - status
    properties:
      members:
        type: array
        items:
          type: string
      status:
        type: string
  configDescription:
    type: object
    properties:
      key:
        type: string
      description:
        type: string
  configurationKV:
    type: object
    properties:
      key:
        type: string
      value:
        type: string
      env_override:
        $ref: "#/definitions/envOverride"
  envOverride:
    type: object
    properties:
      name:
        type: string
      value:
        type: string
  configuration:
    type: object
    properties:
      name:
        type: string
      key_values:
        type: array
        items:
          $ref: "#/definitions/configurationKV"
  listConfigResponse:
    type: object
    properties:
      configurations:
        type: array
        items:
          $ref: "#/definitions/configDescription"
      total:
        type: integer
        format: int64
        title: total number of configurations
  setConfigRequest:
    type: object
    required:
      - key_values
    properties:
      key_values:
        type: array
        minItems: 1
        items:
          $ref: "#/definitions/configurationKV"
      arn_resource_id:
        type: string
        title: Used if configuration is an event notification's target
  notificationEventType:
    type: string
    enum:
      - put
      - delete
      - get
      - replica
      - ilm
      - scanner
  notificationConfig:
    type: object
    required:
      - arn
    properties:
      id:
        type: string
      arn:
        type: string
      events:
        type: array
        items:
          $ref: "#/definitions/notificationEventType"
        title: "filter specific type of event. Defaults to all event (default: '[put,delete,get]')"
      prefix:
        type: string
        title: "filter event associated to the specified prefix"
      suffix:
        type: string
        title: "filter event associated to the specified suffix"
  notificationDeleteRequest:
    type: object
    required:
      - events
      - prefix
      - suffix
    properties:
      events:
        type: array
        minLength: 1
        items:
          $ref: "#/definitions/notificationEventType"
        title: "filter specific type of event. Defaults to all event (default: '[put,delete,get]')"
      prefix:
        type: string
        title: "filter event associated to the specified prefix"
      suffix:
        type: string
        title: "filter event associated to the specified suffix"
  bucketEventRequest:
    type: object
    required:
      - configuration
    properties:
      configuration:
        $ref: "#/definitions/notificationConfig"
      ignoreExisting:
        type: boolean
  bucketReplicationDestination:
    type: object
    properties:
      bucket:
        type: string
  bucketReplicationRule:
    type: object
    properties:
      id:
        type: string
      status:
        type: string
        enum:
          - Enabled
          - Disabled
      priority:
        type: integer
        format: int32
      syncMode:
        type: string
        enum:
          - async
          - sync
        default: async
      bandwidth:
        type: string
      healthCheckPeriod:
        type: integer
      delete_marker_replication:
        type: boolean
      deletes_replication:
        type: boolean
      existingObjects:
        type: boolean
      metadata_replication:
        type: boolean
      prefix:
        type: string
      tags:
        type: string
      storageClass:
        type: string
      destination:
        $ref: "#/definitions/bucketReplicationDestination"

  bucketReplicationRuleList:
    type: object
    properties:
      rules:
        type: array
        items:
          type: string

  bucketReplicationResponse:
    type: object
    properties:
      rules:
        type: array
        items:
          $ref: "#/definitions/bucketReplicationRule"
    # missing
    #  "Filter": {
    #   "And": {},
    #   "Tag": {}
    #  }
    # }
    #}

  listExternalBucketsParams:
    required:
      - accessKey
      - secretKey
      - targetURL
      - useTLS
    properties:
      accessKey:
        type: string
        minLength: 3
      secretKey:
        type: string
        minLength: 8
      targetURL:
        type: string
      useTLS:
        type: boolean
      region:
        type: string

  multiBucketReplication:
    required:
      - accessKey
      - secretKey
      - targetURL
      - bucketsRelation
    properties:
      accessKey:
        type: string
        minLength: 3
      secretKey:
        type: string
        minLength: 8
      targetURL:
        type: string
      region:
        type: string
      syncMode:
        type: string
        enum:
          - async
          - sync
        default: async
      bandwidth:
        type: integer
        format: int64
      healthCheckPeriod:
        type: integer
        format: int32
      prefix:
        type: string
      tags:
        type: string
      replicateExistingObjects:
        type: boolean
      replicateDeleteMarkers:
        type: boolean
      replicateDeletes:
        type: boolean
      replicateMetadata:
        type: boolean
      priority:
        type: integer
        format: int32
        default: 0
      storageClass:
        type: string
        default: ""
      bucketsRelation:
        type: array
        minLength: 1
        items:
          $ref: "#/definitions/multiBucketsRelation"

  multiBucketReplicationEdit:
    properties:
      ruleState:
        type: boolean
      arn:
        type: string
      prefix:
        type: string
      tags:
        type: string
        default: ""
      replicateDeleteMarkers:
        type: boolean
      replicateDeletes:
        type: boolean
      replicateMetadata:
        type: boolean
      replicateExistingObjects:
        type: boolean
      priority:
        type: integer
        format: int32
        default: 0
      storageClass:
        type: string
        default: ""

  multiBucketsRelation:
    type: object
    properties:
      originBucket:
        type: string
      destinationBucket:
        type: string

  multiBucketResponseItem:
    type: object
    properties:
      originBucket:
        type: string
      targetBucket:
        type: string
      errorString:
        type: string

  multiBucketResponseState:
    type: object
    properties:
      replicationState:
        type: array
        items:
          $ref: "#/definitions/multiBucketResponseItem"

  addBucketReplication:
    type: object
    properties:
      arn:
        type: string
      destination_bucket:
        type: string

  makeBucketsResponse:
    type: object
    properties:
      bucketName:
        type: string

  listBucketEventsResponse:
    type: object
    properties:
      events:
        type: array
        items:
          $ref: "#/definitions/notificationConfig"
      total:
        type: integer
        format: int64
        title: total number of bucket events
  setBucketPolicyRequest:
    type: object
    required:
      - access
    properties:
      access:
        $ref: "#/definitions/bucketAccess"
      definition:
        type: string
  bucketQuota:
    type: object
    properties:
      quota:
        type: integer
      type:
        type: string
        enum:
          - hard
  setBucketQuota:
    type: object
    required:
      - enabled
    properties:
      enabled:
        type: boolean
      quota_type:
        type: string
        enum:
          - hard
      amount:
        type: integer
  loginDetails:
    type: object
    properties:
      loginStrategy:
        type: string
        enum: [form, redirect, service-account, redirect-service-account]
      redirectRules:
        type: array
        items:
          $ref: "#/definitions/redirectRule"
      isK8S:
        type: boolean
      animatedLogin:
        type: boolean
  loginOauth2AuthRequest:
    type: object
    required:
      - state
      - code
    properties:
      state:
        type: string
      code:
        type: string
  loginRequest:
    type: object
    properties:
      accessKey:
        type: string
      secretKey:
        type: string
      sts:
        type: string
      features:
        type: object
        properties:
          hide_menu:
            type: boolean
  loginResponse:
    type: object
    properties:
      sessionId:
        type: string
      IDPRefreshToken:
        type: string
  logoutRequest:
    type: object
    properties:
      state:
        type: string
  # Structure that holds the `Bearer {TOKEN}` present on authenticated requests
  principal:
    type: object
    properties:
      STSAccessKeyID:
        type: string
      STSSecretAccessKey:
        type: string
      STSSessionToken:
        type: string
      accountAccessKey:
        type: string
      hm:
        type: boolean
      ob:
        type: boolean
      customStyleOb:
        type: string
  startProfilingItem:
    type: object
    properties:
      nodeName:
        type: string
      success:
        type: boolean
      error:
        type: string
  startProfilingList:
    type: object
    properties:
      total:
        type: integer
        format: int64
        title: number of start results
      startResults:
        type: array
        items:
          $ref: "#/definitions/startProfilingItem"
  profilingStartRequest:
    type: object
    required:
      - type
    properties:
      type:
        type: string
  sessionResponse:
    type: object
    properties:
      features:
        type: array
        items:
          type: string
      status:
        type: string
        enum: [ok]
      operator:
        type: boolean
      distributedMode:
        type: boolean
      serverEndPoint:
        type: string
      permissions:
        type: object
        additionalProperties:
          type: array
          items:
            type: string
      customStyles:
        type: string
      allowResources:
        type: array
        items:
          $ref: "#/definitions/permissionResource"
      envConstants:
        $ref: "#/definitions/environmentConstants"

  widgetResult:
    type: object
    properties:
      metric:
        type: object
        additionalProperties:
          type: string
      values:
        type: array
        items: {}
  resultTarget:
    type: object
    properties:
      legendFormat:
        type: string
      resultType:
        type: string
      result:
        type: array
        items:
          $ref: "#/definitions/widgetResult"
  widget:
    type: object
    properties:
      title:
        type: string
      type:
        type: string
      id:
        type: integer
        format: int32
      options:
        type: object
        properties:
          reduceOptions:
            type: object
            properties:
              calcs:
                type: array
                items:
                  type: string
      targets:
        type: array
        items:
          $ref: "#/definitions/resultTarget"
  widgetDetails:
    type: object
    properties:
      title:
        type: string
      type:
        type: string
      id:
        type: integer
        format: int32
      options:
        type: object
        properties:
          reduceOptions:
            type: object
            properties:
              calcs:
                type: array
                items:
                  type: string
      targets:
        type: array
        items:
          $ref: "#/definitions/resultTarget"
  adminInfoResponse:
    type: object
    properties:
      buckets:
        type: integer
      objects:
        type: integer
      usage:
        type: integer
      advancedMetricsStatus:
        type: string
        enum:
          - not configured
          - available
          - unavailable
      widgets:
        type: array
        items:
          $ref: "#/definitions/widget"
      servers:
        type: array
        items:
          $ref: "#/definitions/serverProperties"
      backend:
        $ref: "#/definitions/BackendProperties"
  serverProperties:
    type: object
    properties:
      state:
        type: string
      endpoint:
        type: string
      uptime:
        type: integer
      version:
        type: string
      commitID:
        type: string
      poolNumber:
        type: integer
      network:
        type: object
        additionalProperties:
          type: string
      drives:
        type: array
        items:
          $ref: "#/definitions/serverDrives"
  serverDrives:
    type: object
    properties:
      uuid:
        type: string
      state:
        type: string
      endpoint:
        type: string
      drivePath:
        type: string
      rootDisk:
        type: boolean
      healing:
        type: boolean
      model:
        type: string
      totalSpace:
        type: integer
      usedSpace:
        type: integer
      availableSpace:
        type: integer
  BackendProperties:
    type: object
    properties:
      backendType:
        type: string
      rrSCParity:
        type: integer
      standardSCParity:
        type: integer
      onlineDrives:
        type: integer
      offlineDrives:
        type: integer
  arnsResponse:
    type: object
    properties:
      arns:
        type: array
        items:
          type: string
  updateUserGroups:
    type: object
    required:
      - groups
    properties:
      groups:
        type: array
        items:
          type: string
  nofiticationService:
    type: string
    enum:
      - webhook
      - amqp
      - kafka
      - mqtt
      - nats
      - nsq
      - mysql
      - postgres
      - elasticsearch
      - redis
  notificationEndpointItem:
    type: object
    properties:
      service:
        $ref: "#/definitions/nofiticationService"
      account_id:
        type: string
      status:
        type: string
  notificationEndpoint:
    type: object
    required:
      - service
      - account_id
      - properties
    properties:
      service:
        $ref: "#/definitions/nofiticationService"
      account_id:
        type: string
      properties:
        type: object
        additionalProperties:
          type: string
  setNotificationEndpointResponse:
    type: object
    required:
      - service
      - account_id
      - properties
    properties:
      service:
        $ref: "#/definitions/nofiticationService"
      account_id:
        type: string
      properties:
        type: object
        additionalProperties:
          type: string
      restart:
        type: boolean
  notifEndpointResponse:
    type: object
    properties:
      notification_endpoints:
        type: array
        items:
          $ref: "#/definitions/notificationEndpointItem"

  peerSiteRemoveResponse:
    type: object
    properties:
      status:
        type: string
      errorDetail:
        type: string

  peerSiteEditResponse:
    type: object
    properties:
      success:
        type: boolean
      status:
        type: string
      errorDetail:
        type: string

  peerSite:
    type: object
    properties:
      name:
        type: string
      endpoint:
        type: string
      accessKey:
        type: string
      secretKey:
        type: string

  peerInfo:
    type: object
    properties:
      endpoint:
        type: string
      name:
        type: string
      deploymentID:
        type: string

  peerInfoRemove:
    type: object
    required:
      - sites
    properties:
      all:
        type: boolean
      sites:
        type: array
        items:
          type: string

  siteReplicationAddRequest:
    type: array
    items:
      $ref: "#/definitions/peerSite"

  siteReplicationAddResponse:
    type: object
    properties:
      success:
        type: boolean
      status:
        type: string
      errorDetail:
        type: string
      initialSyncErrorMessage:
        type: string

  siteReplicationInfoResponse:
    type: object
    properties:
      enabled:
        type: boolean
      name:
        type: string
      sites:
        type: array
        items:
          $ref: "#/definitions/peerInfo"
      serviceAccountAccessKey:
        type: string

  siteReplicationStatusResponse:
    type: object
    properties:
      enabled:
        type: boolean
      maxBuckets:
        type: integer
      maxUsers:
        type: integer
      maxGroups:
        type: integer
      maxPolicies:
        type: integer
      sites:
        type: object
      statsSummary:
        type: object
      bucketStats:
        type: object
      policyStats:
        type: object
      userStats:
        type: object
      groupStats:
        type: object

  updateUser:
    type: object
    required:
      - status
      - groups
    properties:
      status:
        type: string
      groups:
        type: array
        items:
          type: string
  bulkUserGroups:
    type: object
    required:
      - users
      - groups
    properties:
      users:
        type: array
        items:
          type: string
      groups:
        type: array
        items:
          type: string
  serviceAccount:
    type: object
    properties:
      parentUser:
        type: string
      accountStatus:
        type: string
      impliedPolicy:
        type: boolean
      policy:
        type: string
      name:
        type: string
      description:
        type: string
      expiration:
        type: string
  serviceAccounts:
    type: array
    items:
      type: object
      properties:
        accountStatus:
          type: string
        name:
          type: string
        description:
          type: string
        expiration:
          type: string
        accessKey:
          type: string

  serviceAccountRequest:
    type: object
    properties:
      policy:
        type: string
        title: "policy to be applied to the Service Account if any"
      name:
        type: string
      description:
        type: string
      expiry:
        type: string
      comment:
        type: string
  serviceAccountRequestCreds:
    type: object
    properties:
      policy:
        type: string
        title: "policy to be applied to the Service Account if any"
      accessKey:
        type: string
      secretKey:
        type: string
      name:
        type: string
      description:
        type: string
      expiry:
        type: string
      comment:
        type: string
  serviceAccountCreds:
    type: object
    properties:
      accessKey:
        type: string
      secretKey:
        type: string
      url:
        type: string
  remoteBucket:
    type: object
    required:
      - accessKey
      - sourceBucket
      - remoteARN
    properties:
      accessKey:
        type: string
        minLength: 3
      secretKey:
        type: string
        minLength: 8
      sourceBucket:
        type: string
      targetURL:
        type: string
      targetBucket:
        type: string
      remoteARN:
        type: string
      status:
        type: string
      service:
        type: string
        enum: [replication]
      syncMode:
        type: string
      bandwidth:
        type: integer
        format: int64
      healthCheckPeriod:
        type: integer
  createRemoteBucket:
    required:
      - accessKey
      - secretKey
      - targetURL
      - sourceBucket
      - targetBucket
    properties:
      accessKey:
        type: string
        minLength: 3
      secretKey:
        type: string
        minLength: 8
      targetURL:
        type: string
      sourceBucket:
        type: string
      targetBucket:
        type: string
      region:
        type: string
      syncMode:
        type: string
        enum:
          - async
          - sync
        default: async
      bandwidth:
        type: integer
        format: int64
      healthCheckPeriod:
        type: integer
        format: int32
  listRemoteBucketsResponse:
    type: object
    properties:
      buckets:
        type: array
        items:
          $ref: "#/definitions/remoteBucket"
        title: list of remote buckets
      total:
        type: integer
        format: int64
        title: number of remote buckets accessible to user
  bucketVersioningResponse:
    type: object
    properties:
      status:
        type: string
      MFADelete:
        type: string
      excludedPrefixes:
        type: array
        items:
          type: object
          properties:
            prefix:
              type: string
      excludeFolders:
        type: boolean

  setBucketVersioning:
    type: object
    properties:
      enabled:
        type: boolean
      excludePrefixes:
        type: array
        maxLength: 10
        items:
          type: string
      excludeFolders:
        type: boolean

  bucketObLockingResponse:
    type: object
    properties:
      object_locking_enabled:
        type: boolean

  logSearchResponse:
    type: object
    properties:
      results:
        type: object
        title: list of log search responses

  objectLegalHoldStatus:
    type: string
    enum:
      - enabled
      - disabled

  putObjectLegalHoldRequest:
    type: object
    required:
      - status
    properties:
      status:
        $ref: "#/definitions/objectLegalHoldStatus"

  objectRetentionMode:
    type: string
    enum:
      - governance
      - compliance

  putObjectRetentionRequest:
    type: object
    required:
      - mode
      - expires
    properties:
      mode:
        $ref: "#/definitions/objectRetentionMode"
      expires:
        type: string
      governance_bypass:
        type: boolean

  putObjectTagsRequest:
    type: object
    properties:
      tags:
        additionalProperties:
          type: string

  putBucketTagsRequest:
    type: object
    properties:
      tags:
        additionalProperties:
          type: string

  objectRetentionUnit:
    type: string
    enum:
      - days
      - years

  putBucketRetentionRequest:
    type: object
    required:
      - mode
      - unit
      - validity
    properties:
      mode:
        $ref: "#/definitions/objectRetentionMode"
      unit:
        $ref: "#/definitions/objectRetentionUnit"
      validity:
        type: integer
        format: int32

  getBucketRetentionConfig:
    type: object
    properties:
      mode:
        $ref: "#/definitions/objectRetentionMode"
      unit:
        $ref: "#/definitions/objectRetentionUnit"
      validity:
        type: integer
        format: int32

  bucketLifecycleResponse:
    type: object
    properties:
      lifecycle:
        type: array
        items:
          $ref: "#/definitions/objectBucketLifecycle"

  expirationResponse:
    type: object
    properties:
      date:
        type: string
      days:
        type: integer
        format: int64
      delete_marker:
        type: boolean
      delete_all:
        type: boolean
      noncurrent_expiration_days:
        type: integer
        format: int64
      newer_noncurrent_expiration_versions:
        type: integer
        format: int64

  transitionResponse:
    type: object
    properties:
      date:
        type: string
      storage_class:
        type: string
      days:
        type: integer
        format: int64
      noncurrent_transition_days:
        type: integer
        format: int64
      noncurrent_storage_class:
        type: string

  lifecycleTag:
    type: object
    properties:
      key:
        type: string
      value:
        type: string

  objectBucketLifecycle:
    type: object
    properties:
      id:
        type: string
      prefix:
        type: string
      status:
        type: string
      expiration:
        $ref: "#/definitions/expirationResponse"
      transition:
        $ref: "#/definitions/transitionResponse"
      tags:
        type: array
        items:
          $ref: "#/definitions/lifecycleTag"

  addBucketLifecycle:
    type: object
    properties:
      type:
        description: ILM Rule type (Expiry or transition)
        type: string
        enum:
          - expiry
          - transition
      prefix:
        description: Non required field, it matches a prefix to perform ILM operations on it
        type: string
      tags:
        description: Non required field, tags to match ILM files
        type: string
      expiry_days:
        description: Required in case of expiry_date or transition fields are not set. it defines an expiry days for ILM
        type: integer
        format: int32
        default: 0
      transition_days:
        description: Required in case of transition_date or expiry fields are not set. it defines a transition days for ILM
        type: integer
        format: int32
        default: 0
      storage_class:
        description: Required only in case of transition is set. it refers to a tier
        type: string
      disable:
        description: Non required, toggle to disable or enable rule
        type: boolean
      expired_object_delete_marker:
        description: Non required, toggle to disable or enable rule
        type: boolean
      expired_object_delete_all:
        description: Non required, toggle to disable or enable rule
        type: boolean
      noncurrentversion_expiration_days:
        description: Non required, can be set in case of expiration is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_days:
        description: Non required, can be set in case of transition is enabled
        type: integer
        format: int32
        default: 0
      newer_noncurrentversion_expiration_versions:
        description: Non required, can be set in case of expiration is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_storage_class:
        description: Non required, can be set in case of transition is enabled
        type: string

  updateBucketLifecycle:
    type: object
    required:
      - type
    properties:
      type:
        description: ILM Rule type (Expiry or transition)
        type: string
        enum:
          - expiry
          - transition
      prefix:
        description: Non required field, it matches a prefix to perform ILM operations on it
        type: string
      tags:
        description: Non required field, tags to match ILM files
        type: string
      expiry_days:
        description: Required in case of expiry_date or transition fields are not set. it defines an expiry days for ILM
        type: integer
        format: int32
        default: 0
      transition_days:
        description: Required in case of transition_date or expiry fields are not set. it defines a transition days for ILM
        type: integer
        format: int32
        default: 0
      storage_class:
        description: Required only in case of transition is set. it refers to a tier
        type: string
      disable:
        description: Non required, toggle to disable or enable rule
        type: boolean
      expired_object_delete_marker:
        description: Non required, toggle to disable or enable rule
        type: boolean
      expired_object_delete_all:
        description: Non required, toggle to disable or enable rule
        type: boolean
      noncurrentversion_expiration_days:
        description: Non required, can be set in case of expiration is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_days:
        description: Non required, can be set in case of transition is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_storage_class:
        description: Non required, can be set in case of transition is enabled
        type: string

  addMultiBucketLifecycle:
    type: object
    required:
      - buckets
      - type
    properties:
      buckets:
        type: array
        items:
          type: string
      type:
        description: ILM Rule type (Expiry or transition)
        type: string
        enum:
          - expiry
          - transition
      prefix:
        description: Non required field, it matches a prefix to perform ILM operations on it
        type: string
      tags:
        description: Non required field, tags to match ILM files
        type: string
      expiry_days:
        description: Required in case of expiry_date or transition fields are not set. it defines an expiry days for ILM
        type: integer
        format: int32
        default: 0
      transition_days:
        description: Required in case of transition_date or expiry fields are not set. it defines a transition days for ILM
        type: integer
        format: int32
        default: 0
      storage_class:
        description: Required only in case of transition is set. it refers to a tier
        type: string
      expired_object_delete_marker:
        description: Non required, toggle to disable or enable rule
        type: boolean
      expired_object_delete_all:
        description: Non required, toggle to disable or enable rule
        type: boolean
      noncurrentversion_expiration_days:
        description: Non required, can be set in case of expiration is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_days:
        description: Non required, can be set in case of transition is enabled
        type: integer
        format: int32
        default: 0
      noncurrentversion_transition_storage_class:
        description: Non required, can be set in case of transition is enabled
        type: string

  multicycleResultItem:
    type: object
    properties:
      bucketName:
        type: string
      error:
        type: string

  multiLifecycleResult:
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/multicycleResultItem"

  prefixAccessPair:
    type: object
    properties:
      prefix:
        type: string
      access:
        type: string

  prefixWrapper:
    type: object
    properties:
      prefix:
        type: string

  setConfigResponse:
    type: object
    properties:
      restart:
        description: Returns wheter server needs to restart to apply changes or not
        type: boolean

  configExportResponse:
    type: object
    properties:
      value:
        description: Returns base64 encoded value
        type: string
      status:
        type: string

  license:
    type: object
    properties:
      email:
        type: string
      organization:
        type: string
      account_id:
        type: integer
      storage_capacity:
        type: integer
      plan:
        type: string
      expires_at:
        type: string
  apiKey:
    type: object
    properties:
      apiKey:
        type: string

  policyArgs:
    type: object
    properties:
      id:
        type: string
      action:
        type: string
      bucket_name:
        type: string

  tier_s3:
    type: object
    properties:
      name:
        type: string
      endpoint:
        type: string
      accesskey:
        type: string
      secretkey:
        type: string
      bucket:
        type: string
      prefix:
        type: string
      region:
        type: string
      storageclass:
        type: string
      usage:
        type: string
      objects:
        type: string
      versions:
        type: string

  tier_minio:
    type: object
    properties:
      name:
        type: string
      endpoint:
        type: string
      accesskey:
        type: string
      secretkey:
        type: string
      bucket:
        type: string
      prefix:
        type: string
      region:
        type: string
      storageclass:
        type: string
      usage:
        type: string
      objects:
        type: string
      versions:
        type: string

  tier_azure:
    type: object
    properties:
      name:
        type: string
      endpoint:
        type: string
      accountname:
        type: string
      accountkey:
        type: string
      bucket:
        type: string
      prefix:
        type: string
      region:
        type: string
      usage:
        type: string
      objects:
        type: string
      versions:
        type: string

  tier_gcs:
    type: object
    properties:
      name:
        type: string
      endpoint:
        type: string
      creds:
        type: string
      bucket:
        type: string
      prefix:
        type: string
      region:
        type: string
      usage:
        type: string
      objects:
        type: string
      versions:
        type: string

  deleteFile:
    type: object
    properties:
      path:
        type: string
      versionID:
        type: string
      recursive:
        type: boolean

  userSAs:
    type: object
    properties:
      path:
        type: string
      versionID:
        type: string
      recursive:
        type: boolean

  tier:
    type: object
    properties:
      status:
        type: boolean
      type:
        type: string
        enum:
          - s3
          - gcs
          - azure
          - minio
          - unsupported
      s3:
        type: object
        $ref: "#/definitions/tier_s3"
      gcs:
        type: object
        $ref: "#/definitions/tier_gcs"
      azure:
        type: object
        $ref: "#/definitions/tier_azure"
      minio:
        type: object
        $ref: "#/definitions/tier_minio"

  tierListResponse:
    type: object
    properties:
      items:
        type: array
        items:
          $ref: "#/definitions/tier"

  tiersNameListResponse:
    type: object
    properties:
      items:
        type: array
        items:
          type: string

  tierCredentialsRequest:
    type: object
    properties:
      access_key:
        type: string
      secret_key:
        type: string
      creds:
        type: string
        description: a base64 encoded value

  rewindItem:
    type: object
    properties:
      last_modified:
        type: string
      size:
        type: integer
        format: int64
      version_id:
        type: string
      delete_flag:
        type: boolean
      action:
        type: string
      name:
        type: string
      is_latest:
        type: boolean

  rewindResponse:
    type: object
    properties:
      objects:
        type: array
        items:
          $ref: "#/definitions/rewindItem"

  iamPolicy:
    type: object
    properties:
      version:
        type: string
      statement:
        type: array
        items:
          $ref: "#/definitions/iamPolicyStatement"

  iamPolicyStatement:
    type: object
    properties:
      effect:
        type: string
      action:
        type: array
        items:
          type: string
      resource:
        type: array
        items:
          type: string
      condition:
        type: object
        additionalProperties:
          type: object

  metadata:
    type: object
    properties:
      objectMetadata:
        type: object
        additionalProperties: true

  subnetLoginResponse:
    type: object
    properties:
      access_token:
        type: string
      organizations:
        type: array
        items:
          $ref: "#/definitions/subnetOrganization"
      mfa_token:
        type: string
      registered:
        type: boolean

  subnetLoginRequest:
    type: object
    properties:
      username:
        type: string
      password:
        type: string
      apiKey:
        type: string

  subnetLoginMFARequest:
    type: object
    required:
      - username
      - otp
      - mfa_token
    properties:
      username:
        type: string
      otp:
        type: string
      mfa_token:
        type: string

  subnetRegisterRequest:
    type: object
    required:
      - token
      - account_id
    properties:
      token:
        type: string
      account_id:
        type: string

  SubnetRegTokenResponse:
    type: object
    properties:
      regToken:
        type: string

  subnetOrganization:
    type: object
    properties:
      userId:
        type: integer
      accountId:
        type: integer
      subscriptionStatus:
        type: string
      isAccountOwner:
        type: boolean
      company:
        type: string
      shortName:
        type: string

  permissionResource:
    type: object
    properties:
      resource:
        type: string
      conditionOperator:
        type: string
      prefixes:
        type: array
        items:
          type: string

  aUserPolicyResponse:
    type: object
    properties:
      policy:
        type: string

  kmsStatusResponse:
    type: object
    properties:
      name:
        type: string
      defaultKeyID:
        type: string
      endpoints:
        type: array
        items:
          $ref: "#/definitions/kmsEndpoint"
  kmsEndpoint:
    type: object
    properties:
      url:
        type: string
      status:
        type: string

  kmsKeyStatusResponse:
    type: object
    properties:
      keyID:
        type: string
      encryptionErr:
        type: string
      decryptionErr:
        type: string
  kmsCreateKeyRequest:
    type: object
    required:
      - key
    properties:
      key:
        type: string
  kmsImportKeyRequest:
    type: object
    required:
      - bytes
    properties:
      bytes:
        type: string
  kmDeleteKeyRequest:
    type: object
  kmsListKeysResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/kmsKeyInfo"
  kmsKeyInfo:
    type: object
    properties:
      name:
        type: string
      createdAt:
        type: string
      createdBy:
        type: string

  kmsGetPolicyResponse:
    type: object
    properties:
      allow:
        type: array
        items:
          type: string
      deny:
        type: array
        items:
          type: string
  kmsSetPolicyRequest:
    type: object
    required:
      - policy
    properties:
      policy:
        type: string
      allow:
        type: array
        items:
          type: string
      deny:
        type: array
        items:
          type: string
  kmsDescribePolicyResponse:
    type: object
    properties:
      createdAt:
        type: string
      createdBy:
        type: string
      name:
        type: string
  kmsAssignPolicyRequest:
    type: object
    properties:
      identity:
        type: string
  kmsListPoliciesResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/kmsPolicyInfo"
  kmsPolicyInfo:
    type: object
    properties:
      name:
        type: string
      createdAt:
        type: string
      createdBy:
        type: string

  kmsDescribeIdentityResponse:
    type: object
    properties:
      policy:
        type: string
      identity:
        type: string
      admin:
        type: boolean
      createdAt:
        type: string
      createdBy:
        type: string
  kmsDescribeSelfIdentityResponse:
    type: object
    properties:
      identity:
        type: string
      policyName:
        type: string
      admin:
        type: boolean
      createdAt:
        type: string
      createdBy:
        type: string
      policy:
        $ref: "#/definitions/kmsGetPolicyResponse"
  kmsListIdentitiesResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/kmsIdentityInfo"
  kmsIdentityInfo:
    type: object
    properties:
      identity:
        type: string
      policy:
        type: string
      error:
        type: string
      createdAt:
        type: string
      createdBy:
        type: string
  kmsMetricsResponse:
    type: object
    required:
      - requestOK
      - requestErr
      - requestFail
      - requestActive
      - auditEvents
      - errorEvents
      - latencyHistogram
      - uptime
      - cpus
      - usableCPUs
      - threads
      - heapAlloc
      - stackAlloc
    properties:
      requestOK:
        type: integer
      requestErr:
        type: integer
      requestFail:
        type: integer
      requestActive:
        type: integer
      auditEvents:
        type: integer
      errorEvents:
        type: integer
      latencyHistogram:
        type: array
        items:
          $ref: "#/definitions/kmsLatencyHistogram"
      uptime:
        type: integer
      cpus:
        type: integer
      usableCPUs:
        type: integer
      threads:
        type: integer
      heapAlloc:
        type: integer
      heapObjects:
        type: integer
      stackAlloc:
        type: integer
  kmsLatencyHistogram:
    type: object
    properties:
      duration:
        type: integer
      total:
        type: integer

  kmsAPIsResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/kmsAPI"
  kmsAPI:
    type: object
    properties:
      method:
        type: string
      path:
        type: string
      maxBody:
        type: integer
      timeout:
        type: integer
  kmsVersionResponse:
    type: object
    properties:
      version:
        type: string

  environmentConstants:
    type: object
    properties:
      maxConcurrentUploads:
        type: integer
      maxConcurrentDownloads:
        type: integer

  redirectRule:
    type: object
    properties:
      redirect:
        type: string
      displayName:
        type: string
      serviceType:
        type: string

  idpServerConfiguration:
    type: object
    properties:
      name:
        type: string
      input:
        type: string
      type:
        type: string
      enabled:
        type: boolean
      info:
        type: array
        items:
          $ref: "#/definitions/idpServerConfigurationInfo"
  idpServerConfigurationInfo:
    type: object
    properties:
      key:
        type: string
      value:
        type: string
      isCfg:
        type: boolean
      isEnv:
        type: boolean
  idpListConfigurationsResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/idpServerConfiguration"
  setIDPResponse:
    type: object
    properties:
      restart:
        type: boolean

  releaseListResponse:
    type: object
    properties:
      results:
        type: array
        items:
          $ref: "#/definitions/releaseInfo"
  releaseInfo:
    type: object
    properties:
      metadata:
        $ref: "#/definitions/releaseMetadata"
      notesContent:
        type: string
      securityContent:
        type: string
      breakingChangesContent:
        type: string
      contextContent:
        type: string
      newFeaturesContent:
        type: string

  releaseMetadata:
    type: object
    properties:
      tag_name:
        type: string
      target_commitish:
        type: string
      name:
        type: string
      draft:
        type: boolean
      prerelease:
        type: boolean
      id:
        type: integer
      created_at:
        type: string
      published_at:
        type: string
      url:
        type: string
      html_url:
        type: string
      assets_url:
        type: string
      upload_url:
        type: string
      zipball_url:
        type: string
      tarball_url:
        type: string
      author:
        $ref: "#/definitions/releaseAuthor"
      node_id:
        type: string
  releaseAuthor:
    type: object
    properties:
      login:
        type: string
      id:
        type: integer
      node_id:
        type: string
      avatar_url:
        type: string
      html_url:
        type: string
      gravatar_id:
        type: string
      type:
        type: string
      site_admin:
        type: boolean
      url:
        type: string
      events_url:
        type: string
      following_url:
        type: string
      followers_url:
        type: string
      gists_url:
        type: string
      organizations_url:
        type: string
      receivedEvents_url:
        type: string
      repos_url:
        type: string
      starred_url:
        type: string
      subscriptions_url:
        type: string

  callHomeGetResponse:
    type: object
    properties:
      diagnosticsStatus:
        type: boolean
      logsStatus:
        type: boolean

  callHomeSetStatus:
    type: object
    required:
      - diagState
      - logsState
    properties:
      diagState:
        type: boolean
      logsState:
        type: boolean

  ldapEntitiesRequest:
    type: object
    properties:
      users:
        type: array
        items:
          type: string
      groups:
        type: array
        items:
          type: string
      policies:
        type: array
        items:
          type: string

  ldapEntities:
    type: object
    properties:
      timestamp:
        type: string
      users:
        type: array
        items:
          $ref: "#/definitions/ldapUserPolicyEntity"
      groups:
        type: array
        items:
          $ref: "#/definitions/ldapGroupPolicyEntity"
      policies:
        type: array
        items:
          $ref: "#/definitions/ldapPolicyEntity"

  ldapUserPolicyEntity:
    type: object
    properties:
      user:
        type: string
      policies:
        type: array
        items:
          type: string

  ldapGroupPolicyEntity:
    type: object
    properties:
      group:
        type: string
      policies:
        type: array
        items:
          type: string

  ldapPolicyEntity:
    type: object
    properties:
      policy:
        type: string
      users:
        type: array
        items:
          type: string
      groups:
        type: array
        items:
          type: string

  maxShareLinkExpResponse:
    type: object
    properties:
      exp:
        type: number
        format: int64
    required:
      - exp

  selectedSAs:
    type: array
    items:
      type: string
