openapi: 3.0.3
info:
  title: OpenStack Identity API v3
  version: "3.14"
  description: >
    The Identity service generates authentication tokens that permit access to
    the OpenStack services REST APIs.

    Clients obtain this token and the URL endpoints for other service APIs by
    supplying their valid credentials

    to the authentication service.


    Each time you make a REST API request to an OpenStack service, you supply
    your authentication token

    in the X-Auth-Token request header.


    Like most OpenStack projects, OpenStack Identity protects its APIs by
    defining policy rules based on

    a role-based access control (RBAC) approach.
  contact:
    name: OpenStack Identity API
    url: https://docs.openstack.org/api-ref/identity/v3/
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  x-gitbook-description-document:
    object: document
    data:
      schemaVersion: 8
    nodes:
      - object: block
        type: paragraph
        isVoid: false
        data: {}
        nodes:
          - object: text
            leaves:
              - object: leaf
                text: >-
                  The Identity service generates authentication tokens that
                  permit access to the OpenStack services REST APIs. Clients
                  obtain this token and the URL endpoints for other service APIs
                  by supplying their valid credentials to the authentication
                  service.
                marks: []
      - object: block
        type: paragraph
        isVoid: false
        data: {}
        nodes:
          - object: text
            leaves:
              - object: leaf
                text: >-
                  Each time you make a REST API request to an OpenStack service,
                  you supply your authentication token in the X-Auth-Token
                  request header.
                marks: []
      - object: block
        type: paragraph
        isVoid: false
        data: {}
        nodes:
          - object: text
            leaves:
              - object: leaf
                text: >-
                  Like most OpenStack projects, OpenStack Identity protects its
                  APIs by defining policy rules based on a role-based access
                  control (RBAC) approach.
                marks: []
  x-gitbook-description-html: >-
    <p>The Identity service generates authentication tokens that permit access
    to the OpenStack services REST APIs. Clients obtain this token and the URL
    endpoints for other service APIs by supplying their valid credentials to the
    authentication service.</p><p>Each time you make a REST API request to an
    OpenStack service, you supply your authentication token in the X-Auth-Token
    request header.</p><p>Like most OpenStack projects, OpenStack Identity
    protects its APIs by defining policy rules based on a role-based access
    control (RBAC) approach.</p>
servers:
  - url: https://{host}/keystone/v3
    description: PCD Identity API v3
    variables:
      host:
        default: example.platform9.com
        description: The PCD controlplane hostname
        x-gitbook-description-html: <p>The PCD controlplane hostname</p>
    x-gitbook-description-html: <p>PCD Identity API v3</p>
