openapi: 3.0.0
paths:
  /v1/branches/{branch_id}:
    get:
      operationId: v1-get-a-branch-config
      summary: Get database branch config
      description: Fetches configurations of the specified database branch
      parameters:
        - name: branch_id
          required: true
          in: path
          description: Branch ID
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchDetailResponse'
        '500':
          description: Failed to retrieve database branch
      tags:
        - Environments
      security:
        - bearer: []
    patch:
      operationId: v1-update-a-branch-config
      summary: Update database branch config
      description: Updates the configuration of the specified database branch
      parameters:
        - name: branch_id
          required: true
          in: path
          description: Branch ID
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBranchBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResponse'
        '500':
          description: Failed to update database branch
      tags:
        - Environments
      security:
        - bearer: []
    delete:
      operationId: v1-delete-a-branch
      summary: Delete a database branch
      description: Deletes the specified database branch
      parameters:
        - name: branch_id
          required: true
          in: path
          description: Branch ID
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchDeleteResponse'
        '500':
          description: Failed to delete database branch
      tags:
        - Environments
      security:
        - bearer: []
  /v1/branches/{branch_id}/reset:
    post:
      operationId: v1-reset-a-branch
      summary: Resets a database branch
      description: Resets the specified database branch
      parameters:
        - name: branch_id
          required: true
          in: path
          description: Branch ID
          schema:
            type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResetResponse'
        '500':
          description: Failed to reset database branch
      tags:
        - Environments
      security:
        - bearer: []
  /v1/projects:
    get:
      operationId: v1-list-all-projects
      summary: List all projects
      description: Returns a list of all projects you've previously created.
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/V1ProjectWithDatabaseResponse'
      tags:
        - Projects
      security:
        - bearer: []
    post:
      operationId: v1-create-a-project
      summary: Create a project
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1CreateProjectBodyDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ProjectResponse'
      tags:
        - Projects
      security:
        - bearer: []
  /v1/organizations:
    get:
      operationId: v1-list-all-organizations
      summary: List all organizations
      description: Returns a list of organizations that you currently belong to.
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrganizationResponseV1'
        '500':
          description: Unexpected error listing organizations
      tags:
        - Organizations
      security:
        - bearer: []
    post:
      operationId: v1-create-an-organization
      summary: Create an organization
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrganizationV1Dto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponseV1'
        '500':
          description: Unexpected error creating an organization
      tags:
        - Organizations
      security:
        - bearer: []
  /v1/oauth/authorize:
    get:
      operationId: v1-authorize-user
      summary: '[Beta] Authorize user through oauth'
      parameters:
        - name: client_id
          required: true
          in: query
          schema:
            type: string
        - name: response_type
          required: true
          in: query
          schema:
            enum:
              - code
              - token
              - id_token token
            type: string
        - name: redirect_uri
          required: true
          in: query
          schema:
            type: string
        - name: scope
          required: false
          in: query
          schema:
            type: string
        - name: state
          required: false
          in: query
          schema:
            type: string
        - name: response_mode
          required: false
          in: query
          schema:
            type: string
        - name: code_challenge
          required: false
          in: query
          schema:
            type: string
        - name: code_challenge_method
          required: false
          in: query
          schema:
            enum:
              - plain
              - sha256
              - S256
            type: string
      responses:
        '303':
          description: ''
      tags:
        - OAuth
      security:
        - oauth2:
            - read
  /v1/oauth/token:
    post:
      operationId: v1-exchange-oauth-token
      summary: '[Beta] Exchange auth code for user''s access and refresh token'
      parameters: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OAuthTokenBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthTokenResponse'
      tags:
        - OAuth
      security:
        - oauth2:
            - write
  /v1/snippets:
    get:
      operationId: v1-list-all-snippets
      summary: Lists SQL snippets for the logged in user
      parameters:
        - name: project_ref
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnippetList'
        '500':
          description: Failed to list user's SQL snippets
      tags:
        - Database
      security:
        - bearer: []
  /v1/snippets/{id}:
    get:
      operationId: v1-get-a-snippet
      summary: Gets a specific SQL snippet
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnippetResponse'
        '500':
          description: Failed to retrieve SQL snippet
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/api-keys:
    get:
      operationId: v1-get-project-api-keys
      summary: Get project api keys
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: reveal
          required: true
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ApiKeyResponse'
      tags:
        - Secrets
      security:
        - bearer: []
    post:
      operationId: createApiKey
      summary: '[Alpha] Creates a new API key for the project'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: reveal
          required: true
          in: query
          schema:
            type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateApiKeyBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyResponse'
      tags:
        - Secrets
      security:
        - bearer: []
  /v1/projects/{ref}/api-keys/{id}:
    patch:
      operationId: updateApiKey
      summary: '[Alpha] Updates an API key for the project'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: reveal
          required: true
          in: query
          schema:
            type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateApiKeyBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyResponse'
      tags:
        - Secrets
      security:
        - bearer: []
    get:
      operationId: getApiKey
      summary: '[Alpha] Get API key'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: reveal
          required: true
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyResponse'
      tags:
        - Secrets
      security:
        - bearer: []
    delete:
      operationId: deleteApiKey
      summary: '[Alpha] Deletes an API key for the project'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: reveal
          required: true
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeyResponse'
        '403':
          description: ''
      tags:
        - Secrets
      security:
        - bearer: []
  /v1/projects/{ref}/branches:
    get:
      operationId: v1-list-all-branches
      summary: List all database branches
      description: Returns all database branches of the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BranchResponse'
        '500':
          description: Failed to retrieve database branches
      tags:
        - Environments
      security:
        - bearer: []
    post:
      operationId: v1-create-a-branch
      summary: Create a database branch
      description: Creates a database branch from the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBranchBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResponse'
        '500':
          description: Failed to create database branch
      tags:
        - Environments
      security:
        - bearer: []
    delete:
      operationId: v1-disable-preview-branching
      summary: Disables preview branching
      description: Disables preview branching for the specified project
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
        '500':
          description: Failed to disable preview branching
      tags:
        - Environments
      security:
        - bearer: []
  /v1/projects/{ref}/custom-hostname:
    get:
      operationId: v1-get-hostname-config
      summary: '[Beta] Gets project''s custom hostname config'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCustomHostnameResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's custom hostname config
      tags:
        - Domains
      security:
        - bearer: []
    delete:
      operationId: v1-Delete hostname config
      summary: '[Beta] Deletes a project''s custom hostname configuration'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to delete project custom hostname configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/custom-hostname/initialize:
    post:
      operationId: v1-update-hostname-config
      summary: '[Beta] Updates project''s custom hostname configuration'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomHostnameBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCustomHostnameResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project custom hostname configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/custom-hostname/reverify:
    post:
      operationId: v1-verify-dns-config
      summary: >-
        [Beta] Attempts to verify the DNS configuration for project's custom
        hostname configuration
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCustomHostnameResponse'
        '403':
          description: ''
        '500':
          description: Failed to verify project custom hostname configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/custom-hostname/activate:
    post:
      operationId: v1-activate-custom-hostname
      summary: '[Beta] Activates a custom hostname for a project.'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCustomHostnameResponse'
        '403':
          description: ''
        '500':
          description: Failed to activate project custom hostname configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/network-bans/retrieve:
    post:
      operationId: v1-list-all-network-bans
      summary: '[Beta] Gets project''s network bans'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkBanResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's network bans
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/network-bans:
    delete:
      operationId: v1-delete-network-bans
      summary: '[Beta] Remove network bans.'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveNetworkBanRequest'
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to remove network bans.
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/network-restrictions:
    get:
      operationId: v1-get-network-restrictions
      summary: '[Beta] Gets project''s network restrictions'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkRestrictionsResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's network restrictions
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/network-restrictions/apply:
    post:
      operationId: v1-update-network-restrictions
      summary: '[Beta] Updates project''s network restrictions'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkRestrictionsRequest'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkRestrictionsResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project network restrictions
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/pgsodium:
    get:
      operationId: v1-get-pgsodium-config
      summary: '[Beta] Gets project''s pgsodium config'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PgsodiumConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's pgsodium config
      tags:
        - Secrets
      security:
        - bearer: []
    put:
      operationId: v1-update-pgsodium-config
      summary: >-
        [Beta] Updates project's pgsodium config. Updating the root_key can
        cause all data encrypted with the older key to become inaccessible.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePgsodiumConfigBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PgsodiumConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's pgsodium config
      tags:
        - Secrets
      security:
        - bearer: []
  /v1/projects/{ref}/postgrest:
    get:
      operationId: v1-get-postgrest-service-config
      summary: Gets project's postgrest config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostgrestConfigWithJWTSecretResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's postgrest config
      tags:
        - Rest
      security:
        - bearer: []
    patch:
      operationId: v1-update-postgrest-service-config
      summary: Updates project's postgrest config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePostgrestConfigBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1PostgrestConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's postgrest config
      tags:
        - Rest
      security:
        - bearer: []
  /v1/projects/{ref}:
    get:
      operationId: v1-get-project
      summary: Gets a specific project that belongs to the authenticated user
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ProjectWithDatabaseResponse'
        '500':
          description: Failed to retrieve project
      tags:
        - Projects
      security:
        - bearer: []
    delete:
      operationId: v1-delete-a-project
      summary: Deletes the given project
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1ProjectRefResponse'
        '403':
          description: ''
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/secrets:
    get:
      operationId: v1-list-all-secrets
      summary: List all secrets
      description: Returns all secrets you've previously added to the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SecretResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's secrets
      tags:
        - Secrets
      security:
        - bearer: []
    post:
      operationId: v1-bulk-create-secrets
      summary: Bulk create secrets
      description: Creates multiple secrets and adds them to the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CreateSecretBody'
      responses:
        '201':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to create project's secrets
      tags:
        - Secrets
      security:
        - bearer: []
    delete:
      operationId: v1-bulk-delete-secrets
      summary: Bulk delete secrets
      description: Deletes all secrets with the given names from the specified project
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
        '403':
          description: ''
        '500':
          description: Failed to delete secrets with given names
      tags:
        - Secrets
      security:
        - bearer: []
  /v1/projects/{ref}/ssl-enforcement:
    get:
      operationId: v1-get-ssl-enforcement-config
      summary: '[Beta] Get project''s SSL enforcement configuration.'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SslEnforcementResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's SSL enforcement config
      tags:
        - Database
      security:
        - bearer: []
    put:
      operationId: v1-update-ssl-enforcement-config
      summary: '[Beta] Update project''s SSL enforcement configuration.'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SslEnforcementRequest'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SslEnforcementResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's SSL enforcement configuration.
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/types/typescript:
    get:
      operationId: v1-generate-typescript-types
      summary: Generate TypeScript types
      description: Returns the TypeScript types of your schema for use with supabase-js.
      parameters:
        - name: included_schemas
          required: false
          in: query
          schema:
            default: public
            type: string
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypescriptResponse'
        '403':
          description: ''
        '500':
          description: Failed to generate TypeScript types
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/vanity-subdomain:
    get:
      operationId: v1-get-vanity-subdomain-config
      summary: '[Beta] Gets current vanity subdomain config'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VanitySubdomainConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to get project vanity subdomain configuration
      tags:
        - Domains
      security:
        - bearer: []
    delete:
      operationId: v1-deactivate-vanity-subdomain-config
      summary: '[Beta] Deletes a project''s vanity subdomain configuration'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to delete project vanity subdomain configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/vanity-subdomain/check-availability:
    post:
      operationId: v1-check-vanity-subdomain-availability
      summary: '[Beta] Checks vanity subdomain availability'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VanitySubdomainBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubdomainAvailabilityResponse'
        '403':
          description: ''
        '500':
          description: Failed to check project vanity subdomain configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/vanity-subdomain/activate:
    post:
      operationId: v1-activate-vanity-subdomain-config
      summary: '[Beta] Activates a vanity subdomain for a project.'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VanitySubdomainBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivateVanitySubdomainResponse'
        '403':
          description: ''
        '500':
          description: Failed to activate project vanity subdomain configuration
      tags:
        - Domains
      security:
        - bearer: []
  /v1/projects/{ref}/upgrade:
    post:
      operationId: v1-upgrade-postgres-version
      summary: '[Beta] Upgrades the project''s Postgres version'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeDatabaseBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectUpgradeInitiateResponse'
        '403':
          description: ''
        '500':
          description: Failed to initiate project upgrade
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/upgrade/eligibility:
    get:
      operationId: v1-get-postgres-upgrade-eligibility
      summary: '[Beta] Returns the project''s eligibility for upgrades'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectUpgradeEligibilityResponse'
        '403':
          description: ''
        '500':
          description: Failed to determine project upgrade eligibility
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/upgrade/status:
    get:
      operationId: v1-get-postgres-upgrade-status
      summary: '[Beta] Gets the latest status of the project''s upgrade'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: tracking_id
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatabaseUpgradeStatusResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project upgrade status
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/readonly:
    get:
      operationId: v1-get-readonly-mode-status
      summary: Returns project's readonly mode status
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadOnlyStatusResponse'
        '500':
          description: Failed to get project readonly mode status
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/readonly/temporary-disable:
    post:
      operationId: v1-disable-readonly-mode-temporarily
      summary: Disables project's readonly mode for the next 15 minutes
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '201':
          description: ''
        '500':
          description: Failed to disable project's readonly mode
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/read-replicas/setup:
    post:
      operationId: v1-setup-a-read-replica
      summary: '[Beta] Set up a read replica'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetUpReadReplicaBody'
      responses:
        '201':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to set up read replica
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/read-replicas/remove:
    post:
      operationId: v1-remove-a-read-replica
      summary: '[Beta] Remove a read replica'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveReadReplicaBody'
      responses:
        '201':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to remove read replica
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/health:
    get:
      operationId: v1-get-services-health
      summary: Gets project's service health status
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: timeout_ms
          required: false
          in: query
          schema:
            minimum: 0
            maximum: 10000
            type: integer
        - name: services
          required: true
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - auth
                - db
                - pooler
                - realtime
                - rest
                - storage
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/V1ServiceHealthResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's service health status
      tags:
        - Projects
      security:
        - bearer: []
  /v1/projects/{ref}/config/storage:
    get:
      operationId: v1-get-storage-config
      summary: Gets project's storage config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's storage config
      tags:
        - Storage
      security:
        - bearer: []
    patch:
      operationId: v1-update-storage-config
      summary: Updates project's storage config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateStorageConfigBody'
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to update project's storage config
      tags:
        - Storage
      security:
        - bearer: []
  /v1/projects/{ref}/config/database/postgres:
    get:
      operationId: v1-get-postgres-config
      summary: Gets project's Postgres config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostgresConfigResponse'
        '500':
          description: Failed to retrieve project's Postgres config
      tags:
        - Database
      security:
        - bearer: []
    put:
      operationId: v1-update-postgres-config
      summary: Updates project's Postgres config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePostgresConfigBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostgresConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's Postgres config
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/config/database/pgbouncer:
    get:
      operationId: v1-get-project-pgbouncer-config
      summary: Get project's pgbouncer config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1PgbouncerConfigResponse'
        '500':
          description: Failed to retrieve project's pgbouncer config
      tags:
        - Database
  /v1/projects/{ref}/config/database/pooler:
    get:
      operationId: v1-get-supavisor-config
      summary: Gets project's supavisor config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SupavisorConfigResponse'
        '500':
          description: Failed to retrieve project's supavisor config
      tags:
        - Database
      security:
        - bearer: []
    patch:
      operationId: v1-update-supavisor-config
      summary: Updates project's supavisor config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSupavisorConfigBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateSupavisorConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's supavisor config
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/config/auth:
    get:
      operationId: v1-get-auth-service-config
      summary: Gets project's auth config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's auth config
      tags:
        - Auth
      security:
        - bearer: []
    patch:
      operationId: v1-update-auth-service-config
      summary: Updates a project's auth config
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAuthConfigBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthConfigResponse'
        '403':
          description: ''
        '500':
          description: Failed to update project's auth config
      tags:
        - Auth
      security:
        - bearer: []
  /v1/projects/{ref}/config/auth/third-party-auth:
    post:
      operationId: createTPAForProject
      summary: Creates a new third-party auth integration
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateThirdPartyAuthBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThirdPartyAuth'
        '403':
          description: ''
      tags:
        - Auth
      security:
        - bearer: []
    get:
      operationId: listTPAForProject
      summary: '[Alpha] Lists all third-party auth integrations'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ThirdPartyAuth'
        '403':
          description: ''
      tags:
        - Auth
      security:
        - bearer: []
  /v1/projects/{ref}/config/auth/third-party-auth/{tpa_id}:
    delete:
      operationId: deleteTPAForProject
      summary: '[Alpha] Removes a third-party auth integration'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: tpa_id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThirdPartyAuth'
        '403':
          description: ''
      tags:
        - Auth
      security:
        - bearer: []
    get:
      operationId: getTPAForProject
      summary: '[Alpha] Get a third-party integration'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: tpa_id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThirdPartyAuth'
        '403':
          description: ''
      tags:
        - Auth
      security:
        - bearer: []
  /v1/projects/{ref}/database/query:
    post:
      operationId: v1-run-a-query
      summary: '[Beta] Run sql query'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1RunQueryBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                type: object
        '403':
          description: ''
        '500':
          description: Failed to run sql query
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/database/webhooks/enable:
    post:
      operationId: v1-enable-database-webhook
      summary: '[Beta] Enables Database Webhooks on the project'
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '201':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to enable Database Webhooks on the project
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/functions:
    post:
      operationId: v1-create-a-function
      summary: Create a function
      description: Creates a function and adds it to the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: slug
          required: false
          in: query
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
        - name: name
          required: false
          in: query
          schema:
            type: string
        - name: verify_jwt
          required: false
          in: query
          schema:
            type: boolean
        - name: import_map
          required: false
          in: query
          schema:
            type: boolean
        - name: entrypoint_path
          required: false
          in: query
          schema:
            type: string
        - name: import_map_path
          required: false
          in: query
          schema:
            type: string
        - name: compute_multiplier
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 4
            type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1CreateFunctionBody'
          application/vnd.denoland.eszip:
            schema:
              $ref: '#/components/schemas/V1CreateFunctionBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FunctionResponse'
        '403':
          description: ''
        '500':
          description: Failed to create project's function
      tags:
        - Edge Functions
      security:
        - bearer: []
    get:
      operationId: v1-list-all-functions
      summary: List all functions
      description: Returns all functions you've previously added to the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FunctionResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve project's functions
      tags:
        - Edge Functions
      security:
        - bearer: []
  /v1/projects/{ref}/functions/{function_slug}:
    get:
      operationId: v1-get-a-function
      summary: Retrieve a function
      description: Retrieves a function with the specified slug and project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: function_slug
          required: true
          in: path
          description: Function slug
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FunctionSlugResponse'
        '403':
          description: ''
        '500':
          description: Failed to retrieve function with given slug
      tags:
        - Edge Functions
      security:
        - bearer: []
    patch:
      operationId: v1-update-a-function
      summary: Update a function
      description: Updates a function with the specified slug and project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: function_slug
          required: true
          in: path
          description: Function slug
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
        - name: slug
          required: false
          in: query
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
        - name: name
          required: false
          in: query
          schema:
            type: string
        - name: verify_jwt
          required: false
          in: query
          schema:
            type: boolean
        - name: import_map
          required: false
          in: query
          schema:
            type: boolean
        - name: entrypoint_path
          required: false
          in: query
          schema:
            type: string
        - name: import_map_path
          required: false
          in: query
          schema:
            type: string
        - name: compute_multiplier
          required: false
          in: query
          schema:
            minimum: 1
            maximum: 4
            type: number
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1UpdateFunctionBody'
          application/vnd.denoland.eszip:
            schema:
              $ref: '#/components/schemas/V1UpdateFunctionBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FunctionResponse'
        '403':
          description: ''
        '500':
          description: Failed to update function with given slug
      tags:
        - Edge Functions
      security:
        - bearer: []
    delete:
      operationId: v1-delete-a-function
      summary: Delete a function
      description: Deletes a function with the specified slug from the specified project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: function_slug
          required: true
          in: path
          description: Function slug
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to delete function with given slug
      tags:
        - Edge Functions
      security:
        - bearer: []
  /v1/projects/{ref}/functions/{function_slug}/body:
    get:
      operationId: v1-get-a-function-body
      summary: Retrieve a function body
      description: Retrieves a function body for the specified slug and project.
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: function_slug
          required: true
          in: path
          description: Function slug
          schema:
            pattern: /^[A-Za-z0-9_-]+$/
            type: string
      responses:
        '200':
          description: ''
        '403':
          description: ''
        '500':
          description: Failed to retrieve function body with given slug
      tags:
        - Edge Functions
      security:
        - bearer: []
  /v1/projects/{ref}/storage/buckets:
    get:
      operationId: v1-list-all-buckets
      summary: Lists all buckets
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/V1StorageBucketResponse'
        '403':
          description: ''
        '500':
          description: Failed to get list of buckets
      tags:
        - Storage
      security:
        - bearer: []
  /v1/projects/{ref}/config/auth/sso/providers:
    post:
      operationId: v1-create-a-sso-provider
      summary: Creates a new SSO provider
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProviderBody'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProviderResponse'
        '403':
          description: ''
        '404':
          description: SAML 2.0 support is not enabled for this project
      tags:
        - Auth
      security:
        - bearer: []
    get:
      operationId: v1-list-all-sso-provider
      summary: Lists all SSO providers
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProvidersResponse'
        '403':
          description: ''
        '404':
          description: SAML 2.0 support is not enabled for this project
      tags:
        - Auth
      security:
        - bearer: []
  /v1/projects/{ref}/config/auth/sso/providers/{provider_id}:
    get:
      operationId: v1-get-a-sso-provider
      summary: Gets a SSO provider by its UUID
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: provider_id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProviderResponse'
        '403':
          description: ''
        '404':
          description: >-
            Either SAML 2.0 was not enabled for this project, or the provider
            does not exist
      tags:
        - Auth
      security:
        - bearer: []
    put:
      operationId: v1-update-a-sso-provider
      summary: Updates a SSO provider by its UUID
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: provider_id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProviderBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateProviderResponse'
        '403':
          description: ''
        '404':
          description: >-
            Either SAML 2.0 was not enabled for this project, or the provider
            does not exist
      tags:
        - Auth
      security:
        - bearer: []
    delete:
      operationId: v1-delete-a-sso-provider
      summary: Removes a SSO provider by its UUID
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
        - name: provider_id
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteProviderResponse'
        '403':
          description: ''
        '404':
          description: >-
            Either SAML 2.0 was not enabled for this project, or the provider
            does not exist
      tags:
        - Auth
      security:
        - bearer: []
  /v1/projects/{ref}/database/backups:
    get:
      operationId: v1-list-all-backups
      summary: Lists all backups
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1BackupsResponse'
        '500':
          description: Failed to get backups
      tags:
        - Database
      security:
        - bearer: []
  /v1/projects/{ref}/database/backups/restore-pitr:
    post:
      operationId: v1-restore-pitr-backup
      summary: Restores a PITR backup for a database
      parameters:
        - name: ref
          required: true
          in: path
          description: Project ref
          schema:
            minLength: 20
            maxLength: 20
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V1RestorePitrBody'
      responses:
        '201':
          description: ''
      tags:
        - Database
      security:
        - bearer: []
  /v1/organizations/{slug}/members:
    get:
      operationId: v1-list-organization-members
      summary: List members of an organization
      parameters:
        - name: slug
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/V1OrganizationMemberResponse'
      tags:
        - Organizations
      security:
        - bearer: []
  /v1/organizations/{slug}:
    get:
      operationId: v1-get-an-organization
      summary: Gets information about the organization
      parameters:
        - name: slug
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1OrganizationSlugResponse'
      tags:
        - Organizations
      security:
        - bearer: []