paths:
  /auth/tokens:
    get:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - $ref: "#/components/parameters/X-Subject-Token"
        - name: nocatalog
          description: Excludes the service catalog from the response
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Excludes the service catalog from the response</p>
        - name: allow_expired
          description: Allow fetching a token that has expired
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Allow fetching a token that has expired</p>
      responses:
        "200":
          headers:
            X-Subject-Token:
              schema:
                type: string
              description: The authentication token
              x-gitbook-description-html: <p>The authentication token</p>
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: Token validation successful
          x-gitbook-description-html: <p>Token validation successful</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Validate and show token information
      description: >-
        Validates and shows information for a token, including its expiration
        date and authorization scope
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Validates and shows information for a token, including its
                      expiration date and authorization scope
                    marks: []
      x-gitbook-description-html: >-
        <p>Validates and shows information for a token, including its expiration
        date and authorization scope</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AuthRequest"
            examples:
              password_auth:
                summary: Password authentication
                value:
                  auth:
                    identity:
                      methods:
                        - password
                      password:
                        user:
                          id: ee4dfb6e5540447cb3741905149d9b6e
                          password: devstacker
                    scope:
                      project:
                        id: a6944d763bf64ee6a275f1263fae0352
        required: true
      tags:
        - Authentication
      parameters:
        - name: nocatalog
          description: Excludes the service catalog from the authentication response
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Excludes the service catalog from the authentication response</p>
      responses:
        "201":
          headers:
            X-Subject-Token:
              schema:
                type: string
              description: The authentication token
              x-gitbook-description-html: <p>The authentication token</p>
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TokenResponse"
          description: Token created successfully
          x-gitbook-description-html: <p>Token created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          headers:
            Openstack-Auth-Receipt:
              schema:
                type: string
              description: Auth receipt for multi-factor authentication
              x-gitbook-description-html: <p>Auth receipt for multi-factor authentication</p>
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuthReceiptResponse"
          description: Authentication failed or partial authentication (MFA)
          x-gitbook-description-html: <p>Authentication failed or partial authentication (MFA)</p>
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Authenticate user and generate token
      description: >
        Authenticates an identity and generates a token. Uses various
        authentication methods

        including password, token, and multi-factor authentication.
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Authenticates an identity and generates a token. Uses
                      various authentication methods including password, token,
                      and multi-factor authentication.
                    marks: []
      x-gitbook-description-html: >-
        <p>Authenticates an identity and generates a token. Uses various
        authentication methods including password, token, and multi-factor
        authentication.</p>
    delete:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - $ref: "#/components/parameters/X-Subject-Token"
      responses:
        "204":
          description: Token revoked successfully
          x-gitbook-description-html: <p>Token revoked successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Revoke token
      description: Revokes a token, making it immediately invalid
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Revokes a token, making it immediately invalid
                    marks: []
      x-gitbook-description-html: <p>Revokes a token, making it immediately invalid</p>
    head:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - $ref: "#/components/parameters/X-Subject-Token"
        - name: allow_expired
          description: Allow fetching a token that has expired
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Allow fetching a token that has expired</p>
      responses:
        "200":
          description: Token is valid
          x-gitbook-description-html: <p>Token is valid</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Validate token (no response body)
      description: Validates a token without returning a response body
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Validates a token without returning a response body
                    marks: []
      x-gitbook-description-html: <p>Validates a token without returning a response body</p>
  /auth/catalog:
    get:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CatalogResponse"
          description: Service catalog retrieved successfully
          x-gitbook-description-html: <p>Service catalog retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Get service catalog
      description: Returns a service catalog for the provided token
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Returns a service catalog for the provided token
                    marks: []
      x-gitbook-description-html: <p>Returns a service catalog for the provided token</p>
  /auth/projects:
    get:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectsResponse"
          description: Tenants listed successfully
          x-gitbook-description-html: <p>Tenants listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List available tenants
      description: Returns the list of tenants that are available to be scoped to
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Returns the list of tenants that are available to be
                      scoped to
                    marks: []
      x-gitbook-description-html: <p>Returns the list of tenants that are available to be scoped to</p>
  /auth/domains:
    get:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DomainsResponse"
          description: Domains listed successfully
          x-gitbook-description-html: <p>Domains listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List available domains
      description: Returns the list of domains that are available to be scoped to
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Returns the list of domains that are available to be
                      scoped to
                    marks: []
      x-gitbook-description-html: <p>Returns the list of domains that are available to be scoped to</p>
  /auth/system:
    get:
      tags:
        - Authentication
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SystemResponse"
          description: Systems listed successfully
          x-gitbook-description-html: <p>Systems listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
      summary: List available systems
      description: Returns the list of systems that are available to be scoped to
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Returns the list of systems that are available to be
                      scoped to
                    marks: []
      x-gitbook-description-html: <p>Returns the list of systems that are available to be scoped to</p>
  /credentials:
    get:
      tags:
        - Credentials
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: Filter by user ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by user ID</p>
        - name: type
          description: Filter by credential type
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by credential type</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CredentialsResponse"
          description: Credentials listed successfully
          x-gitbook-description-html: <p>Credentials listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List credentials
      description: Lists all credentials, optionally filtered by user_id or type
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: >-
                      Lists all credentials, optionally filtered by user_id or
                      type
                    marks: []
      x-gitbook-description-html: <p>Lists all credentials, optionally filtered by user_id or type</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CredentialRequest"
        required: true
      tags:
        - Credentials
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CredentialResponse"
          description: Credential created successfully
          x-gitbook-description-html: <p>Credential created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create credential
      description: Creates a credential
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a credential
                    marks: []
      x-gitbook-description-html: <p>Creates a credential</p>
  /credentials/{credential_id}:
    get:
      tags:
        - Credentials
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: credential_id
          description: The credential ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The credential ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CredentialResponse"
          description: Credential details retrieved successfully
          x-gitbook-description-html: <p>Credential details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show credential details
      description: Shows details for a credential
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a credential
                    marks: []
      x-gitbook-description-html: <p>Shows details for a credential</p>
    delete:
      tags:
        - Credentials
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: credential_id
          description: The credential ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The credential ID</p>
      responses:
        "204":
          description: Credential deleted successfully
          x-gitbook-description-html: <p>Credential deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Delete credential
      description: Deletes a credential
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a credential
                    marks: []
      x-gitbook-description-html: <p>Deletes a credential</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CredentialRequest"
        required: true
      tags:
        - Credentials
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: credential_id
          description: The credential ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The credential ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CredentialResponse"
          description: Credential updated successfully
          x-gitbook-description-html: <p>Credential updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update credential
      description: Updates a credential
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a credential
                    marks: []
      x-gitbook-description-html: <p>Updates a credential</p>
  /groups:
    get:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: domain_id
          description: Filter by domain ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by domain ID</p>
        - name: name
          description: Filter by group name
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by group name</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GroupsResponse"
          description: Groups listed successfully
          x-gitbook-description-html: <p>Groups listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List groups
      description: Lists groups
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists groups
                    marks: []
      x-gitbook-description-html: <p>Lists groups</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GroupRequest"
        required: true
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GroupResponse"
          description: Group created successfully
          x-gitbook-description-html: <p>Group created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create group
      description: Creates a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a group
                    marks: []
      x-gitbook-description-html: <p>Creates a group</p>
  /groups/{group_id}:
    get:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GroupResponse"
          description: Group details retrieved successfully
          x-gitbook-description-html: <p>Group details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show group details
      description: Shows details for a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a group
                    marks: []
      x-gitbook-description-html: <p>Shows details for a group</p>
    delete:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
      responses:
        "204":
          description: Group deleted successfully
          x-gitbook-description-html: <p>Group deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete group
      description: Deletes a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a group
                    marks: []
      x-gitbook-description-html: <p>Deletes a group</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GroupRequest"
        required: true
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GroupResponse"
          description: Group updated successfully
          x-gitbook-description-html: <p>Group updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update group
      description: Updates a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a group
                    marks: []
      x-gitbook-description-html: <p>Updates a group</p>
  /groups/{group_id}/users:
    get:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
        - name: password_expires_at
          description: Filter by password expiration
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by password expiration</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UsersResponse"
          description: Group users listed successfully
          x-gitbook-description-html: <p>Group users listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List group users
      description: Lists users in a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists users in a group
                    marks: []
      x-gitbook-description-html: <p>Lists users in a group</p>
  /groups/{group_id}/users/{user_id}:
    put:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "204":
          description: User added to group successfully
          x-gitbook-description-html: <p>User added to group successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Add user to group
      description: Adds a user to a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Adds a user to a group
                    marks: []
      x-gitbook-description-html: <p>Adds a user to a group</p>
    delete:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "204":
          description: User removed from group successfully
          x-gitbook-description-html: <p>User removed from group successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Remove user from group
      description: Removes a user from a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Removes a user from a group
                    marks: []
      x-gitbook-description-html: <p>Removes a user from a group</p>
    head:
      tags:
        - Groups
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: group_id
          description: The group ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The group ID</p>
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "204":
          description: User is a member of the group
          x-gitbook-description-html: <p>User is a member of the group</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Check user group membership
      description: Validates that a user belongs to a group
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Validates that a user belongs to a group
                    marks: []
      x-gitbook-description-html: <p>Validates that a user belongs to a group</p>
  /policies:
    get:
      tags:
        - Policies
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: type
          description: Filter by policy type
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by policy type</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PoliciesResponse"
          description: Policies listed successfully
          x-gitbook-description-html: <p>Policies listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List policies
      description: Lists policies
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists policies
                    marks: []
      x-gitbook-description-html: <p>Lists policies</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyRequest"
        required: true
      tags:
        - Policies
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyResponse"
          description: Policy created successfully
          x-gitbook-description-html: <p>Policy created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create policy
      description: Creates a policy
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a policy
                    marks: []
      x-gitbook-description-html: <p>Creates a policy</p>
  /policies/{policy_id}:
    get:
      tags:
        - Policies
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: policy_id
          description: The policy ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The policy ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyResponse"
          description: Policy details retrieved successfully
          x-gitbook-description-html: <p>Policy details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show policy details
      description: Shows details for a policy
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a policy
                    marks: []
      x-gitbook-description-html: <p>Shows details for a policy</p>
    delete:
      tags:
        - Policies
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: policy_id
          description: The policy ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The policy ID</p>
      responses:
        "204":
          description: Policy deleted successfully
          x-gitbook-description-html: <p>Policy deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete policy
      description: Deletes a policy
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a policy
                    marks: []
      x-gitbook-description-html: <p>Deletes a policy</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PolicyRequest"
        required: true
      tags:
        - Policies
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: policy_id
          description: The policy ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The policy ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyResponse"
          description: Policy updated successfully
          x-gitbook-description-html: <p>Policy updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update policy
      description: Updates a policy
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a policy
                    marks: []
      x-gitbook-description-html: <p>Updates a policy</p>
  /projects:
    get:
      tags:
        - Tenants
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: domain_id
          description: Filter by domain ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by domain ID</p>
        - name: enabled
          description: Filter by enabled status
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by enabled status</p>
        - name: is_domain
          description: Filter by is_domain flag
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by is_domain flag</p>
        - name: name
          description: Filter by tenant name
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by tenant name</p>
        - name: parent_id
          description: Filter by parent tenant ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by parent tenant ID</p>
        - name: tags
          description: Filter by tags
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by tags</p>
        - name: tags-any
          description: Filter by any of the specified tags
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by any of the specified tags</p>
        - name: not-tags
          description: Filter by not having any of the specified tags
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by not having any of the specified tags</p>
        - name: not-tags-any
          description: Filter by not having all of the specified tags
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by not having all of the specified tags</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectsResponse"
          description: Tenants listed successfully
          x-gitbook-description-html: <p>Tenants listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List tenants
      description: Lists tenants
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists tenants
                    marks: []
      x-gitbook-description-html: <p>Lists tenants</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectRequest"
        required: true
      tags:
        - Tenants
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectResponse"
          description: Tenant created successfully
          x-gitbook-description-html: <p>Tenant created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create tenant
      description: Creates a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a tenant
                    marks: []
      x-gitbook-description-html: <p>Creates a tenant</p>
  /projects/{project_id}:
    get:
      tags:
        - Tenants
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
        - name: include_limits
          description: Include tenant limits in response
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Include tenant limits in response</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectResponse"
          description: Tenant details retrieved successfully
          x-gitbook-description-html: <p>Tenant details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show tenant details
      description: Shows details for a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a tenant
                    marks: []
      x-gitbook-description-html: <p>Shows details for a tenant</p>
    delete:
      tags:
        - Tenants
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
      responses:
        "204":
          description: Tenant deleted successfully
          x-gitbook-description-html: <p>Tenant deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete tenant
      description: Deletes a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a tenant
                    marks: []
      x-gitbook-description-html: <p>Deletes a tenant</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProjectRequest"
        required: true
      tags:
        - Tenants
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectResponse"
          description: Tenant updated successfully
          x-gitbook-description-html: <p>Tenant updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update tenant
      description: Updates a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a tenant
                    marks: []
      x-gitbook-description-html: <p>Updates a tenant</p>
  /projects/{project_id}/tags:
    get:
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TagsResponse"
          description: Tenant tags listed successfully
          x-gitbook-description-html: <p>Tenant tags listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List tenant tags
      description: Lists tags for a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists tags for a tenant
                    marks: []
      x-gitbook-description-html: <p>Lists tags for a tenant</p>
    put:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TagsRequest"
        required: true
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TagsResponse"
          description: Tenant tags replaced successfully
          x-gitbook-description-html: <p>Tenant tags replaced successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Replace all tenant tags
      description: Replaces all tags for a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Replaces all tags for a tenant
                    marks: []
      x-gitbook-description-html: <p>Replaces all tags for a tenant</p>
    delete:
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
      responses:
        "204":
          description: All tenant tags deleted successfully
          x-gitbook-description-html: <p>All tenant tags deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete all tenant tags
      description: Deletes all tags from a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes all tags from a tenant
                    marks: []
      x-gitbook-description-html: <p>Deletes all tags from a tenant</p>
  /projects/{project_id}/tags/{tag}:
    put:
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
        - name: tag
          description: The tag name
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tag name</p>
      responses:
        "201":
          description: Tag added to tenant successfully
          x-gitbook-description-html: <p>Tag added to tenant successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Add tag to tenant
      description: Adds a tag to a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Adds a tag to a tenant
                    marks: []
      x-gitbook-description-html: <p>Adds a tag to a tenant</p>
    delete:
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
        - name: tag
          description: The tag name
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tag name</p>
      responses:
        "204":
          description: Tag removed from tenant successfully
          x-gitbook-description-html: <p>Tag removed from tenant successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Remove tag from tenant
      description: Removes a tag from a tenant
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Removes a tag from a tenant
                    marks: []
      x-gitbook-description-html: <p>Removes a tag from a tenant</p>
    head:
      tags:
        - Tenant Tags
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: project_id
          description: The tenant ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tenant ID</p>
        - name: tag
          description: The tag name
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The tag name</p>
      responses:
        "204":
          description: Tenant has the tag
          x-gitbook-description-html: <p>Tenant has the tag</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Check if tenant has tag
      description: Checks if a tenant has a specific tag
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Checks if a tenant has a specific tag
                    marks: []
      x-gitbook-description-html: <p>Checks if a tenant has a specific tag</p>
  /regions:
    get:
      tags:
        - Regions
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: parent_region_id
          description: Filter by parent region ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by parent region ID</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionsResponse"
          description: Regions listed successfully
          x-gitbook-description-html: <p>Regions listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List regions
      description: Lists regions
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists regions
                    marks: []
      x-gitbook-description-html: <p>Lists regions</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegionRequest"
        required: true
      tags:
        - Regions
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionResponse"
          description: Region created successfully
          x-gitbook-description-html: <p>Region created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create region
      description: Creates a region
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a region
                    marks: []
      x-gitbook-description-html: <p>Creates a region</p>
  /regions/{region_id}:
    get:
      tags:
        - Regions
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: region_id
          description: The region ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The region ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionResponse"
          description: Region details retrieved successfully
          x-gitbook-description-html: <p>Region details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show region details
      description: Shows details for a region
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a region
                    marks: []
      x-gitbook-description-html: <p>Shows details for a region</p>
    delete:
      tags:
        - Regions
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: region_id
          description: The region ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The region ID</p>
      responses:
        "204":
          description: Region deleted successfully
          x-gitbook-description-html: <p>Region deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete region
      description: Deletes a region
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a region
                    marks: []
      x-gitbook-description-html: <p>Deletes a region</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegionRequest"
        required: true
      tags:
        - Regions
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: region_id
          description: The region ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The region ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RegionResponse"
          description: Region updated successfully
          x-gitbook-description-html: <p>Region updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update region
      description: Updates a region
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a region
                    marks: []
      x-gitbook-description-html: <p>Updates a region</p>
  /services:
    get:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: type
          description: Filter by service type
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by service type</p>
        - name: name
          description: Filter by service name
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by service name</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServicesResponse"
          description: Services listed successfully
          x-gitbook-description-html: <p>Services listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List services
      description: Lists services
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists services
                    marks: []
      x-gitbook-description-html: <p>Lists services</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceRequest"
        required: true
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceResponse"
          description: Service created successfully
          x-gitbook-description-html: <p>Service created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create service
      description: Creates a service
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a service
                    marks: []
      x-gitbook-description-html: <p>Creates a service</p>
  /services/{service_id}:
    get:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: service_id
          description: The service ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The service ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceResponse"
          description: Service details retrieved successfully
          x-gitbook-description-html: <p>Service details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show service details
      description: Shows details for a service
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a service
                    marks: []
      x-gitbook-description-html: <p>Shows details for a service</p>
    delete:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: service_id
          description: The service ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The service ID</p>
      responses:
        "204":
          description: Service deleted successfully
          x-gitbook-description-html: <p>Service deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete service
      description: Deletes a service
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a service
                    marks: []
      x-gitbook-description-html: <p>Deletes a service</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ServiceRequest"
        required: true
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: service_id
          description: The service ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The service ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceResponse"
          description: Service updated successfully
          x-gitbook-description-html: <p>Service updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update service
      description: Updates a service
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a service
                    marks: []
      x-gitbook-description-html: <p>Updates a service</p>
  /endpoints:
    get:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: interface
          description: Filter by interface type
          schema:
            enum:
              - public
              - internal
              - admin
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by interface type</p>
        - name: service_id
          description: Filter by service ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by service ID</p>
        - name: region_id
          description: Filter by region ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by region ID</p>
        - name: enabled
          description: Filter by enabled status
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by enabled status</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EndpointsResponse"
          description: Endpoints listed successfully
          x-gitbook-description-html: <p>Endpoints listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List endpoints
      description: Lists endpoints
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists endpoints
                    marks: []
      x-gitbook-description-html: <p>Lists endpoints</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EndpointRequest"
        required: true
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EndpointResponse"
          description: Endpoint created successfully
          x-gitbook-description-html: <p>Endpoint created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create endpoint
      description: Creates an endpoint
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates an endpoint
                    marks: []
      x-gitbook-description-html: <p>Creates an endpoint</p>
  /endpoints/{endpoint_id}:
    get:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: endpoint_id
          description: The endpoint ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The endpoint ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EndpointResponse"
          description: Endpoint details retrieved successfully
          x-gitbook-description-html: <p>Endpoint details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show endpoint details
      description: Shows details for an endpoint
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for an endpoint
                    marks: []
      x-gitbook-description-html: <p>Shows details for an endpoint</p>
    delete:
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: endpoint_id
          description: The endpoint ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The endpoint ID</p>
      responses:
        "204":
          description: Endpoint deleted successfully
          x-gitbook-description-html: <p>Endpoint deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete endpoint
      description: Deletes an endpoint
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes an endpoint
                    marks: []
      x-gitbook-description-html: <p>Deletes an endpoint</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EndpointRequest"
        required: true
      tags:
        - Service Catalog
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: endpoint_id
          description: The endpoint ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The endpoint ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EndpointResponse"
          description: Endpoint updated successfully
          x-gitbook-description-html: <p>Endpoint updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update endpoint
      description: Updates an endpoint
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates an endpoint
                    marks: []
      x-gitbook-description-html: <p>Updates an endpoint</p>
  /users:
    get:
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: domain_id
          description: Filter by domain ID
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by domain ID</p>
        - name: enabled
          description: Filter by enabled status
          schema:
            type: boolean
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by enabled status</p>
        - name: name
          description: Filter by user name
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by user name</p>
        - name: password_expires_at
          description: Filter by password expiration
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by password expiration</p>
        - name: unique_name
          description: Filter by unique name
          schema:
            type: string
          in: query
          required: false
          x-gitbook-description-html: <p>Filter by unique name</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UsersResponse"
          description: Users listed successfully
          x-gitbook-description-html: <p>Users listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
      summary: List users
      description: Lists users
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists users
                    marks: []
      x-gitbook-description-html: <p>Lists users</p>
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserRequest"
        required: true
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: User created successfully
          x-gitbook-description-html: <p>User created successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Create user
      description: Creates a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Creates a user
                    marks: []
      x-gitbook-description-html: <p>Creates a user</p>
  /users/{user_id}:
    get:
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: User details retrieved successfully
          x-gitbook-description-html: <p>User details retrieved successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Show user details
      description: Shows details for a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Shows details for a user
                    marks: []
      x-gitbook-description-html: <p>Shows details for a user</p>
    delete:
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "204":
          description: User deleted successfully
          x-gitbook-description-html: <p>User deleted successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Delete user
      description: Deletes a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Deletes a user
                    marks: []
      x-gitbook-description-html: <p>Deletes a user</p>
    patch:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UserRequest"
        required: true
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserResponse"
          description: User updated successfully
          x-gitbook-description-html: <p>User updated successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
        "409":
          $ref: "#/components/responses/Conflict"
      summary: Update user
      description: Updates a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Updates a user
                    marks: []
      x-gitbook-description-html: <p>Updates a user</p>
  /users/{user_id}/groups:
    get:
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GroupsResponse"
          description: User groups listed successfully
          x-gitbook-description-html: <p>User groups listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List user groups
      description: Lists groups to which a user belongs
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists groups to which a user belongs
                    marks: []
      x-gitbook-description-html: <p>Lists groups to which a user belongs</p>
  /users/{user_id}/projects:
    get:
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
        - $ref: "#/components/parameters/limit"
        - $ref: "#/components/parameters/marker"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProjectsResponse"
          description: User tenants listed successfully
          x-gitbook-description-html: <p>User tenants listed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: List user tenants
      description: Lists tenants for a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Lists tenants for a user
                    marks: []
      x-gitbook-description-html: <p>Lists tenants for a user</p>
  /users/{user_id}/password:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordChangeRequest"
        required: true
      tags:
        - Users
      parameters:
        - $ref: "#/components/parameters/X-Auth-Token"
        - name: user_id
          description: The user ID
          schema:
            type: string
          in: path
          required: true
          x-gitbook-description-html: <p>The user ID</p>
      responses:
        "204":
          description: Password changed successfully
          x-gitbook-description-html: <p>Password changed successfully</p>
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "403":
          $ref: "#/components/responses/Forbidden"
        "404":
          $ref: "#/components/responses/NotFound"
      summary: Change user password
      description: Changes the password for a user
      x-gitbook-description-document:
        object: document
        data:
          schemaVersion: 8
        nodes:
          - object: block
            type: paragraph
            isVoid: false
            data: {}
            nodes:
              - object: text
                leaves:
                  - object: leaf
                    text: Changes the password for a user
                    marks: []
      x-gitbook-description-html: <p>Changes the password for a user</p>