info:
  title: Supabase API (v1)
  description: >-
    Supabase API generated from the OpenAPI specification.<br>Visit
    [https://supabase.com/docs](https://supabase.com/docs) for a complete
    documentation.
  version: 1.0.0
  contact: {}
tags:
  - name: Auth
    description: Auth related endpoints
  - name: Database
    description: Database related endpoints
  - name: Domains
    description: Domains related endpoints
  - name: Edge Functions
    description: Edge related endpoints
  - name: Environments
    description: Environments related endpoints
  - name: OAuth
    description: OAuth related endpoints
  - name: Organizations
    description: Organizations related endpoints
  - name: Projects
    description: Projects related endpoints
  - name: Rest
    description: Rest related endpoints
  - name: Secrets
    description: Secrets related endpoints
  - name: Storage
    description: Storage related endpoints
servers: []
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
  schemas:
    BranchDetailResponse:
      type: object
      properties:
        db_port:
          type: integer
        ref:
          type: string
        postgres_version:
          type: string
        postgres_engine:
          type: string
        release_channel:
          type: string
        status:
          enum:
            - ACTIVE_HEALTHY
            - ACTIVE_UNHEALTHY
            - COMING_UP
            - GOING_DOWN
            - INACTIVE
            - INIT_FAILED
            - REMOVED
            - RESTARTING
            - UNKNOWN
            - UPGRADING
            - PAUSING
            - RESTORING
            - RESTORE_FAILED
            - PAUSE_FAILED
            - RESIZING
          type: string
        db_host:
          type: string
        db_user:
          type: string
        db_pass:
          type: string
        jwt_secret:
          type: string
      required:
        - db_port
        - ref
        - postgres_version
        - postgres_engine
        - release_channel
        - status
        - db_host
    UpdateBranchBody:
      type: object
      properties:
        branch_name:
          type: string
        git_branch:
          type: string
        reset_on_push:
          type: boolean
        persistent:
          type: boolean
        status:
          enum:
            - CREATING_PROJECT
            - RUNNING_MIGRATIONS
            - MIGRATIONS_PASSED
            - MIGRATIONS_FAILED
            - FUNCTIONS_DEPLOYED
            - FUNCTIONS_FAILED
          type: string
    BranchResponse:
      type: object
      properties:
        pr_number:
          type: integer
          format: int32
        latest_check_run_id:
          type: integer
          format: int64
        id:
          type: string
        name:
          type: string
        project_ref:
          type: string
        parent_project_ref:
          type: string
        is_default:
          type: boolean
        git_branch:
          type: string
        reset_on_push:
          type: boolean
        persistent:
          type: boolean
        status:
          enum:
            - CREATING_PROJECT
            - RUNNING_MIGRATIONS
            - MIGRATIONS_PASSED
            - MIGRATIONS_FAILED
            - FUNCTIONS_DEPLOYED
            - FUNCTIONS_FAILED
          type: string
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
        - name
        - project_ref
        - parent_project_ref
        - is_default
        - reset_on_push
        - persistent
        - status
        - created_at
        - updated_at
    BranchDeleteResponse:
      type: object
      properties:
        message:
          type: string
      required:
        - message
    BranchResetResponse:
      type: object
      properties:
        workflow_run_id:
          type: string
        message:
          type: string
      required:
        - workflow_run_id
        - message
    V1DatabaseResponse:
      type: object
      properties:
        host:
          type: string
          description: Database host
        version:
          type: string
          description: Database version
        postgres_engine:
          type: string
          description: Database engine
        release_channel:
          type: string
          description: Release channel
      required:
        - host
        - version
        - postgres_engine
        - release_channel
    V1ProjectWithDatabaseResponse:
      type: object
      properties:
        id:
          type: string
          description: Id of your project
        organization_id:
          type: string
          description: Slug of your organization
        name:
          type: string
          description: Name of your project
        region:
          type: string
          description: Region of your project
          example: us-east-1
        created_at:
          type: string
          description: Creation timestamp
          example: '2023-03-29T16:32:59Z'
        database:
          $ref: '#/components/schemas/V1DatabaseResponse'
        status:
          enum:
            - ACTIVE_HEALTHY
            - ACTIVE_UNHEALTHY
            - COMING_UP
            - GOING_DOWN
            - INACTIVE
            - INIT_FAILED
            - REMOVED
            - RESTARTING
            - UNKNOWN
            - UPGRADING
            - PAUSING
            - RESTORING
            - RESTORE_FAILED
            - PAUSE_FAILED
            - RESIZING
          type: string
      required:
        - id
        - organization_id
        - name
        - region
        - created_at
        - database
        - status
    V1CreateProjectBodyDto:
      type: object
      properties:
        db_pass:
          type: string
          description: Database password
        name:
          type: string
          description: Name of your project, should not contain dots
        organization_id:
          type: string
          description: Slug of your organization
        plan:
          type: string
          enum:
            - free
            - pro
          deprecated: true
          description: >-
            Subscription Plan is now set on organization level and is ignored in
            this request
        region:
          type: string
          description: Region you want your server to reside in
          enum:
            - us-east-1
            - us-east-2
            - us-west-1
            - us-west-2
            - ap-east-1
            - ap-southeast-1
            - ap-northeast-1
            - ap-northeast-2
            - ap-southeast-2
            - eu-west-1
            - eu-west-2
            - eu-west-3
            - eu-north-1
            - eu-central-1
            - eu-central-2
            - ca-central-1
            - ap-south-1
            - sa-east-1
        kps_enabled:
          type: boolean
          deprecated: true
          description: This field is deprecated and is ignored in this request
        desired_instance_size:
          type: string
          enum:
            - micro
            - small
            - medium
            - large
            - xlarge
            - 2xlarge
            - 4xlarge
            - 8xlarge
            - 12xlarge
            - 16xlarge
        template_url:
          type: string
          format: uri
          description: Template URL used to create the project from the CLI.
          example: >-
            https://github.com/supabase/supabase/tree/master/examples/slack-clone/nextjs-slack-clone
        release_channel:
          type: string
          enum:
            - internal
            - alpha
            - beta
            - ga
            - withdrawn
          description: Release channel. If not provided, GA will be used.
        postgres_engine:
          type: string
          enum:
            - '15'
          description: >-
            Postgres engine version. If not provided, the latest version will be
            used.
      required:
        - db_pass
        - name
        - organization_id
        - region
      additionalProperties: false
    V1ProjectResponse:
      type: object
      properties:
        id:
          type: string
          description: Id of your project
        organization_id:
          type: string
          description: Slug of your organization
        name:
          type: string
          description: Name of your project
        region:
          type: string
          description: Region of your project
          example: us-east-1
        created_at:
          type: string
          description: Creation timestamp
          example: '2023-03-29T16:32:59Z'
        status:
          enum:
            - ACTIVE_HEALTHY
            - ACTIVE_UNHEALTHY
            - COMING_UP
            - GOING_DOWN
            - INACTIVE
            - INIT_FAILED
            - REMOVED
            - RESTARTING
            - UNKNOWN
            - UPGRADING
            - PAUSING
            - RESTORING
            - RESTORE_FAILED
            - PAUSE_FAILED
            - RESIZING
          type: string
      required:
        - id
        - organization_id
        - name
        - region
        - created_at
        - status
    OrganizationResponseV1:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    CreateOrganizationV1Dto:
      type: object
      properties:
        name:
          type: string
      required:
        - name
      additionalProperties: false
    OAuthTokenBody:
      type: object
      properties:
        grant_type:
          enum:
            - authorization_code
            - refresh_token
          type: string
        client_id:
          type: string
        client_secret:
          type: string
        code:
          type: string
        code_verifier:
          type: string
        redirect_uri:
          type: string
        refresh_token:
          type: string
      required:
        - grant_type
        - client_id
        - client_secret
    OAuthTokenResponse:
      type: object
      properties:
        expires_in:
          type: integer
          format: int64
        token_type:
          type: string
          enum:
            - Bearer
        access_token:
          type: string
        refresh_token:
          type: string
      required:
        - expires_in
        - token_type
        - access_token
        - refresh_token
    SnippetProject:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      required:
        - id
        - name
    SnippetUser:
      type: object
      properties:
        id:
          type: integer
          format: int64
        username:
          type: string
      required:
        - id
        - username
    SnippetMeta:
      type: object
      properties:
        id:
          type: string
        inserted_at:
          type: string
        updated_at:
          type: string
        type:
          type: string
          enum:
            - sql
        visibility:
          type: string
          enum:
            - user
            - project
            - org
            - public
        name:
          type: string
        description:
          type: string
        project:
          $ref: '#/components/schemas/SnippetProject'
        owner:
          $ref: '#/components/schemas/SnippetUser'
        updated_by:
          $ref: '#/components/schemas/SnippetUser'
      required:
        - id
        - inserted_at
        - updated_at
        - type
        - visibility
        - name
        - project
        - owner
        - updated_by
    SnippetList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SnippetMeta'
      required:
        - data
    SnippetContent:
      type: object
      properties:
        favorite:
          type: boolean
        schema_version:
          type: string
        sql:
          type: string
      required:
        - favorite
        - schema_version
        - sql
    SnippetResponse:
      type: object
      properties:
        id:
          type: string
        inserted_at:
          type: string
        updated_at:
          type: string
        type:
          type: string
          enum:
            - sql
        visibility:
          enum:
            - user
            - project
            - org
            - public
          type: string
        name:
          type: string
        description:
          type: string
        project:
          $ref: '#/components/schemas/SnippetProject'
        owner:
          $ref: '#/components/schemas/SnippetUser'
        updated_by:
          $ref: '#/components/schemas/SnippetUser'
        content:
          $ref: '#/components/schemas/SnippetContent'
      required:
        - id
        - inserted_at
        - updated_at
        - type
        - visibility
        - name
        - project
        - owner
        - updated_by
        - content
    ApiKeySecretJWTTemplate:
      type: object
      properties:
        role:
          type: string
      required:
        - role
    ApiKeyResponse:
      type: object
      properties:
        type:
          nullable: true
          type: string
          enum:
            - publishable
            - secret
            - legacy
        name:
          type: string
        api_key:
          type: string
        id:
          type: string
          nullable: true
        prefix:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        hash:
          type: string
          nullable: true
        secret_jwt_template:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ApiKeySecretJWTTemplate'
        inserted_at:
          type: string
          nullable: true
        updated_at:
          type: string
          nullable: true
      required:
        - name
        - api_key
    CreateApiKeyBody:
      type: object
      properties:
        type:
          enum:
            - publishable
            - secret
          type: string
        description:
          type: string
          nullable: true
        secret_jwt_template:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ApiKeySecretJWTTemplate'
      required:
        - type
    UpdateApiKeyBody:
      type: object
      properties:
        description:
          type: string
          nullable: true
        secret_jwt_template:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ApiKeySecretJWTTemplate'
    DesiredInstanceSize:
      type: string
      enum:
        - micro
        - small
        - medium
        - large
        - xlarge
        - 2xlarge
        - 4xlarge
        - 8xlarge
        - 12xlarge
        - 16xlarge
    ReleaseChannel:
      type: string
      enum:
        - internal
        - alpha
        - beta
        - ga
        - withdrawn
    PostgresEngine:
      type: string
      description: >-
        Postgres engine version. If not provided, the latest version will be
        used.
      enum:
        - '15'
    CreateBranchBody:
      type: object
      properties:
        desired_instance_size:
          $ref: '#/components/schemas/DesiredInstanceSize'
        release_channel:
          $ref: '#/components/schemas/ReleaseChannel'
        postgres_engine:
          $ref: '#/components/schemas/PostgresEngine'
        branch_name:
          type: string
        git_branch:
          type: string
        persistent:
          type: boolean
        region:
          type: string
      required:
        - branch_name
    ValidationRecord:
      type: object
      properties:
        txt_name:
          type: string
        txt_value:
          type: string
      required:
        - txt_name
        - txt_value
    ValidationError:
      type: object
      properties:
        message:
          type: string
      required:
        - message
    SslValidation:
      type: object
      properties:
        status:
          type: string
        validation_records:
          type: array
          items:
            $ref: '#/components/schemas/ValidationRecord'
        validation_errors:
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      required:
        - status
        - validation_records
    OwnershipVerification:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        value:
          type: string
      required:
        - type
        - name
        - value
    CustomHostnameDetails:
      type: object
      properties:
        id:
          type: string
        hostname:
          type: string
        ssl:
          $ref: '#/components/schemas/SslValidation'
        ownership_verification:
          $ref: '#/components/schemas/OwnershipVerification'
        custom_origin_server:
          type: string
        verification_errors:
          type: array
          items:
            type: string
        status:
          type: string
      required:
        - id
        - hostname
        - ssl
        - ownership_verification
        - custom_origin_server
        - status
    CfResponse:
      type: object
      properties:
        success:
          type: boolean
        errors:
          type: array
          items:
            type: object
        messages:
          type: array
          items:
            type: object
        result:
          $ref: '#/components/schemas/CustomHostnameDetails'
      required:
        - success
        - errors
        - messages
        - result
    UpdateCustomHostnameResponse:
      type: object
      properties:
        status:
          enum:
            - 1_not_started
            - 2_initiated
            - 3_challenge_verified
            - 4_origin_setup_completed
            - 5_services_reconfigured
          type: string
        custom_hostname:
          type: string
        data:
          $ref: '#/components/schemas/CfResponse'
      required:
        - status
        - custom_hostname
        - data
    UpdateCustomHostnameBody:
      type: object
      properties:
        custom_hostname:
          type: string
      required:
        - custom_hostname
    NetworkBanResponse:
      type: object
      properties:
        banned_ipv4_addresses:
          type: array
          items:
            type: string
      required:
        - banned_ipv4_addresses
    RemoveNetworkBanRequest:
      type: object
      properties:
        ipv4_addresses:
          type: array
          items:
            type: string
      required:
        - ipv4_addresses
    NetworkRestrictionsRequest:
      type: object
      properties:
        dbAllowedCidrs:
          type: array
          items:
            type: string
        dbAllowedCidrsV6:
          type: array
          items:
            type: string
    NetworkRestrictionsResponse:
      type: object
      properties:
        entitlement:
          enum:
            - disallowed
            - allowed
          type: string
        config:
          $ref: '#/components/schemas/NetworkRestrictionsRequest'
        old_config:
          $ref: '#/components/schemas/NetworkRestrictionsRequest'
        status:
          enum:
            - stored
            - applied
          type: string
      required:
        - entitlement
        - config
        - status
    PgsodiumConfigResponse:
      type: object
      properties:
        root_key:
          type: string
      required:
        - root_key
    UpdatePgsodiumConfigBody:
      type: object
      properties:
        root_key:
          type: string
      required:
        - root_key
    PostgrestConfigWithJWTSecretResponse:
      type: object
      properties:
        max_rows:
          type: integer
        db_pool:
          type: integer
          nullable: true
          description: >-
            If `null`, the value is automatically configured based on compute
            size.
        db_schema:
          type: string
        db_extra_search_path:
          type: string
        jwt_secret:
          type: string
      required:
        - max_rows
        - db_pool
        - db_schema
        - db_extra_search_path
    UpdatePostgrestConfigBody:
      type: object
      properties:
        max_rows:
          type: integer
          minimum: 0
          maximum: 1000000
        db_pool:
          type: integer
          minimum: 0
          maximum: 1000
        db_extra_search_path:
          type: string
        db_schema:
          type: string
    V1PostgrestConfigResponse:
      type: object
      properties:
        max_rows:
          type: integer
        db_pool:
          type: integer
          nullable: true
          description: >-
            If `null`, the value is automatically configured based on compute
            size.
        db_schema:
          type: string
        db_extra_search_path:
          type: string
      required:
        - max_rows
        - db_pool
        - db_schema
        - db_extra_search_path
    V1ProjectRefResponse:
      type: object
      properties:
        id:
          type: integer
          format: int64
        ref:
          type: string
        name:
          type: string
      required:
        - id
        - ref
        - name
    SecretResponse:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
      required:
        - name
        - value
    CreateSecretBody:
      type: object
      properties:
        name:
          type: string
          maxLength: 256
          pattern: /^(?!SUPABASE_).*/
          description: Secret name must not start with the SUPABASE_ prefix.
          example: string
        value:
          type: string
          maxLength: 24576
      required:
        - name
        - value
    SslEnforcements:
      type: object
      properties:
        database:
          type: boolean
      required:
        - database
    SslEnforcementResponse:
      type: object
      properties:
        currentConfig:
          $ref: '#/components/schemas/SslEnforcements'
        appliedSuccessfully:
          type: boolean
      required:
        - currentConfig
        - appliedSuccessfully
    SslEnforcementRequest:
      type: object
      properties:
        requestedConfig:
          $ref: '#/components/schemas/SslEnforcements'
      required:
        - requestedConfig
    TypescriptResponse:
      type: object
      properties:
        types:
          type: string
      required:
        - types
    VanitySubdomainConfigResponse:
      type: object
      properties:
        status:
          enum:
            - not-used
            - custom-domain-used
            - active
          type: string
        custom_domain:
          type: string
      required:
        - status
    VanitySubdomainBody:
      type: object
      properties:
        vanity_subdomain:
          type: string
      required:
        - vanity_subdomain
    SubdomainAvailabilityResponse:
      type: object
      properties:
        available:
          type: boolean
      required:
        - available
    ActivateVanitySubdomainResponse:
      type: object
      properties:
        custom_domain:
          type: string
      required:
        - custom_domain
    UpgradeDatabaseBody:
      type: object
      properties:
        release_channel:
          $ref: '#/components/schemas/ReleaseChannel'
        target_version:
          type: string
      required:
        - release_channel
        - target_version
    ProjectUpgradeInitiateResponse:
      type: object
      properties:
        tracking_id:
          type: string
      required:
        - tracking_id
    ProjectVersion:
      type: object
      properties:
        postgres_version:
          $ref: '#/components/schemas/PostgresEngine'
        release_channel:
          $ref: '#/components/schemas/ReleaseChannel'
        app_version:
          type: string
      required:
        - postgres_version
        - release_channel
        - app_version
    ProjectUpgradeEligibilityResponse:
      type: object
      properties:
        current_app_version_release_channel:
          $ref: '#/components/schemas/ReleaseChannel'
        duration_estimate_hours:
          type: integer
        eligible:
          type: boolean
        current_app_version:
          type: string
        latest_app_version:
          type: string
        target_upgrade_versions:
          type: array
          items:
            $ref: '#/components/schemas/ProjectVersion'
        potential_breaking_changes:
          type: array
          items:
            type: string
        legacy_auth_custom_roles:
          type: array
          items:
            type: string
        extension_dependent_objects:
          type: array
          items:
            type: string
      required:
        - current_app_version_release_channel
        - duration_estimate_hours
        - eligible
        - current_app_version
        - latest_app_version
        - target_upgrade_versions
        - potential_breaking_changes
        - legacy_auth_custom_roles
        - extension_dependent_objects
    DatabaseUpgradeStatus:
      type: object
      properties:
        target_version:
          type: integer
        status:
          enum:
            - 0
            - 1
            - 2
          type: integer
        initiated_at:
          type: string
        latest_status_at:
          type: string
        error:
          type: string
          enum:
            - 1_upgraded_instance_launch_failed
            - 2_volume_detachchment_from_upgraded_instance_failed
            - 3_volume_attachment_to_original_instance_failed
            - 4_data_upgrade_initiation_failed
            - 5_data_upgrade_completion_failed
            - 6_volume_detachchment_from_original_instance_failed
            - 7_volume_attachment_to_upgraded_instance_failed
            - 8_upgrade_completion_failed
            - 9_post_physical_backup_failed
        progress:
          type: string
          enum:
            - 0_requested
            - 1_started
            - 2_launched_upgraded_instance
            - 3_detached_volume_from_upgraded_instance
            - 4_attached_volume_to_original_instance
            - 5_initiated_data_upgrade
            - 6_completed_data_upgrade
            - 7_detached_volume_from_original_instance
            - 8_attached_volume_to_upgraded_instance
            - 9_completed_upgrade
            - 10_completed_post_physical_backup
      required:
        - target_version
        - status
        - initiated_at
        - latest_status_at
    DatabaseUpgradeStatusResponse:
      type: object
      properties:
        databaseUpgradeStatus:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/DatabaseUpgradeStatus'
      required:
        - databaseUpgradeStatus
    ReadOnlyStatusResponse:
      type: object
      properties:
        enabled:
          type: boolean
        override_enabled:
          type: boolean
        override_active_until:
          type: string
      required:
        - enabled
        - override_enabled
        - override_active_until
    SetUpReadReplicaBody:
      type: object
      properties:
        read_replica_region:
          type: string
          enum:
            - us-east-1
            - us-east-2
            - us-west-1
            - us-west-2
            - ap-east-1
            - ap-southeast-1
            - ap-northeast-1
            - ap-northeast-2
            - ap-southeast-2
            - eu-west-1
            - eu-west-2
            - eu-west-3
            - eu-north-1
            - eu-central-1
            - eu-central-2
            - ca-central-1
            - ap-south-1
            - sa-east-1
          description: Region you want your read replica to reside in
          example: us-east-1
      required:
        - read_replica_region
    RemoveReadReplicaBody:
      type: object
      properties:
        database_identifier:
          type: string
      required:
        - database_identifier
    AuthHealthResponse:
      type: object
      properties:
        name:
          type: string
          enum:
            - GoTrue
      required:
        - name
    RealtimeHealthResponse:
      type: object
      properties:
        connected_cluster:
          type: integer
      required:
        - connected_cluster
    V1ServiceHealthResponse:
      type: object
      properties:
        info:
          oneOf:
            - $ref: '#/components/schemas/AuthHealthResponse'
            - $ref: '#/components/schemas/RealtimeHealthResponse'
        name:
          enum:
            - auth
            - db
            - pooler
            - realtime
            - rest
            - storage
          type: string
        healthy:
          type: boolean
        status:
          enum:
            - COMING_UP
            - ACTIVE_HEALTHY
            - UNHEALTHY
          type: string
        error:
          type: string
      required:
        - name
        - healthy
        - status
    StorageFeatureImageTransformation:
      type: object
      properties:
        enabled:
          type: boolean
      required:
        - enabled
    StorageFeatures:
      type: object
      properties:
        imageTransformation:
          $ref: '#/components/schemas/StorageFeatureImageTransformation'
      required:
        - imageTransformation
    StorageConfigResponse:
      type: object
      properties:
        fileSizeLimit:
          type: integer
          format: int64
        features:
          $ref: '#/components/schemas/StorageFeatures'
      required:
        - fileSizeLimit
        - features
    UpdateStorageConfigBody:
      type: object
      properties:
        fileSizeLimit:
          type: integer
          minimum: 0
          maximum: 53687091200
          format: int64
        features:
          $ref: '#/components/schemas/StorageFeatures'
    PostgresConfigResponse:
      type: object
      properties:
        effective_cache_size:
          type: string
        logical_decoding_work_mem:
          type: string
        maintenance_work_mem:
          type: string
        max_connections:
          type: integer
          minimum: 1
          maximum: 262143
        max_locks_per_transaction:
          type: integer
          minimum: 10
          maximum: 2147483640
        max_parallel_maintenance_workers:
          type: integer
          minimum: 0
          maximum: 1024
        max_parallel_workers:
          type: integer
          minimum: 0
          maximum: 1024
        max_parallel_workers_per_gather:
          type: integer
          minimum: 0
          maximum: 1024
        max_replication_slots:
          type: integer
        max_slot_wal_keep_size:
          type: string
        max_standby_archive_delay:
          type: string
        max_standby_streaming_delay:
          type: string
        max_wal_size:
          type: string
        max_wal_senders:
          type: integer
        max_worker_processes:
          type: integer
          minimum: 0
          maximum: 262143
        shared_buffers:
          type: string
        statement_timeout:
          type: string
        track_commit_timestamp:
          type: boolean
        wal_keep_size:
          type: string
        wal_sender_timeout:
          type: string
        work_mem:
          type: string
        session_replication_role:
          enum:
            - origin
            - replica
            - local
          type: string
    UpdatePostgresConfigBody:
      type: object
      properties:
        effective_cache_size:
          type: string
        logical_decoding_work_mem:
          type: string
        maintenance_work_mem:
          type: string
        max_connections:
          type: integer
          minimum: 1
          maximum: 262143
        max_locks_per_transaction:
          type: integer
          minimum: 10
          maximum: 2147483640
        max_parallel_maintenance_workers:
          type: integer
          minimum: 0
          maximum: 1024
        max_parallel_workers:
          type: integer
          minimum: 0
          maximum: 1024
        max_parallel_workers_per_gather:
          type: integer
          minimum: 0
          maximum: 1024
        max_replication_slots:
          type: integer
        max_slot_wal_keep_size:
          type: string
        max_standby_archive_delay:
          type: string
        max_standby_streaming_delay:
          type: string
        max_wal_size:
          type: string
        max_wal_senders:
          type: integer
        max_worker_processes:
          type: integer
          minimum: 0
          maximum: 262143
        shared_buffers:
          type: string
        statement_timeout:
          type: string
        track_commit_timestamp:
          type: boolean
        wal_keep_size:
          type: string
        wal_sender_timeout:
          type: string
        work_mem:
          type: string
        restart_database:
          type: boolean
        session_replication_role:
          enum:
            - origin
            - replica
            - local
          type: string
    V1PgbouncerConfigResponse:
      type: object
      properties:
        pool_mode:
          type: string
          enum:
            - transaction
            - session
            - statement
        default_pool_size:
          type: number
        ignore_startup_parameters:
          type: string
        max_client_conn:
          type: number
        connection_string:
          type: string
    SupavisorConfigResponse:
      type: object
      properties:
        db_port:
          type: integer
        default_pool_size:
          type: integer
          nullable: true
        max_client_conn:
          type: integer
          nullable: true
        identifier:
          type: string
        database_type:
          enum:
            - PRIMARY
            - READ_REPLICA
          type: string
        is_using_scram_auth:
          type: boolean
        db_user:
          type: string
        db_host:
          type: string
        db_name:
          type: string
        connectionString:
          type: string
        pool_mode:
          enum:
            - transaction
            - session
          type: string
      required:
        - db_port
        - default_pool_size
        - max_client_conn
        - identifier
        - database_type
        - is_using_scram_auth
        - db_user
        - db_host
        - db_name
        - connectionString
        - pool_mode
    UpdateSupavisorConfigBody:
      type: object
      properties:
        default_pool_size:
          type: integer
          nullable: true
          minimum: 0
          maximum: 1000
        pool_mode:
          enum:
            - transaction
            - session
          type: string
          deprecated: true
          description: This field is deprecated and is ignored in this request
    UpdateSupavisorConfigResponse:
      type: object
      properties:
        default_pool_size:
          type: integer
          nullable: true
        pool_mode:
          enum:
            - transaction
            - session
          type: string
      required:
        - default_pool_size
        - pool_mode
    AuthConfigResponse:
      type: object
      properties:
        api_max_request_duration:
          type: integer
          nullable: true
        db_max_pool_size:
          type: integer
          nullable: true
        jwt_exp:
          type: integer
          nullable: true
        mailer_otp_exp:
          type: integer
        mailer_otp_length:
          type: integer
          nullable: true
        mfa_max_enrolled_factors:
          type: integer
          nullable: true
        mfa_phone_otp_length:
          type: integer
        mfa_phone_max_frequency:
          type: integer
          nullable: true
        password_min_length:
          type: integer
          nullable: true
        rate_limit_anonymous_users:
          type: integer
          nullable: true
        rate_limit_email_sent:
          type: integer
          nullable: true
        rate_limit_sms_sent:
          type: integer
          nullable: true
        rate_limit_token_refresh:
          type: integer
          nullable: true
        rate_limit_verify:
          type: integer
          nullable: true
        rate_limit_otp:
          type: integer
          nullable: true
        security_refresh_token_reuse_interval:
          type: integer
          nullable: true
        sessions_inactivity_timeout:
          type: integer
          nullable: true
        sessions_timebox:
          type: integer
          nullable: true
        sms_max_frequency:
          type: integer
          nullable: true
        sms_otp_exp:
          type: integer
          nullable: true
        sms_otp_length:
          type: integer
        smtp_max_frequency:
          type: integer
          nullable: true
        disable_signup:
          type: boolean
          nullable: true
        external_anonymous_users_enabled:
          type: boolean
          nullable: true
        external_apple_additional_client_ids:
          type: string
          nullable: true
        external_apple_client_id:
          type: string
          nullable: true
        external_apple_enabled:
          type: boolean
          nullable: true
        external_apple_secret:
          type: string
          nullable: true
        external_azure_client_id:
          type: string
          nullable: true
        external_azure_enabled:
          type: boolean
          nullable: true
        external_azure_secret:
          type: string
          nullable: true
        external_azure_url:
          type: string
          nullable: true
        external_bitbucket_client_id:
          type: string
          nullable: true
        external_bitbucket_enabled:
          type: boolean
          nullable: true
        external_bitbucket_secret:
          type: string
          nullable: true
        external_discord_client_id:
          type: string
          nullable: true
        external_discord_enabled:
          type: boolean
          nullable: true
        external_discord_secret:
          type: string
          nullable: true
        external_email_enabled:
          type: boolean
          nullable: true
        external_facebook_client_id:
          type: string
          nullable: true
        external_facebook_enabled:
          type: boolean
          nullable: true
        external_facebook_secret:
          type: string
          nullable: true
        external_figma_client_id:
          type: string
          nullable: true
        external_figma_enabled:
          type: boolean
          nullable: true
        external_figma_secret:
          type: string
          nullable: true
        external_github_client_id:
          type: string
          nullable: true
        external_github_enabled:
          type: boolean
          nullable: true
        external_github_secret:
          type: string
          nullable: true
        external_gitlab_client_id:
          type: string
          nullable: true
        external_gitlab_enabled:
          type: boolean
          nullable: true
        external_gitlab_secret:
          type: string
          nullable: true
        external_gitlab_url:
          type: string
          nullable: true
        external_google_additional_client_ids:
          type: string
          nullable: true
        external_google_client_id:
          type: string
          nullable: true
        external_google_enabled:
          type: boolean
          nullable: true
        external_google_secret:
          type: string
          nullable: true
        external_google_skip_nonce_check:
          type: boolean
          nullable: true
        external_kakao_client_id:
          type: string
          nullable: true
        external_kakao_enabled:
          type: boolean
          nullable: true
        external_kakao_secret:
          type: string
          nullable: true
        external_keycloak_client_id:
          type: string
          nullable: true
        external_keycloak_enabled:
          type: boolean
          nullable: true
        external_keycloak_secret:
          type: string
          nullable: true
        external_keycloak_url:
          type: string
          nullable: true
        external_linkedin_oidc_client_id:
          type: string
          nullable: true
        external_linkedin_oidc_enabled:
          type: boolean
          nullable: true
        external_linkedin_oidc_secret:
          type: string
          nullable: true
        external_slack_oidc_client_id:
          type: string
          nullable: true
        external_slack_oidc_enabled:
          type: boolean
          nullable: true
        external_slack_oidc_secret:
          type: string
          nullable: true
        external_notion_client_id:
          type: string
          nullable: true
        external_notion_enabled:
          type: boolean
          nullable: true
        external_notion_secret:
          type: string
          nullable: true
        external_phone_enabled:
          type: boolean
          nullable: true
        external_slack_client_id:
          type: string
          nullable: true
        external_slack_enabled:
          type: boolean
          nullable: true
        external_slack_secret:
          type: string
          nullable: true
        external_spotify_client_id:
          type: string
          nullable: true
        external_spotify_enabled:
          type: boolean
          nullable: true
        external_spotify_secret:
          type: string
          nullable: true
        external_twitch_client_id:
          type: string
          nullable: true
        external_twitch_enabled:
          type: boolean
          nullable: true
        external_twitch_secret:
          type: string
          nullable: true
        external_twitter_client_id:
          type: string
          nullable: true
        external_twitter_enabled:
          type: boolean
          nullable: true
        external_twitter_secret:
          type: string
          nullable: true
        external_workos_client_id:
          type: string
          nullable: true
        external_workos_enabled:
          type: boolean
          nullable: true
        external_workos_secret:
          type: string
          nullable: true
        external_workos_url:
          type: string
          nullable: true
        external_zoom_client_id:
          type: string
          nullable: true
        external_zoom_enabled:
          type: boolean
          nullable: true
        external_zoom_secret:
          type: string
          nullable: true
        hook_custom_access_token_enabled:
          type: boolean
          nullable: true
        hook_custom_access_token_uri:
          type: string
          nullable: true
        hook_custom_access_token_secrets:
          type: string
          nullable: true
        hook_mfa_verification_attempt_enabled:
          type: boolean
          nullable: true
        hook_mfa_verification_attempt_uri:
          type: string
          nullable: true
        hook_mfa_verification_attempt_secrets:
          type: string
          nullable: true
        hook_password_verification_attempt_enabled:
          type: boolean
          nullable: true
        hook_password_verification_attempt_uri:
          type: string
          nullable: true
        hook_password_verification_attempt_secrets:
          type: string
          nullable: true
        hook_send_sms_enabled:
          type: boolean
          nullable: true
        hook_send_sms_uri:
          type: string
          nullable: true
        hook_send_sms_secrets:
          type: string
          nullable: true
        hook_send_email_enabled:
          type: boolean
          nullable: true
        hook_send_email_uri:
          type: string
          nullable: true
        hook_send_email_secrets:
          type: string
          nullable: true
        mailer_allow_unverified_email_sign_ins:
          type: boolean
          nullable: true
        mailer_autoconfirm:
          type: boolean
          nullable: true
        mailer_secure_email_change_enabled:
          type: boolean
          nullable: true
        mailer_subjects_confirmation:
          type: string
          nullable: true
        mailer_subjects_email_change:
          type: string
          nullable: true
        mailer_subjects_invite:
          type: string
          nullable: true
        mailer_subjects_magic_link:
          type: string
          nullable: true
        mailer_subjects_reauthentication:
          type: string
          nullable: true
        mailer_subjects_recovery:
          type: string
          nullable: true
        mailer_templates_confirmation_content:
          type: string
          nullable: true
        mailer_templates_email_change_content:
          type: string
          nullable: true
        mailer_templates_invite_content:
          type: string
          nullable: true
        mailer_templates_magic_link_content:
          type: string
          nullable: true
        mailer_templates_reauthentication_content:
          type: string
          nullable: true
        mailer_templates_recovery_content:
          type: string
          nullable: true
        mfa_totp_enroll_enabled:
          type: boolean
          nullable: true
        mfa_totp_verify_enabled:
          type: boolean
          nullable: true
        mfa_phone_enroll_enabled:
          type: boolean
          nullable: true
        mfa_phone_verify_enabled:
          type: boolean
          nullable: true
        mfa_web_authn_enroll_enabled:
          type: boolean
          nullable: true
        mfa_web_authn_verify_enabled:
          type: boolean
          nullable: true
        mfa_phone_template:
          type: string
          nullable: true
        password_hibp_enabled:
          type: boolean
          nullable: true
        password_required_characters:
          type: string
          nullable: true
        refresh_token_rotation_enabled:
          type: boolean
          nullable: true
        saml_enabled:
          type: boolean
          nullable: true
        saml_external_url:
          type: string
          nullable: true
        saml_allow_encrypted_assertions:
          type: boolean
          nullable: true
        security_captcha_enabled:
          type: boolean
          nullable: true
        security_captcha_provider:
          type: string
          nullable: true
        security_captcha_secret:
          type: string
          nullable: true
        security_manual_linking_enabled:
          type: boolean
          nullable: true
        security_update_password_require_reauthentication:
          type: boolean
          nullable: true
        sessions_single_per_user:
          type: boolean
          nullable: true
        sessions_tags:
          type: string
          nullable: true
        site_url:
          type: string
          nullable: true
        sms_autoconfirm:
          type: boolean
          nullable: true
        sms_messagebird_access_key:
          type: string
          nullable: true
        sms_messagebird_originator:
          type: string
          nullable: true
        sms_provider:
          type: string
          nullable: true
        sms_template:
          type: string
          nullable: true
        sms_test_otp:
          type: string
          nullable: true
        sms_test_otp_valid_until:
          type: string
          nullable: true
        sms_textlocal_api_key:
          type: string
          nullable: true
        sms_textlocal_sender:
          type: string
          nullable: true
        sms_twilio_account_sid:
          type: string
          nullable: true
        sms_twilio_auth_token:
          type: string
          nullable: true
        sms_twilio_content_sid:
          type: string
          nullable: true
        sms_twilio_message_service_sid:
          type: string
          nullable: true
        sms_twilio_verify_account_sid:
          type: string
          nullable: true
        sms_twilio_verify_auth_token:
          type: string
          nullable: true
        sms_twilio_verify_message_service_sid:
          type: string
          nullable: true
        sms_vonage_api_key:
          type: string
          nullable: true
        sms_vonage_api_secret:
          type: string
          nullable: true
        sms_vonage_from:
          type: string
          nullable: true
        smtp_admin_email:
          type: string
          nullable: true
        smtp_host:
          type: string
          nullable: true
        smtp_pass:
          type: string
          nullable: true
        smtp_port:
          type: string
          nullable: true
        smtp_sender_name:
          type: string
          nullable: true
        smtp_user:
          type: string
          nullable: true
        uri_allow_list:
          type: string
          nullable: true
      required:
        - api_max_request_duration
        - db_max_pool_size
        - jwt_exp
        - mailer_otp_exp
        - mailer_otp_length
        - mfa_max_enrolled_factors
        - mfa_phone_otp_length
        - mfa_phone_max_frequency
        - password_min_length
        - rate_limit_anonymous_users
        - rate_limit_email_sent
        - rate_limit_sms_sent
        - rate_limit_token_refresh
        - rate_limit_verify
        - rate_limit_otp
        - security_refresh_token_reuse_interval
        - sessions_inactivity_timeout
        - sessions_timebox
        - sms_max_frequency
        - sms_otp_exp
        - sms_otp_length
        - smtp_max_frequency
        - disable_signup
        - external_anonymous_users_enabled
        - external_apple_additional_client_ids
        - external_apple_client_id
        - external_apple_enabled
        - external_apple_secret
        - external_azure_client_id
        - external_azure_enabled
        - external_azure_secret
        - external_azure_url
        - external_bitbucket_client_id
        - external_bitbucket_enabled
        - external_bitbucket_secret
        - external_discord_client_id
        - external_discord_enabled
        - external_discord_secret
        - external_email_enabled
        - external_facebook_client_id
        - external_facebook_enabled
        - external_facebook_secret
        - external_figma_client_id
        - external_figma_enabled
        - external_figma_secret
        - external_github_client_id
        - external_github_enabled
        - external_github_secret
        - external_gitlab_client_id
        - external_gitlab_enabled
        - external_gitlab_secret
        - external_gitlab_url
        - external_google_additional_client_ids
        - external_google_client_id
        - external_google_enabled
        - external_google_secret
        - external_google_skip_nonce_check
        - external_kakao_client_id
        - external_kakao_enabled
        - external_kakao_secret
        - external_keycloak_client_id
        - external_keycloak_enabled
        - external_keycloak_secret
        - external_keycloak_url
        - external_linkedin_oidc_client_id
        - external_linkedin_oidc_enabled
        - external_linkedin_oidc_secret
        - external_slack_oidc_client_id
        - external_slack_oidc_enabled
        - external_slack_oidc_secret
        - external_notion_client_id
        - external_notion_enabled
        - external_notion_secret
        - external_phone_enabled
        - external_slack_client_id
        - external_slack_enabled
        - external_slack_secret
        - external_spotify_client_id
        - external_spotify_enabled
        - external_spotify_secret
        - external_twitch_client_id
        - external_twitch_enabled
        - external_twitch_secret
        - external_twitter_client_id
        - external_twitter_enabled
        - external_twitter_secret
        - external_workos_client_id
        - external_workos_enabled
        - external_workos_secret
        - external_workos_url
        - external_zoom_client_id
        - external_zoom_enabled
        - external_zoom_secret
        - hook_custom_access_token_enabled
        - hook_custom_access_token_uri
        - hook_custom_access_token_secrets
        - hook_mfa_verification_attempt_enabled
        - hook_mfa_verification_attempt_uri
        - hook_mfa_verification_attempt_secrets
        - hook_password_verification_attempt_enabled
        - hook_password_verification_attempt_uri
        - hook_password_verification_attempt_secrets
        - hook_send_sms_enabled
        - hook_send_sms_uri
        - hook_send_sms_secrets
        - hook_send_email_enabled
        - hook_send_email_uri
        - hook_send_email_secrets
        - mailer_allow_unverified_email_sign_ins
        - mailer_autoconfirm
        - mailer_secure_email_change_enabled
        - mailer_subjects_confirmation
        - mailer_subjects_email_change
        - mailer_subjects_invite
        - mailer_subjects_magic_link
        - mailer_subjects_reauthentication
        - mailer_subjects_recovery
        - mailer_templates_confirmation_content
        - mailer_templates_email_change_content
        - mailer_templates_invite_content
        - mailer_templates_magic_link_content
        - mailer_templates_reauthentication_content
        - mailer_templates_recovery_content
        - mfa_totp_enroll_enabled
        - mfa_totp_verify_enabled
        - mfa_phone_enroll_enabled
        - mfa_phone_verify_enabled
        - mfa_web_authn_enroll_enabled
        - mfa_web_authn_verify_enabled
        - mfa_phone_template
        - password_hibp_enabled
        - password_required_characters
        - refresh_token_rotation_enabled
        - saml_enabled
        - saml_external_url
        - saml_allow_encrypted_assertions
        - security_captcha_enabled
        - security_captcha_provider
        - security_captcha_secret
        - security_manual_linking_enabled
        - security_update_password_require_reauthentication
        - sessions_single_per_user
        - sessions_tags
        - site_url
        - sms_autoconfirm
        - sms_messagebird_access_key
        - sms_messagebird_originator
        - sms_provider
        - sms_template
        - sms_test_otp
        - sms_test_otp_valid_until
        - sms_textlocal_api_key
        - sms_textlocal_sender
        - sms_twilio_account_sid
        - sms_twilio_auth_token
        - sms_twilio_content_sid
        - sms_twilio_message_service_sid
        - sms_twilio_verify_account_sid
        - sms_twilio_verify_auth_token
        - sms_twilio_verify_message_service_sid
        - sms_vonage_api_key
        - sms_vonage_api_secret
        - sms_vonage_from
        - smtp_admin_email
        - smtp_host
        - smtp_pass
        - smtp_port
        - smtp_sender_name
        - smtp_user
        - uri_allow_list
    UpdateAuthConfigBody:
      type: object
      properties:
        jwt_exp:
          type: integer
          minimum: 0
          maximum: 604800
        smtp_max_frequency:
          type: integer
          minimum: 0
          maximum: 32767
        mfa_max_enrolled_factors:
          type: integer
          minimum: 0
          maximum: 2147483647
        sessions_timebox:
          type: integer
          minimum: 0
        sessions_inactivity_timeout:
          type: integer
          minimum: 0
        rate_limit_anonymous_users:
          type: integer
          minimum: 1
          maximum: 2147483647
        rate_limit_email_sent:
          type: integer
          minimum: 1
          maximum: 2147483647
        rate_limit_sms_sent:
          type: integer
          minimum: 1
          maximum: 2147483647
        rate_limit_verify:
          type: integer
          minimum: 1
          maximum: 2147483647
        rate_limit_token_refresh:
          type: integer
          minimum: 1
          maximum: 2147483647
        rate_limit_otp:
          type: integer
          minimum: 1
          maximum: 2147483647
        password_min_length:
          type: integer
          minimum: 6
          maximum: 32767
        security_refresh_token_reuse_interval:
          type: integer
          minimum: 0
          maximum: 2147483647
        mailer_otp_exp:
          type: integer
          minimum: 0
          maximum: 2147483647
        mailer_otp_length:
          type: integer
          minimum: 6
          maximum: 10
        sms_max_frequency:
          type: integer
          minimum: 0
          maximum: 32767
        sms_otp_exp:
          type: integer
          minimum: 0
          maximum: 2147483647
        sms_otp_length:
          type: integer
          minimum: 0
          maximum: 32767
        db_max_pool_size:
          type: integer
        api_max_request_duration:
          type: integer
        mfa_phone_max_frequency:
          type: integer
          minimum: 0
          maximum: 32767
        mfa_phone_otp_length:
          type: integer
          minimum: 0
          maximum: 32767
        site_url:
          type: string
          pattern: /^[^,]+$/
        disable_signup:
          type: boolean
        smtp_admin_email:
          type: string
        smtp_host:
          type: string
        smtp_port:
          type: string
        smtp_user:
          type: string
        smtp_pass:
          type: string
        smtp_sender_name:
          type: string
        mailer_allow_unverified_email_sign_ins:
          type: boolean
        mailer_autoconfirm:
          type: boolean
        mailer_subjects_invite:
          type: string
        mailer_subjects_confirmation:
          type: string
        mailer_subjects_recovery:
          type: string
        mailer_subjects_email_change:
          type: string
        mailer_subjects_magic_link:
          type: string
        mailer_subjects_reauthentication:
          type: string
        mailer_templates_invite_content:
          type: string
        mailer_templates_confirmation_content:
          type: string
        mailer_templates_recovery_content:
          type: string
        mailer_templates_email_change_content:
          type: string
        mailer_templates_magic_link_content:
          type: string
        mailer_templates_reauthentication_content:
          type: string
        uri_allow_list:
          type: string
        external_anonymous_users_enabled:
          type: boolean
        external_email_enabled:
          type: boolean
        external_phone_enabled:
          type: boolean
        saml_enabled:
          type: boolean
        saml_external_url:
          type: string
          pattern: /^[^,]+$/
        security_captcha_enabled:
          type: boolean
        security_captcha_provider:
          type: string
        security_captcha_secret:
          type: string
        sessions_single_per_user:
          type: boolean
        sessions_tags:
          type: string
          pattern: /^\s*([a-z0-9_-]+(\s*,+\s*)?)*\s*$/i
        mailer_secure_email_change_enabled:
          type: boolean
        refresh_token_rotation_enabled:
          type: boolean
        password_hibp_enabled:
          type: boolean
        password_required_characters:
          type: string
          enum:
            - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789
            - abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789
            - abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:0123456789:!@#$%^&*()_+-=[]{};'\\:\"|<>?,./`~
            - ''
        security_manual_linking_enabled:
          type: boolean
        security_update_password_require_reauthentication:
          type: boolean
        sms_autoconfirm:
          type: boolean
        sms_provider:
          type: string
        sms_messagebird_access_key:
          type: string
        sms_messagebird_originator:
          type: string
        sms_test_otp:
          type: string
          pattern: /^([0-9]{1,15}=[0-9]+,?)*$/
        sms_test_otp_valid_until:
          type: string
        sms_textlocal_api_key:
          type: string
        sms_textlocal_sender:
          type: string
        sms_twilio_account_sid:
          type: string
        sms_twilio_auth_token:
          type: string
        sms_twilio_content_sid:
          type: string
        sms_twilio_message_service_sid:
          type: string
        sms_twilio_verify_account_sid:
          type: string
        sms_twilio_verify_auth_token:
          type: string
        sms_twilio_verify_message_service_sid:
          type: string
        sms_vonage_api_key:
          type: string
        sms_vonage_api_secret:
          type: string
        sms_vonage_from:
          type: string
        sms_template:
          type: string
        hook_mfa_verification_attempt_enabled:
          type: boolean
        hook_mfa_verification_attempt_uri:
          type: string
        hook_mfa_verification_attempt_secrets:
          type: string
        hook_password_verification_attempt_enabled:
          type: boolean
        hook_password_verification_attempt_uri:
          type: string
        hook_password_verification_attempt_secrets:
          type: string
        hook_custom_access_token_enabled:
          type: boolean
        hook_custom_access_token_uri:
          type: string
        hook_custom_access_token_secrets:
          type: string
        hook_send_sms_enabled:
          type: boolean
        hook_send_sms_uri:
          type: string
        hook_send_sms_secrets:
          type: string
        hook_send_email_enabled:
          type: boolean
        hook_send_email_uri:
          type: string
        hook_send_email_secrets:
          type: string
        external_apple_enabled:
          type: boolean
        external_apple_client_id:
          type: string
        external_apple_secret:
          type: string
        external_apple_additional_client_ids:
          type: string
        external_azure_enabled:
          type: boolean
        external_azure_client_id:
          type: string
        external_azure_secret:
          type: string
        external_azure_url:
          type: string
        external_bitbucket_enabled:
          type: boolean
        external_bitbucket_client_id:
          type: string
        external_bitbucket_secret:
          type: string
        external_discord_enabled:
          type: boolean
        external_discord_client_id:
          type: string
        external_discord_secret:
          type: string
        external_facebook_enabled:
          type: boolean
        external_facebook_client_id:
          type: string
        external_facebook_secret:
          type: string
        external_figma_enabled:
          type: boolean
        external_figma_client_id:
          type: string
        external_figma_secret:
          type: string
        external_github_enabled:
          type: boolean
        external_github_client_id:
          type: string
        external_github_secret:
          type: string
        external_gitlab_enabled:
          type: boolean
        external_gitlab_client_id:
          type: string
        external_gitlab_secret:
          type: string
        external_gitlab_url:
          type: string
        external_google_enabled:
          type: boolean
        external_google_client_id:
          type: string
        external_google_secret:
          type: string
        external_google_additional_client_ids:
          type: string
        external_google_skip_nonce_check:
          type: boolean
        external_kakao_enabled:
          type: boolean
        external_kakao_client_id:
          type: string
        external_kakao_secret:
          type: string
        external_keycloak_enabled:
          type: boolean
        external_keycloak_client_id:
          type: string
        external_keycloak_secret:
          type: string
        external_keycloak_url:
          type: string
        external_linkedin_oidc_enabled:
          type: boolean
        external_linkedin_oidc_client_id:
          type: string
        external_linkedin_oidc_secret:
          type: string
        external_slack_oidc_enabled:
          type: boolean
        external_slack_oidc_client_id:
          type: string
        external_slack_oidc_secret:
          type: string
        external_notion_enabled:
          type: boolean
        external_notion_client_id:
          type: string
        external_notion_secret:
          type: string
        external_slack_enabled:
          type: boolean
        external_slack_client_id:
          type: string
        external_slack_secret:
          type: string
        external_spotify_enabled:
          type: boolean
        external_spotify_client_id:
          type: string
        external_spotify_secret:
          type: string
        external_twitch_enabled:
          type: boolean
        external_twitch_client_id:
          type: string
        external_twitch_secret:
          type: string
        external_twitter_enabled:
          type: boolean
        external_twitter_client_id:
          type: string
        external_twitter_secret:
          type: string
        external_workos_enabled:
          type: boolean
        external_workos_client_id:
          type: string
        external_workos_secret:
          type: string
        external_workos_url:
          type: string
        external_zoom_enabled:
          type: boolean
        external_zoom_client_id:
          type: string
        external_zoom_secret:
          type: string
        mfa_totp_enroll_enabled:
          type: boolean
        mfa_totp_verify_enabled:
          type: boolean
        mfa_web_authn_enroll_enabled:
          type: boolean
        mfa_web_authn_verify_enabled:
          type: boolean
        mfa_phone_enroll_enabled:
          type: boolean
        mfa_phone_verify_enabled:
          type: boolean
        mfa_phone_template:
          type: string
    CreateThirdPartyAuthBody:
      type: object
      properties:
        oidc_issuer_url:
          type: string
        jwks_url:
          type: string
        custom_jwks:
          type: object
    ThirdPartyAuth:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        oidc_issuer_url:
          type: string
          nullable: true
        jwks_url:
          type: string
          nullable: true
        custom_jwks:
          type: object
          nullable: true
        resolved_jwks:
          type: object
          nullable: true
        inserted_at:
          type: string
        updated_at:
          type: string
        resolved_at:
          type: string
          nullable: true
      required:
        - id
        - type
        - inserted_at
        - updated_at
    V1RunQueryBody:
      type: object
      properties:
        query:
          type: string
      required:
        - query
    V1CreateFunctionBody:
      type: object
      properties:
        slug:
          type: string
          pattern: /^[A-Za-z0-9_-]+$/
        name:
          type: string
        body:
          type: string
        verify_jwt:
          type: boolean
        compute_multiplier:
          type: number
          minimum: 1
          maximum: 4
      required:
        - slug
        - name
        - body
    FunctionResponse:
      type: object
      properties:
        version:
          type: integer
        created_at:
          type: integer
          format: int64
        updated_at:
          type: integer
          format: int64
        id:
          type: string
        slug:
          type: string
        name:
          type: string
        status:
          enum:
            - ACTIVE
            - REMOVED
            - THROTTLED
          type: string
        verify_jwt:
          type: boolean
        import_map:
          type: boolean
        entrypoint_path:
          type: string
        import_map_path:
          type: string
        compute_multiplier:
          type: number
      required:
        - version
        - created_at
        - updated_at
        - id
        - slug
        - name
        - status
    FunctionSlugResponse:
      type: object
      properties:
        version:
          type: integer
        created_at:
          type: integer
          format: int64
        updated_at:
          type: integer
          format: int64
        id:
          type: string
        slug:
          type: string
        name:
          type: string
        status:
          enum:
            - ACTIVE
            - REMOVED
            - THROTTLED
          type: string
        verify_jwt:
          type: boolean
        import_map:
          type: boolean
        entrypoint_path:
          type: string
        import_map_path:
          type: string
        compute_multiplier:
          type: number
      required:
        - version
        - created_at
        - updated_at
        - id
        - slug
        - name
        - status
    V1UpdateFunctionBody:
      type: object
      properties:
        name:
          type: string
        body:
          type: string
        verify_jwt:
          type: boolean
        compute_multiplier:
          type: number
          minimum: 1
          maximum: 4
    V1StorageBucketResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        owner:
          type: string
        created_at:
          type: string
        updated_at:
          type: string
        public:
          type: boolean
      required:
        - id
        - name
        - owner
        - created_at
        - updated_at
        - public
    AttributeValue:
      type: object
      properties:
        default:
          oneOf:
            - type: object
            - type: number
            - type: string
            - type: boolean
        name:
          type: string
        names:
          type: array
          items:
            type: string
        array:
          type: boolean
    AttributeMapping:
      type: object
      properties:
        keys:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AttributeValue'
      required:
        - keys
    CreateProviderBody:
      type: object
      properties:
        type:
          type: string
          enum:
            - saml
          description: What type of provider will be created
        metadata_xml:
          type: string
        metadata_url:
          type: string
        domains:
          type: array
          items:
            type: string
        attribute_mapping:
          $ref: '#/components/schemas/AttributeMapping'
      required:
        - type
    SamlDescriptor:
      type: object
      properties:
        id:
          type: string
        entity_id:
          type: string
        metadata_url:
          type: string
        metadata_xml:
          type: string
        attribute_mapping:
          $ref: '#/components/schemas/AttributeMapping'
      required:
        - id
        - entity_id
    Domain:
      type: object
      properties:
        id:
          type: string
        domain:
          type: string
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    CreateProviderResponse:
      type: object
      properties:
        id:
          type: string
        saml:
          $ref: '#/components/schemas/SamlDescriptor'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    Provider:
      type: object
      properties:
        id:
          type: string
        saml:
          $ref: '#/components/schemas/SamlDescriptor'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    ListProvidersResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Provider'
      required:
        - items
    GetProviderResponse:
      type: object
      properties:
        id:
          type: string
        saml:
          $ref: '#/components/schemas/SamlDescriptor'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    UpdateProviderBody:
      type: object
      properties:
        metadata_xml:
          type: string
        metadata_url:
          type: string
        domains:
          type: array
          items:
            type: string
        attribute_mapping:
          $ref: '#/components/schemas/AttributeMapping'
    UpdateProviderResponse:
      type: object
      properties:
        id:
          type: string
        saml:
          $ref: '#/components/schemas/SamlDescriptor'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    DeleteProviderResponse:
      type: object
      properties:
        id:
          type: string
        saml:
          $ref: '#/components/schemas/SamlDescriptor'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/Domain'
        created_at:
          type: string
        updated_at:
          type: string
      required:
        - id
    V1Backup:
      type: object
      properties:
        status:
          type: string
          enum:
            - COMPLETED
            - FAILED
            - PENDING
            - REMOVED
            - ARCHIVED
            - CANCELLED
        is_physical_backup:
          type: boolean
        inserted_at:
          type: string
      required:
        - status
        - is_physical_backup
        - inserted_at
    V1PhysicalBackup:
      type: object
      properties:
        earliest_physical_backup_date_unix:
          type: integer
          format: int64
        latest_physical_backup_date_unix:
          type: integer
          format: int64
    V1BackupsResponse:
      type: object
      properties:
        region:
          type: string
        walg_enabled:
          type: boolean
        pitr_enabled:
          type: boolean
        backups:
          type: array
          items:
            $ref: '#/components/schemas/V1Backup'
        physical_backup_data:
          $ref: '#/components/schemas/V1PhysicalBackup'
      required:
        - region
        - walg_enabled
        - pitr_enabled
        - backups
        - physical_backup_data
    V1RestorePitrBody:
      type: object
      properties:
        recovery_time_target_unix:
          type: integer
          minimum: 0
          format: int64
      required:
        - recovery_time_target_unix
    V1OrganizationMemberResponse:
      type: object
      properties:
        user_id:
          type: string
        user_name:
          type: string
        email:
          type: string
        role_name:
          type: string
        mfa_enabled:
          type: boolean
      required:
        - user_id
        - user_name
        - role_name
        - mfa_enabled
    BillingPlanId:
      type: string
      enum:
        - free
        - pro
        - team
        - enterprise
    V1OrganizationSlugResponse:
      type: object
      properties:
        plan:
          $ref: '#/components/schemas/BillingPlanId'
        opt_in_tags:
          type: array
          items:
            type: string
            enum:
              - AI_SQL_GENERATOR_OPT_IN
        allowed_release_channels:
          type: array
          items:
            $ref: '#/components/schemas/ReleaseChannel'
        id:
          type: string
        name:
          type: string
      required:
        - opt_in_tags
        - allowed_release_channels
        - id
        - name