components:
  schemas:
    Error:
      required:
        - error
      type: object
      properties:
        error:
          required:
            - code
            - message
            - title
          type: object
          properties:
            code:
              type: integer
            message:
              type: string
            title:
              type: string
    AuthRequest:
      required:
        - auth
      type: object
      properties:
        auth:
          required:
            - identity
          type: object
          properties:
            identity:
              required:
                - methods
              type: object
              properties:
                methods:
                  type: array
                  items:
                    enum:
                      - password
                      - token
                      - application_credential
                      - totp
                    type: string
                password:
                  type: object
                  properties:
                    user:
                      $ref: "#/components/schemas/UserIdentity"
                token:
                  type: object
                  properties:
                    id:
                      type: string
                application_credential:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    secret:
                      type: string
                    user:
                      $ref: "#/components/schemas/UserIdentity"
                totp:
                  type: object
                  properties:
                    user:
                      type: object
                      properties:
                        id:
                          type: string
                        passcode:
                          type: string
            scope:
              type: object
              properties:
                project:
                  type: object
                  properties:
                    id:
                      type: string
                    name:
                      type: string
                    domain:
                      $ref: "#/components/schemas/DomainReference"
                domain:
                  $ref: "#/components/schemas/DomainReference"
                system:
                  type: object
                  properties:
                    all:
                      type: boolean
    UserIdentity:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        domain:
          $ref: "#/components/schemas/DomainReference"
        password:
          type: string
    DomainReference:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    TokenResponse:
      required:
        - token
      type: object
      properties:
        token:
          required:
            - methods
            - user
            - audit_ids
            - expires_at
            - issued_at
          type: object
          properties:
            methods:
              type: array
              items:
                type: string
            user:
              $ref: "#/components/schemas/User"
            audit_ids:
              type: array
              items:
                type: string
            expires_at:
              format: date-time
              type: string
            issued_at:
              format: date-time
              type: string
            project:
              $ref: "#/components/schemas/Project"
            domain:
              $ref: "#/components/schemas/Domain"
            system:
              type: object
              properties:
                all:
                  type: boolean
            roles:
              type: array
              items:
                $ref: "#/components/schemas/Role"
            catalog:
              type: array
              items:
                $ref: "#/components/schemas/CatalogEntry"
            is_domain:
              type: boolean
            application_credential:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
                restricted:
                  type: boolean
    AuthReceiptResponse:
      required:
        - receipt
      type: object
      properties:
        receipt:
          required:
            - methods
            - user
            - expires_at
            - issued_at
            - required_auth_methods
          type: object
          properties:
            methods:
              type: array
              items:
                type: string
            user:
              $ref: "#/components/schemas/User"
            expires_at:
              format: date-time
              type: string
            issued_at:
              format: date-time
              type: string
            required_auth_methods:
              type: array
              items:
                type: array
                items:
                  type: string
    CatalogResponse:
      required:
        - catalog
        - links
      type: object
      properties:
        catalog:
          type: array
          items:
            $ref: "#/components/schemas/CatalogEntry"
        links:
          $ref: "#/components/schemas/Links"
    CatalogEntry:
      required:
        - id
        - type
        - endpoints
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        name:
          type: string
        endpoints:
          type: array
          items:
            $ref: "#/components/schemas/EndpointInCatalog"
    EndpointInCatalog:
      required:
        - id
        - interface
        - url
      type: object
      properties:
        id:
          type: string
        interface:
          enum:
            - public
            - internal
            - admin
          type: string
        region:
          type: string
        region_id:
          type: string
        url:
          type: string
    SystemResponse:
      required:
        - system
        - links
      type: object
      properties:
        system:
          type: array
          items:
            type: object
            properties:
              all:
                type: boolean
        links:
          $ref: "#/components/schemas/Links"
    Domain:
      required:
        - id
        - name
        - enabled
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        enabled:
          type: boolean
        links:
          $ref: "#/components/schemas/Links"
        options:
          type: object
    Project:
      required:
        - id
        - name
        - enabled
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        enabled:
          type: boolean
        domain_id:
          type: string
        domain:
          $ref: "#/components/schemas/Domain"
        parent_id:
          type: string
        is_domain:
          type: boolean
        tags:
          type: array
          items:
            type: string
        options:
          type: object
        links:
          $ref: "#/components/schemas/Links"
    User:
      required:
        - id
        - name
        - enabled
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        enabled:
          type: boolean
        domain_id:
          type: string
        domain:
          $ref: "#/components/schemas/Domain"
        default_project_id:
          type: string
        email:
          type: string
        password_expires_at:
          nullable: true
          format: date-time
          type: string
        options:
          type: object
        links:
          $ref: "#/components/schemas/Links"
    Group:
      required:
        - id
        - name
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        domain_id:
          type: string
        domain:
          $ref: "#/components/schemas/Domain"
        links:
          $ref: "#/components/schemas/Links"
    Role:
      required:
        - id
        - name
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        domain_id:
          type: string
        options:
          type: object
        links:
          $ref: "#/components/schemas/Links"
    Policy:
      required:
        - id
        - type
        - blob
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        blob:
          type: object
        links:
          $ref: "#/components/schemas/Links"
    Credential:
      required:
        - id
        - user_id
        - type
        - blob
      type: object
      properties:
        id:
          type: string
        user_id:
          type: string
        project_id:
          type: string
        type:
          type: string
        blob:
          type: string
        links:
          $ref: "#/components/schemas/Links"
    Region:
      required:
        - id
      type: object
      properties:
        id:
          type: string
        description:
          type: string
        parent_region_id:
          type: string
        links:
          $ref: "#/components/schemas/Links"
    Service:
      required:
        - id
        - type
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        description:
          type: string
        enabled:
          type: boolean
        links:
          $ref: "#/components/schemas/Links"
    Endpoint:
      required:
        - id
        - service_id
        - interface
        - url
      type: object
      properties:
        id:
          type: string
        service_id:
          type: string
        interface:
          enum:
            - public
            - internal
            - admin
          type: string
        url:
          type: string
        region_id:
          type: string
        enabled:
          type: boolean
        links:
          $ref: "#/components/schemas/Links"
    Links:
      required:
        - self
      type: object
      properties:
        self:
          type: string
        previous:
          nullable: true
          type: string
        next:
          nullable: true
          type: string
    DomainRequest:
      required:
        - domain
      type: object
      properties:
        domain:
          required:
            - name
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            enabled:
              type: boolean
            explicit_domain_id:
              type: string
            options:
              type: object
    ProjectRequest:
      required:
        - project
      type: object
      properties:
        project:
          required:
            - name
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            enabled:
              type: boolean
            domain_id:
              type: string
            parent_id:
              type: string
            is_domain:
              type: boolean
            tags:
              type: array
              items:
                type: string
            options:
              type: object
    UserRequest:
      required:
        - user
      type: object
      properties:
        user:
          required:
            - name
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            enabled:
              type: boolean
            domain_id:
              type: string
            default_project_id:
              type: string
            email:
              type: string
            password:
              type: string
            options:
              type: object
    GroupRequest:
      required:
        - group
      type: object
      properties:
        group:
          required:
            - name
          type: object
          properties:
            name:
              type: string
            description:
              type: string
            domain_id:
              type: string
    PolicyRequest:
      required:
        - policy
      type: object
      properties:
        policy:
          required:
            - type
            - blob
          type: object
          properties:
            type:
              type: string
            blob:
              type: object
    CredentialRequest:
      required:
        - credential
      type: object
      properties:
        credential:
          required:
            - user_id
            - type
            - blob
          type: object
          properties:
            user_id:
              type: string
            project_id:
              type: string
            type:
              type: string
            blob:
              type: string
    RegionRequest:
      required:
        - region
      type: object
      properties:
        region:
          type: object
          properties:
            id:
              type: string
            description:
              type: string
            parent_region_id:
              type: string
    ServiceRequest:
      required:
        - service
      type: object
      properties:
        service:
          required:
            - type
          type: object
          properties:
            name:
              type: string
            type:
              type: string
            description:
              type: string
            enabled:
              type: boolean
    EndpointRequest:
      required:
        - endpoint
      type: object
      properties:
        endpoint:
          required:
            - service_id
            - interface
            - url
          type: object
          properties:
            service_id:
              type: string
            interface:
              enum:
                - public
                - internal
                - admin
              type: string
            url:
              type: string
            region_id:
              type: string
            enabled:
              type: boolean
    TagsRequest:
      required:
        - tags
      type: object
      properties:
        tags:
          type: array
          items:
            type: string
    PasswordChangeRequest:
      required:
        - user
      type: object
      properties:
        user:
          required:
            - password
            - original_password
          type: object
          properties:
            password:
              type: string
            original_password:
              type: string
    DomainsResponse:
      required:
        - domains
        - links
      type: object
      properties:
        domains:
          type: array
          items:
            $ref: "#/components/schemas/Domain"
        links:
          $ref: "#/components/schemas/Links"
    DomainResponse:
      required:
        - domain
      type: object
      properties:
        domain:
          $ref: "#/components/schemas/Domain"
    ProjectsResponse:
      required:
        - projects
        - links
      type: object
      properties:
        projects:
          type: array
          items:
            $ref: "#/components/schemas/Project"
        links:
          $ref: "#/components/schemas/Links"
    ProjectResponse:
      required:
        - project
      type: object
      properties:
        project:
          $ref: "#/components/schemas/Project"
    UsersResponse:
      required:
        - users
        - links
      type: object
      properties:
        users:
          type: array
          items:
            $ref: "#/components/schemas/User"
        links:
          $ref: "#/components/schemas/Links"
    UserResponse:
      required:
        - user
      type: object
      properties:
        user:
          $ref: "#/components/schemas/User"
    GroupsResponse:
      required:
        - groups
        - links
      type: object
      properties:
        groups:
          type: array
          items:
            $ref: "#/components/schemas/Group"
        links:
          $ref: "#/components/schemas/Links"
    GroupResponse:
      required:
        - group
      type: object
      properties:
        group:
          $ref: "#/components/schemas/Group"
    PoliciesResponse:
      required:
        - policies
        - links
      type: object
      properties:
        policies:
          type: array
          items:
            $ref: "#/components/schemas/Policy"
        links:
          $ref: "#/components/schemas/Links"
    PolicyResponse:
      required:
        - policy
      type: object
      properties:
        policy:
          $ref: "#/components/schemas/Policy"
    CredentialsResponse:
      required:
        - credentials
        - links
      type: object
      properties:
        credentials:
          type: array
          items:
            $ref: "#/components/schemas/Credential"
        links:
          $ref: "#/components/schemas/Links"
    CredentialResponse:
      required:
        - credential
      type: object
      properties:
        credential:
          $ref: "#/components/schemas/Credential"
    RegionsResponse:
      required:
        - regions
        - links
      type: object
      properties:
        regions:
          type: array
          items:
            $ref: "#/components/schemas/Region"
        links:
          $ref: "#/components/schemas/Links"
    RegionResponse:
      required:
        - region
      type: object
      properties:
        region:
          $ref: "#/components/schemas/Region"
    ServicesResponse:
      required:
        - services
        - links
      type: object
      properties:
        services:
          type: array
          items:
            $ref: "#/components/schemas/Service"
        links:
          $ref: "#/components/schemas/Links"
    ServiceResponse:
      required:
        - service
      type: object
      properties:
        service:
          $ref: "#/components/schemas/Service"
    EndpointsResponse:
      required:
        - endpoints
        - links
      type: object
      properties:
        endpoints:
          type: array
          items:
            $ref: "#/components/schemas/Endpoint"
        links:
          $ref: "#/components/schemas/Links"
    EndpointResponse:
      required:
        - endpoint
      type: object
      properties:
        endpoint:
          $ref: "#/components/schemas/Endpoint"
    TagsResponse:
      required:
        - tags
        - links
      type: object
      properties:
        tags:
          type: array
          items:
            type: string
        links:
          $ref: "#/components/schemas/Links"
  responses:
    BadRequest:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      description: Some content in the request was invalid
      x-gitbook-description-html: <p>Some content in the request was invalid</p>
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      description: User must authenticate before making a request
      x-gitbook-description-html: <p>User must authenticate before making a request</p>
    Forbidden:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      description: Policy does not allow current user to do this operation
      x-gitbook-description-html: <p>Policy does not allow current user to do this operation</p>
    NotFound:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      description: The requested resource could not be found
      x-gitbook-description-html: <p>The requested resource could not be found</p>
    Conflict:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
      description: This operation conflicted with another operation on this resource
      x-gitbook-description-html: <p>This operation conflicted with another operation on this resource</p>
  parameters:
    X-Auth-Token:
      name: X-Auth-Token
      description: A valid authentication token
      schema:
        type: string
      in: header
      required: true
      x-gitbook-description-html: <p>A valid authentication token</p>
    X-Subject-Token:
      name: X-Subject-Token
      description: The authentication token to validate
      schema:
        type: string
      in: header
      required: true
      x-gitbook-description-html: <p>The authentication token to validate</p>
    limit:
      name: limit
      description: Requests a page size of items
      schema:
        minimum: 1
        type: integer
      in: query
      required: false
      x-gitbook-description-html: <p>Requests a page size of items</p>
    marker:
      name: marker
      description: The ID of the last-seen item for pagination
      schema:
        type: string
      in: query
      required: false
      x-gitbook-description-html: <p>The ID of the last-seen item for pagination</p>
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: Authentication token obtained from the authentication service
      name: X-Auth-Token
      in: header
      x-gitbook-description-html: <p>Authentication token obtained from the authentication service</p>
security:
  - ApiKeyAuth: []
tags:
  - name: Authentication
    description: Authentication and token management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Authentication and token management operations
                  marks: []
    x-gitbook-description-html: <p>Authentication and token management operations</p>
  - name: Credentials
    description: Credential management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Credential management operations
                  marks: []
    x-gitbook-description-html: <p>Credential management operations</p>
  - name: Groups
    description: Group management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Group management operations
                  marks: []
    x-gitbook-description-html: <p>Group management operations</p>
  - name: Policies
    description: Policy management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Policy management operations
                  marks: []
    x-gitbook-description-html: <p>Policy management operations</p>
  - name: Tenants
    description: Tenant management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Tenant management operations
                  marks: []
    x-gitbook-description-html: <p>Tenant management operations</p>
  - name: Tenant Tags
    description: Tenant tag management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Tenant tag management operations
                  marks: []
    x-gitbook-description-html: <p>Tenant tag management operations</p>
  - name: Regions
    description: Region management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Region management operations
                  marks: []
    x-gitbook-description-html: <p>Region management operations</p>
  - name: Service Catalog
    description: Service catalog and endpoint management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: Service catalog and endpoint management operations
                  marks: []
    x-gitbook-description-html: <p>Service catalog and endpoint management operations</p>
  - name: Users
    description: User management operations
    x-gitbook-description-document:
      object: document
      data:
        schemaVersion: 8
      nodes:
        - object: block
          type: paragraph
          isVoid: false
          data: {}
          nodes:
            - object: text
              leaves:
                - object: leaf
                  text: User management operations
                  marks: []
    x-gitbook-description-html: <p>User management operations</p>
