openapi: 3.0.0
info:
  version: '1'
  title: Kinde Management API
  description: |

    Provides endpoints to manage your Kinde Businesses.

    ## Intro

    ## How to use

    1. [Set up and authorize a machine-to-machine (M2M) application](https://docs.kinde.com/developer-tools/kinde-api/connect-to-kinde-api/).

    2. [Generate a test access token](https://docs.kinde.com/developer-tools/kinde-api/access-token-for-api/)

    3. Test request any endpoint using the test token
  termsOfService: https://docs.kinde.com/trust-center/agreements/terms-of-service/
  contact:
    name: Kinde Support Team
    email: support@kinde.com
    url: https://docs.kinde.com
servers:
  - url: https://{subdomain}.kinde.com
    variables:
      subdomain:
        default: your_kinde_subdomain
        description: The subdomain generated for your business on Kinde.
tags:
  - name: API Keys
    x-displayName: API Keys
  - name: APIs
    x-displayName: APIs
  - name: Applications
    x-displayName: Applications
  - name: Billing Entitlements
    x-displayName: Billing Entitlements
  - name: Billing Agreements
    x-displayName: Billing Agreements
  - name: Billing Meter Usage
    x-displayName: Billing Meter Usage
  - name: Business
    x-displayName: Business
  - name: Industries
    x-displayName: Industries
  - name: Timezones
    x-displayName: Timezones
  - name: Callbacks
    x-displayName: Callbacks
  - name: Connected Apps
    x-displayName: Connected Apps
  - name: Connections
    x-displayName: Connections
  - name: Directories
    x-displayName: Directories
  - name: Environments
    x-displayName: Environments
  - name: Environment variables
    x-displayName: Environment variables
  - name: Feature Flags
    x-displayName: Feature Flags
  - name: Identities
    x-displayName: Identities
  - name: Organizations
    x-displayName: Organizations
  - name: MFA
    x-displayName: MFA
  - name: Permissions
    x-displayName: Permissions
  - name: Properties
    x-displayName: Properties
  - name: Property Categories
    x-displayName: Property Categories
  - name: Roles
    x-displayName: Roles
  - name: Search
    x-displayName: Search
  - name: Subscribers
    x-displayName: Subscribers
  - name: Users
    x-displayName: Users
  - name: Webhooks
    x-displayName: Webhooks
paths:
  /api/v1/api_keys:
    servers: []
    get:
      tags:
        - API Keys
      operationId: getApiKeys
      x-scope: read:api_keys
      summary: Get API keys
      description: |
        Returns a list of API keys.

        <div>
          <code>read:api_keys</code>
        </div>
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 50 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          description: The ID of the API key to start after.
          schema:
            type: string
            nullable: true
        - name: key_type
          in: query
          description: Filter by API key type (organization or user).
          schema:
            type: string
            enum:
              - organization
              - user
            nullable: true
        - name: status
          in: query
          description: Filter by API key status (active, inactive, revoked).
          schema:
            type: string
            enum:
              - active
              - inactive
              - revoked
            nullable: true
        - name: user_id
          in: query
          description: Filter by user ID to get API keys associated with a specific user.
          schema:
            type: string
            nullable: true
        - name: org_code
          in: query
          description: Filter by organization code to get API keys associated with a specific organization.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: API keys successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_api_keys_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - API Keys
      operationId: createApiKey
      x-scope: create:api_keys
      summary: Create API key
      description: |
        Create a new API key.

        <div>
          <code>create:api_keys</code>
        </div>
      requestBody:
        description: API key details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the API key.
                  type: string
                  nullable: false
                type:
                  description: The entity type that will use this API key.
                  type: string
                  enum:
                    - user
                    - organization
                    - environment
                  nullable: false
                api_id:
                  description: The ID of the API this key is associated with.
                  type: string
                  nullable: false
                scope_ids:
                  description: Array of scope IDs to associate with this API key.
                  type: array
                  items:
                    type: string
                  nullable: true
                user_id:
                  description: The ID of the user to associate with this API key (for user-level keys).
                  type: string
                  nullable: true
                org_code:
                  description: The organization code to associate with this API key (for organization-level keys).
                  type: string
                  nullable: true
              required:
                - name
                - api_id
                - type
      responses:
        '201':
          description: API key successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_api_key_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/api_keys/{key_id}:
    servers: []
    get:
      tags:
        - API Keys
      operationId: getApiKey
      x-scope: read:api_keys
      summary: Get API key
      description: |
        Retrieve API key details by ID.

        <div>
          <code>read:api_keys</code>
        </div>
      parameters:
        - name: key_id
          in: path
          description: The ID of the API key.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: API key successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_api_key_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - API Keys
      operationId: deleteApiKey
      x-scope: delete:api_keys
      summary: Delete API key
      description: |
        Delete an API key.

        <div>
          <code>delete:api_keys</code>
        </div>
      parameters:
        - name: key_id
          in: path
          description: The ID of the API key.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: API key successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    put:
      tags:
        - API Keys
      operationId: rotateApiKey
      x-scope: update:api_keys
      summary: Rotate API key
      description: |
        Rotate an API key to generate a new key while maintaining the same permissions and associations.

        <div>
          <code>update:api_keys</code>
        </div>
      parameters:
        - name: key_id
          in: path
          description: The ID of the API key to rotate.
          required: true
          schema:
            type: string
      responses:
        '201':
          description: API key successfully rotated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rotate_api_key_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/api_keys/verify:
    servers: []
    post:
      tags:
        - API Keys
      operationId: verifyApiKey
      summary: Verify API key
      description: |
        Verify an API key (public endpoint, no authentication required).
      requestBody:
        description: API key verification details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                api_key:
                  description: The API key to verify.
                  type: string
                  nullable: false
              required:
                - api_key
      responses:
        '200':
          description: API key verification result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/verify_api_key_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis:
    servers: []
    get:
      tags:
        - APIs
      operationId: getAPIs
      x-scope: read:apis
      summary: Get APIs
      description: |
        Returns a list of your APIs. The APIs are returned sorted by name.

        <div>
          <code>read:apis</code>
        </div>
      parameters:
        - name: expand
          in: query
          description: 'Additional data to include in the response. Allowed value: "scopes".'
          required: false
          schema:
            type: string
            nullable: true
            enum:
              - scopes
      responses:
        '200':
          description: A list of APIs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_apis_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - APIs
      operationId: addAPIs
      x-scope: create:apis
      summary: Create API
      description: |
        Register a new API. For more information read [Register and manage APIs](https://docs.kinde.com/developer-tools/your-apis/register-manage-apis/).

        <div>
          <code>create:apis</code>
        </div>
      externalDocs:
        url: https://docs.kinde.com/developer-tools/your-apis/register-manage-apis
        description: Register and manage APIs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: The name of the API. (1-64 characters).
                  example: Example API
                audience:
                  type: string
                  description: A unique identifier for the API - commonly the URL. This value will be used as the `audience` parameter in authorization claims. (1-64 characters)
                  example: https://api.example.com
              required:
                - name
                - audience
      responses:
        '200':
          description: APIs successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_apis_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis/{api_id}:
    servers: []
    parameters:
      - $ref: '#/components/parameters/api_id'
    get:
      tags:
        - APIs
      operationId: getAPI
      x-scope: read:apis
      summary: Get API
      description: |
        Retrieve API details by ID.

        <div>
          <code>read:apis</code>
        </div>
      responses:
        '200':
          description: API successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_api_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - APIs
      operationId: deleteAPI
      x-scope: delete:apis
      summary: Delete API
      description: |
        Delete an API you previously created.

        <div>
          <code>delete:apis</code>
        </div>
      responses:
        '200':
          description: API successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete_api_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis/{api_id}/scopes:
    servers: []
    get:
      tags:
        - APIs
      operationId: getAPIScopes
      x-scope: read:api_scopes
      summary: Get API scopes
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
      description: |
        Retrieve API scopes by API ID.

        <div>
          <code>read:api_scopes</code>
        </div>
      responses:
        '200':
          description: API scopes successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_api_scopes_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - APIs
      operationId: addAPIScope
      x-scope: create:api_scopes
      summary: Create API scope
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
      description: |
        Create a new API scope.

        <div>
          <code>create:api_scopes</code>
        </div>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: The key reference for the scope (1-64 characters, no white space).
                  example: read:logs
                description:
                  type: string
                  description: Description of the api scope purpose.
                  example: Scope for reading logs.
              required:
                - key
      responses:
        '200':
          description: API scopes successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_api_scopes_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis/{api_id}/scopes/{scope_id}:
    servers: []
    get:
      tags:
        - APIs
      operationId: getAPIScope
      summary: Get API scope
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Retrieve API scope by API ID.

        <div>
          <code>read:api_scopes</code>
        </div>
      responses:
        '200':
          description: API scope successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_api_scope_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - APIs
      operationId: updateAPIScope
      summary: Update API scope
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Update an API scope.

        <div>
          <code>update:api_scopes</code>
        </div>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  type: string
                  description: Description of the api scope purpose.
                  example: Scope for reading logs.
      responses:
        '200':
          description: API scope successfully updated
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - APIs
      operationId: deleteAPIScope
      summary: Delete API scope
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Delete an API scope you previously created.

        <div>
          <code>delete:apis_scopes</code>
        </div>
      responses:
        '200':
          description: API scope successfully deleted.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis/{api_id}/applications:
    servers: []
    parameters:
      - $ref: '#/components/parameters/api_id'
    patch:
      tags:
        - APIs
      operationId: updateAPIApplications
      summary: Authorize API applications
      description: |
        Authorize applications to be allowed to request access tokens for an API

        <div>
          <code>update:apis</code>
        </div>
      requestBody:
        description: The applications you want to authorize.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - applications
              properties:
                applications:
                  type: array
                  items:
                    type: object
                    required:
                      - id
                    properties:
                      id:
                        description: The application's Client ID.
                        type: string
                        example: d2db282d6214242b3b145c123f0c123
                      operation:
                        description: Optional operation, set to 'delete' to revoke authorization for the application. If not set, the application will be authorized.
                        type: string
                        example: delete
      responses:
        '200':
          description: Authorized applications updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/authorize_app_api_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/apis/{api_id}/applications/{application_id}/scopes/{scope_id}:
    servers: []
    post:
      tags:
        - APIs
      operationId: addAPIApplicationScope
      summary: Add scope to API application
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: application_id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
            nullable: false
            example: 7643b487c97545aab79257fd13a1085a
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Add a scope to an API application.

        <div>
          <code>create:api_application_scopes</code>
        </div>
      responses:
        '200':
          description: API scope successfully added to API application
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - APIs
      operationId: deleteAPIApplicationScope
      summary: Delete API application scope
      parameters:
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: application_id
          in: path
          description: Application ID
          required: true
          schema:
            type: string
            nullable: false
            example: 7643b487c97545aab79257fd13a1085a
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Delete an API application scope you previously created.

        <div>
          <code>delete:apis_application_scopes</code>
        </div>
      responses:
        '200':
          description: API scope successfully deleted.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications:
    servers: []
    get:
      tags:
        - Applications
      operationId: getApplications
      x-scope: read:applications
      summary: Get applications
      description: |
        Get a list of applications / clients.

        <div>
          <code>read:applications</code>
        </div>
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: A successful response with a list of applications or an empty list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_applications_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Applications
      operationId: createApplication
      x-scope: create:applications
      summary: Create application
      description: |
        Create a new client.

        <div>
          <code>create:applications</code>
        </div>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The application's name.
                  type: string
                  example: React Native app
                type:
                  description: The application's type. Use `reg` for regular server rendered applications, `spa` for single-page applications, `m2m` for machine-to-machine applications, and `device` for devices and IoT.
                  type: string
                  enum:
                    - reg
                    - spa
                    - m2m
                    - device
                org_code:
                  description: Scope an M2M application to an org (Plus plan required).
                  type: string
                  example: org_1234567890abcdef
                  nullable: true
              required:
                - name
                - type
      responses:
        '201':
          description: Application successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_application_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}:
    servers: []
    get:
      tags:
        - Applications
      operationId: getApplication
      summary: Get application
      description: |
        Gets an application given the application's ID.

        <div>
          <code>read:applications</code>
        </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
            nullable: false
            example: 20bbffaa4c5e492a962273039d4ae18b
      responses:
        '200':
          description: Application successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_application_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Applications
      operationId: updateApplication
      summary: Update Application
      description: |
        Updates a client's settings. For more information, read [Applications in Kinde](https://docs.kinde.com/build/applications/about-applications)

        <div>
          <code>update:applications</code>
        </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
            example: 20bbffaa4c5e492a962273039d4ae18b
      requestBody:
        description: Application details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The application's name.
                  type: string
                language_key:
                  description: The application's language key.
                  type: string
                logout_uris:
                  description: The application's logout uris.
                  type: array
                  items:
                    type: string
                redirect_uris:
                  description: The application's redirect uris.
                  type: array
                  items:
                    type: string
                login_uri:
                  description: The default login route for resolving session issues.
                  type: string
                homepage_uri:
                  description: The homepage link to your application.
                  type: string
      responses:
        '200':
          description: Application successfully updated.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Applications
      operationId: deleteApplication
      summary: Delete application
      description: |
        Delete a client / application.

        <div>
          <code>delete:applications</code>
        </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
            example: 20bbffaa4c5e492a962273039d4ae18b
      responses:
        '200':
          description: Application successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}/connections:
    servers: []
    get:
      tags:
        - Applications
      operationId: GetApplicationConnections
      description: |
        Gets all connections for an application.

        <div>
          <code>read:application_connections</code>
        </div>
      summary: Get connections
      parameters:
        - name: application_id
          in: path
          description: The identifier/client ID for the application.
          required: true
          schema:
            type: string
            nullable: false
            example: 20bbffaa4c5e492a962273039d4ae18b
      responses:
        '200':
          description: Application connections successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_connections_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}/connections/{connection_id}:
    servers: []
    post:
      tags:
        - Applications
      operationId: EnableConnection
      summary: Enable connection
      description: |
        Enable an auth connection for an application.

        <div>
          <code>create:application_connections</code>
        </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier/client ID for the application.
          required: true
          schema:
            type: string
            example: 20bbffaa4c5e492a962273039d4ae18b
        - name: connection_id
          in: path
          description: The identifier for the connection.
          required: true
          schema:
            type: string
            example: conn_0192c16abb53b44277e597d31877ba5b
      responses:
        '200':
          description: Connection successfully enabled.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Applications
      operationId: RemoveConnection
      summary: Remove connection
      description: |
        Turn off an auth connection for an application

        <div>
          <code>delete:application_connections</code>
        </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier/client ID for the application.
          required: true
          schema:
            type: string
            example: 20bbffaa4c5e492a962273039d4ae18b
        - name: connection_id
          in: path
          description: The identifier for the connection.
          required: true
          schema:
            type: string
            example: conn_0192c16abb53b44277e597d31877ba5b
      responses:
        '200':
          description: Connection successfully removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}/properties:
    servers: []
    parameters:
      - $ref: '#/components/parameters/application_id'
    get:
      tags:
        - Applications
      operationId: getApplicationPropertyValues
      summary: Get property values
      description: |
        Gets properties for an application by client ID.

        <div>
          <code>read:application_properties</code>
        </div>
      responses:
        '200':
          description: Properties successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_property_values_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}/properties/{property_key}:
    servers: []
    parameters:
      - $ref: '#/components/parameters/application_id'
      - $ref: '#/components/parameters/property_key'
    put:
      tags:
        - Applications
      operationId: updateApplicationsProperty
      summary: Update property
      description: |
        Update application property value.

        <div>
          <code>update:application_properties</code>
        </div>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  oneOf:
                    - type: string
                    - type: boolean
                  description: The new value for the property
                  example: Some new value
              required:
                - value
      responses:
        '200':
          description: Property successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{application_id}/tokens:
    servers: []
    patch:
      tags:
        - Applications
      operationId: updateApplicationTokens
      summary: Update application tokens
      description: |
        Configure tokens for an application.
          <div>
            <code>update:application_tokens</code>
          </div>
      parameters:
        - name: application_id
          in: path
          description: The identifier/client ID for the application.
          required: true
          schema:
            type: string
            example: 20bbffaa4c5e492a962273039d4ae18b
      requestBody:
        description: Application tokens.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                access_token_lifetime:
                  description: The lifetime of an access token in seconds.
                  type: integer
                  example: 3600
                refresh_token_lifetime:
                  description: The lifetime of a refresh token in seconds.
                  type: integer
                  example: 86400
                id_token_lifetime:
                  description: The lifetime of an ID token in seconds.
                  type: integer
                  example: 3600
                authenticated_session_lifetime:
                  description: The lifetime of an authenticated session in seconds.
                  type: integer
                  example: 86400
                is_hasura_mapping_enabled:
                  description: Enable or disable Hasura mapping.
                  type: boolean
                  example: true
      responses:
        '200':
          description: Application tokens successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/billing/entitlements:
    servers: []
    get:
      tags:
        - Billing Entitlements
      operationId: getBillingEntitlements
      x-scope: read:billing_entitlements
      description: |
        Returns all the entitlements a billing customer currently has access to

        <div>
          <code>read:billing_entitlements</code>
        </div>
      summary: Get billing entitlements
      parameters:
        - name: page_size
          in: query
          required: false
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          required: false
          description: The ID of the billing entitlement to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          required: false
          description: The ID of the billing entitlement to end before.
          schema:
            type: string
            nullable: true
        - name: customer_id
          in: query
          description: The ID of the billing customer to retrieve entitlements for
          required: true
          schema:
            type: string
            nullable: false
        - name: max_value
          in: query
          description: When the maximum limit of an entitlement is null, this value is returned as the maximum limit
          schema:
            type: string
            nullable: true
        - name: expand
          in: query
          description: 'Additional plan data to include in the response. Allowed value: "plans".'
          required: false
          schema:
            type: string
            nullable: true
            enum:
              - plans
      responses:
        '200':
          description: Billing entitlements successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_billing_entitlements_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_billing_entitlements_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/billing/agreements:
    servers: []
    get:
      tags:
        - Billing Agreements
      operationId: getBillingAgreements
      description: |
        Returns all the agreements a billing customer currently has access to

        <div>
          <code>read:billing_agreements</code>
        </div>
      summary: Get billing agreements
      parameters:
        - name: page_size
          in: query
          required: false
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          required: false
          description: The ID of the billing agreement to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          required: false
          description: The ID of the billing agreement to end before.
          schema:
            type: string
            nullable: true
        - name: customer_id
          in: query
          description: The ID of the billing customer to retrieve agreements for
          required: true
          schema:
            type: string
            nullable: false
          example: customer_0195ac80a14c2ca2cec97d026d864de0
        - name: feature_code
          in: query
          required: false
          description: The feature code to filter by agreements only containing that feature
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Billing agreements successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_billing_agreements_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_billing_agreements_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Billing Agreements
      operationId: createBillingAgreement
      description: |
        Creates a new billing agreement based on the plan code passed, and cancels the customer's existing agreements

        <div>
          <code>create:billing_agreements</code>
        </div>
      summary: Create billing agreement
      requestBody:
        description: New agreement request values
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - customer_id
                - plan_code
              properties:
                customer_id:
                  description: The ID of the billing customer to create a new agreement for
                  type: string
                  example: customer_0195ac80a14c2ca2cec97d026d864de0
                plan_code:
                  description: The code of the billing plan the new agreement will be based on
                  type: string
                  example: pro
                is_invoice_now:
                  type: boolean
                  description: Generate a final invoice for any un-invoiced metered usage.
                  example: true
                is_prorate:
                  type: boolean
                  description: Generate a proration invoice item that credits remaining unused features.
                  example: true
      responses:
        '200':
          description: Billing agreement successfully changed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/billing/meter_usage:
    servers: []
    post:
      tags:
        - Billing Meter Usage
      operationId: createMeterUsageRecord
      summary: Create meter usage record
      description: |
        Create a new meter usage record

        <div>
          <code>create:meter_usage</code>
        </div>
      requestBody:
        description: Meter usage record
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - customer_agreement_id
                - billing_feature_code
                - meter_value
              properties:
                customer_agreement_id:
                  description: The billing agreement against which to record usage
                  type: string
                  example: agreement_0195ac80a14c2ca2cec97d026d864de0
                billing_feature_code:
                  description: The code of the feature within the agreement against which to record usage
                  type: string
                  example: pro_gym
                meter_value:
                  description: The value of usage to record
                  type: string
                  example: pro_gym
                meter_usage_timestamp:
                  type: string
                  format: date-time
                  description: The date and time the usage needs to be recorded for (defaults to current date/time)
                  example: '2024-11-18T13:32:03+11'
                meter_type_code:
                  type: string
                  enum:
                    - absolute
                    - delta
                  description: Absolutes overrides the current usage
      responses:
        '200':
          description: Meter usage record successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_meter_usage_record_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/business:
    servers: []
    get:
      tags:
        - Business
      operationId: getBusiness
      x-scope: read:businesses
      summary: Get business
      description: |
        Get your business details.

        <div>
          <code>read:businesses</code>
        </div>
      responses:
        '200':
          description: Your business details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_business_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Business
      operationId: updateBusiness
      x-scope: update:businesses
      summary: Update business
      description: |
        Update your business details.

        <div>
          <code>update:businesses</code>
        </div>
      requestBody:
        description: The business details to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                business_name:
                  type: string
                  description: The name of the business.
                  example: Tailsforce Ltd
                  nullable: true
                email:
                  type: string
                  description: The email address of the business.
                  example: sally@example.com
                  nullable: true
                industry_key:
                  type: string
                  description: The key of the industry of your business. Can be retrieved from the /industries endpoint.
                  example: construction
                  nullable: true
                is_click_wrap:
                  description: Whether the business is using clickwrap agreements.
                  type: boolean
                  example: false
                  nullable: true
                is_show_kinde_branding:
                  description: Whether the business is showing Kinde branding. Requires a paid plan.
                  type: boolean
                  example: true
                  nullable: true
                kinde_perk_code:
                  description: The Kinde perk code for the business.
                  type: string
                  nullable: true
                phone:
                  description: The phone number of the business.
                  type: string
                  example: 123-456-7890
                  nullable: true
                privacy_url:
                  description: The URL to the business's privacy policy.
                  type: string
                  example: https://example.com/privacy
                  nullable: true
                terms_url:
                  description: The URL to the business's terms of service.
                  type: string
                  example: https://example.com/terms
                  nullable: true
                timezone_key:
                  description: The key of the timezone of your business. Can be retrieved from the /timezones endpoint.
                  type: string
                  example: los_angeles_pacific_standard_time
                  nullable: true
      responses:
        '200':
          description: Business successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/industries:
    servers: []
    get:
      tags:
        - Industries
      operationId: getIndustries
      summary: Get industries
      description: |
        Get a list of industries and associated industry keys.

        <div>
          <code>read:industries</code>
        </div>
      responses:
        '200':
          description: A list of industries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_industries_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/timezones:
    servers: []
    get:
      tags:
        - Timezones
      operationId: getTimezones
      summary: Get timezones
      description: |
        Get a list of timezones and associated timezone keys.

        <div>
          <code>read:timezones</code>
        </div>
      responses:
        '200':
          description: A list of timezones.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_timezones_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{app_id}/auth_redirect_urls:
    servers: []
    get:
      tags:
        - Callbacks
      operationId: getCallbackURLs
      x-scope: read:applications_redirect_uris
      description: |
        Returns an application's redirect callback URLs.

        <div>
          <code>read:applications_redirect_uris</code>
        </div>
      summary: List Callback URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Callback URLs successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/redirect_callback_urls'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/redirect_callback_urls'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Callbacks
      operationId: addRedirectCallbackURLs
      x-scope: create:applications_redirect_uris
      description: |
        Add additional redirect callback URLs.

        <div>
          <code>create:applications_redirect_uris</code>
        </div>
      summary: Add Redirect Callback URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      requestBody:
        description: Callback details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                urls:
                  type: array
                  items:
                    type: string
                  description: Array of callback urls.
      responses:
        '200':
          description: Callbacks successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    put:
      tags:
        - Callbacks
      operationId: replaceRedirectCallbackURLs
      description: |
        Replace all redirect callback URLs.

        <div>
          <code>update:applications_redirect_uris</code>
        </div>
      summary: Replace Redirect Callback URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      requestBody:
        description: Callback details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                urls:
                  type: array
                  items:
                    type: string
                  description: Array of callback urls.
      responses:
        '200':
          description: Callbacks successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Callbacks
      operationId: deleteCallbackURLs
      description: |
        Delete callback URLs.

        <div>
          <code>delete:applications_redirect_uris</code>
        </div>
      summary: Delete Callback URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
        - name: urls
          in: query
          description: Urls to delete, comma separated and url encoded.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Callback URLs successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/applications/{app_id}/auth_logout_urls:
    servers: []
    get:
      tags:
        - Callbacks
      operationId: getLogoutURLs
      description: |
        Returns an application's logout redirect URLs.

        <div>
          <code>read:application_logout_uris</code>
        </div>
      summary: List logout URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Logout URLs successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/logout_redirect_urls'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Callbacks
      operationId: addLogoutRedirectURLs
      description: |
        Add additional logout redirect URLs.

        <div>
          <code>create:application_logout_uris</code>
        </div>
      summary: Add logout redirect URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      requestBody:
        description: Callback details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                urls:
                  type: array
                  items:
                    type: string
                  description: Array of logout urls.
      responses:
        '200':
          description: Logout URLs successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    put:
      tags:
        - Callbacks
      operationId: replaceLogoutRedirectURLs
      description: |
        Replace all logout redirect URLs.

        <div>
          <code>update:application_logout_uris</code>
        </div>
      summary: Replace logout redirect URls
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
      requestBody:
        description: Callback details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                urls:
                  type: array
                  items:
                    type: string
                  description: Array of logout urls.
      responses:
        '200':
          description: Logout URLs successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Callbacks
      operationId: deleteLogoutURLs
      description: |
        Delete logout URLs.

        <div>
          <code>delete:application_logout_uris</code>
        </div>
      summary: Delete Logout URLs
      parameters:
        - name: app_id
          in: path
          description: The identifier for the application.
          required: true
          schema:
            type: string
        - name: urls
          in: query
          description: Urls to delete, comma separated and url encoded.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Logout URLs successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/connected_apps/auth_url:
    servers: []
    get:
      tags:
        - Connected Apps
      operationId: GetConnectedAppAuthUrl
      x-scope: read:connected_apps
      description: |
        Get a URL that authenticates and authorizes a user to a third-party connected app.

        <div>
          <code>read:connected_apps</code>
        </div>
      summary: Get Connected App URL
      parameters:
        - name: key_code_ref
          in: query
          description: The unique key code reference of the connected app to authenticate against.
          schema:
            type: string
            nullable: false
          required: true
        - name: user_id
          in: query
          description: The id of the user that needs to authenticate to the third-party connected app.
          schema:
            type: string
            nullable: false
          required: false
        - name: org_code
          in: query
          description: The code of the Kinde organization that needs to authenticate to the third-party connected app.
          schema:
            type: string
            nullable: false
          required: false
        - name: override_callback_url
          in: query
          description: A URL that overrides the default callback URL setup in your connected app configuration
          schema:
            type: string
            nullable: false
          required: false
      responses:
        '200':
          description: A URL that can be used to authenticate and a session id to identify this authentication session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connected_apps_auth_url'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/connected_apps_auth_url'
        '400':
          description: Error retrieving connected app auth url.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '404':
          description: Error retrieving connected app auth url.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/connected_apps/token:
    servers: []
    get:
      tags:
        - Connected Apps
      operationId: GetConnectedAppToken
      x-scope: read:connected_apps
      description: |
        Get an access token that can be used to call the third-party provider linked to the connected app.

        <div>
          <code>read:connected_apps</code>
        </div>
      summary: Get Connected App Token
      parameters:
        - name: session_id
          in: query
          description: The unique sesssion id representing the login session of a user.
          schema:
            type: string
            nullable: false
          required: true
      responses:
        '200':
          description: An access token that can be used to query a third-party provider, as well as the token's expiry time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connected_apps_access_token'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/connected_apps_access_token'
        '400':
          description: The session id provided points to an invalid session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/connected_apps/revoke:
    servers: []
    post:
      tags:
        - Connected Apps
      operationId: RevokeConnectedAppToken
      description: |
        Revoke the tokens linked to the connected app session.

        <div>
          <code>create:connected_apps</code>
        </div>
      summary: Revoke Connected App Token
      parameters:
        - name: session_id
          in: query
          description: The unique sesssion id representing the login session of a user.
          schema:
            type: string
            nullable: false
          required: true
      responses:
        '200':
          description: An access token that can be used to query a third-party provider, as well as the token's expiry time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '405':
          description: Invalid HTTP method used.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/connections:
    servers: []
    get:
      tags:
        - Connections
      operationId: GetConnections
      x-scope: read:connections
      description: |
        Returns a list of authentication connections. Optionally you can filter this by a home realm domain.

        <div>
          <code>read:connections</code>
        </div>
      summary: Get connections
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: home_realm_domain
          in: query
          description: Filter the results by the home realm domain.
          schema:
            example: myapp.com
            type: string
            nullable: true
        - name: starting_after
          in: query
          description: The ID of the connection to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          description: The ID of the connection to end before.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Connections successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_connections_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_connections_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Connections
      operationId: CreateConnection
      x-scope: create:connections
      description: |
        Create Connection.

        <div>
          <code>create:connections</code>
        </div>
      summary: Create Connection
      requestBody:
        description: Connection details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The internal name of the connection.
                  type: string
                  nullable: false
                display_name:
                  description: The public facing name of the connection.
                  type: string
                  nullable: false
                strategy:
                  description: The identity provider identifier for the connection.
                  type: string
                  enum:
                    - oauth2:apple
                    - oauth2:azure_ad
                    - oauth2:bitbucket
                    - oauth2:discord
                    - oauth2:facebook
                    - oauth2:github
                    - oauth2:gitlab
                    - oauth2:google
                    - oauth2:linkedin
                    - oauth2:microsoft
                    - oauth2:patreon
                    - oauth2:slack
                    - oauth2:stripe
                    - oauth2:twitch
                    - oauth2:twitter
                    - oauth2:xero
                    - saml:custom
                    - saml:cloudflare
                    - saml:okta
                    - saml:microsoft
                    - saml:google
                    - wsfed:azure_ad
                  nullable: false
                enabled_applications:
                  description: Client IDs of applications in which this connection is to be enabled.
                  type: array
                  items:
                    type: string
                organization_code:
                  description: Enterprise connections only - the code for organization that manages this connection.
                  type: string
                  nullable: true
                  example: org_80581732fbe
                options:
                  oneOf:
                    - type: object
                      description: Social connection options (e.g., Google SSO).
                      properties:
                        client_id:
                          type: string
                          description: OAuth client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: OAuth client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: Azure AD connection options.
                      properties:
                        client_id:
                          type: string
                          description: Client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: Client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to limit authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        entra_id_domain:
                          type: string
                          description: Domain for Entra ID.
                          example: kinde.com
                        is_use_common_endpoint:
                          type: boolean
                          description: Use https://login.windows.net/common instead of a default endpoint.
                          example: true
                        is_sync_user_profile_on_login:
                          type: boolean
                          description: Sync user profile data with IDP.
                          example: true
                        is_retrieve_provider_user_groups:
                          type: boolean
                          description: Include user group info from MS Entra ID.
                          example: true
                        is_extended_attributes_required:
                          type: boolean
                          description: Include additional user profile information.
                          example: true
                        is_auto_join_organization_enabled:
                          type: boolean
                          description: Users automatically join organization when using this connection.
                          example: true
                        is_create_missing_user:
                          type: boolean
                          description: Create a user record in Kinde if the user signing in does not exist.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: SAML connection options (e.g., Cloudflare SAML).
                      properties:
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to restrict authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        saml_entity_id:
                          type: string
                          description: SAML Entity ID.
                          example: https://kinde.com
                        saml_idp_metadata_url:
                          type: string
                          description: URL for the IdP metadata.
                          example: https://kinde.com/saml/metadata
                        saml_sign_in_url:
                          type: string
                          description: Override the default SSO endpoint with a URL your IdP recognizes.
                          example: https://kinde.com/saml/signin
                        sign_request_algorithm:
                          type: string
                          description: Algorithm used to sign SAML requests.
                          enum:
                            - RSA-SHA256
                            - RSA-SHA1
                          example: RSA-SHA256
                        protocol_binding:
                          type: string
                          description: Protocol binding used to send SAML requests.
                          enum:
                            - HTTP-REDIRECT
                            - HTTP-POST
                          example: HTTP-REDIRECT
                        name_id_format:
                          type: string
                          description: Format for the Name ID used to identify users in SAML responses.
                          enum:
                            - Persistent
                            - Transient
                            - Email address
                            - Unspecified
                          example: Persistent
                        saml_email_key_attr:
                          type: string
                          description: Attribute key for the user's email.
                          example: email
                        saml_user_id_key_attr:
                          type: string
                          description: Attribute key for the user's ID.
                          example: user_id
                        saml_first_name_key_attr:
                          type: string
                          description: Attribute key for the user's first name.
                          example: given_name
                        saml_last_name_key_attr:
                          type: string
                          description: Attribute key for the user's last name.
                          example: family_name
                        is_create_missing_user:
                          type: boolean
                          description: Create user if they don't exist.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        saml_signing_certificate:
                          type: string
                          description: Certificate for signing SAML requests.
                          example: |-
                            -----BEGIN CERTIFICATE-----
                            MIIDdTCCAl2gAwIBAgIEUjZoyDANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVNhbiBGcmFuYzEXMBUGA1UECgwOQ2xv
                            -----END CERTIFICATE-----
                        saml_signing_private_key:
                          type: string
                          description: Private key associated with the signing certificate.
                          example: |-
                            -----BEGIN PRIVATE KEY-----
                            MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCy5+KLjTzF6tvl
                            -----END PRIVATE KEY-----
                        is_auto_join_organization_enabled:
                          type: boolean
                          description: Users automatically join organization when using this connection.
                          example: true
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
      responses:
        '201':
          description: Connection successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_connection_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/connections/{connection_id}:
    servers: []
    get:
      tags:
        - Connections
      operationId: GetConnection
      description: |
        Get Connection.

        <div>
          <code>read:connections</code>
        </div>
      summary: Get Connection
      parameters:
        - name: connection_id
          in: path
          description: The unique identifier for the connection.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Connection successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connection'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Connections
      operationId: UpdateConnection
      description: |
        Update Connection.

        <div>
          <code>update:connections</code>
        </div>
      summary: Update Connection
      parameters:
        - name: connection_id
          in: path
          description: The unique identifier for the connection.
          required: true
          schema:
            type: string
      requestBody:
        description: The fields of the connection to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The internal name of the connection.
                  type: string
                  nullable: false
                  example: ConnectionA
                display_name:
                  description: The public facing name of the connection.
                  type: string
                  nullable: false
                  example: Connection
                enabled_applications:
                  description: Client IDs of applications in which this connection is to be enabled.
                  type: array
                  example:
                    - c647dbe20f5944e28af97c9184fded22
                    - 20bbffaa4c5e492a962273039d4ae18b
                  items:
                    type: string
                options:
                  oneOf:
                    - type: object
                      description: Social connection options (e.g., Google SSO).
                      properties:
                        client_id:
                          type: string
                          description: OAuth client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: OAuth client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: Azure AD connection options.
                      properties:
                        client_id:
                          type: string
                          description: Client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: Client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to limit authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        entra_id_domain:
                          type: string
                          description: Domain for Entra ID.
                          example: kinde.com
                        is_use_common_endpoint:
                          type: boolean
                          description: Use https://login.windows.net/common instead of a default endpoint.
                          example: true
                        is_sync_user_profile_on_login:
                          type: boolean
                          description: Sync user profile data with IDP.
                          example: true
                        is_retrieve_provider_user_groups:
                          type: boolean
                          description: Include user group info from MS Entra ID.
                          example: true
                        is_extended_attributes_required:
                          type: boolean
                          description: Include additional user profile information.
                          example: true
                        is_create_missing_user:
                          type: boolean
                          description: Create users if they don't exist in the system.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: SAML connection options (e.g., Cloudflare SAML).
                      properties:
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to restrict authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        saml_entity_id:
                          type: string
                          description: SAML Entity ID.
                          example: https://kinde.com
                        saml_idp_metadata_url:
                          type: string
                          description: URL for the IdP metadata.
                          example: https://kinde.com/saml/metadata
                        saml_sign_in_url:
                          type: string
                          description: Override the default SSO endpoint with a URL your IdP recognizes.
                          example: https://kinde.com/saml/signin
                        sign_request_algorithm:
                          type: string
                          description: Algorithm used to sign SAML requests.
                          enum:
                            - RSA-SHA256
                            - RSA-SHA1
                          example: RSA-SHA256
                        protocol_binding:
                          type: string
                          description: Protocol binding used to send SAML requests.
                          enum:
                            - HTTP-REDIRECT
                            - HTTP-POST
                          example: HTTP-REDIRECT
                        name_id_format:
                          type: string
                          description: Format for the Name ID used to identify users in SAML responses.
                          enum:
                            - Persistent
                            - Transient
                            - Email address
                            - Unspecified
                          example: Persistent
                        saml_email_key_attr:
                          type: string
                          description: Attribute key for the user's email.
                          example: email
                        saml_user_id_key_attr:
                          type: string
                          description: Attribute key for the user's ID.
                          example: user_id
                        saml_first_name_key_attr:
                          type: string
                          description: Attribute key for the user's first name.
                          example: given_name
                        saml_last_name_key_attr:
                          type: string
                          description: Attribute key for the user's last name.
                          example: family_name
                        is_create_missing_user:
                          type: boolean
                          description: Create user if they don't exist.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        saml_signing_certificate:
                          type: string
                          description: Certificate for signing SAML requests.
                          example: |-
                            -----BEGIN CERTIFICATE-----
                            MIIDdTCCAl2gAwIBAgIEUjZoyDANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVNhbiBGcmFuYzEXMBUGA1UECgwOQ2xv
                            -----END CERTIFICATE-----
                        saml_signing_private_key:
                          type: string
                          description: Private key associated with the signing certificate.
                          example: |-
                            -----BEGIN PRIVATE KEY-----
                            MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCy5+KLjTzF6tvl
                            -----END PRIVATE KEY-----
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
      responses:
        '200':
          description: Connection successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    put:
      tags:
        - Connections
      operationId: ReplaceConnection
      description: |
        Replace Connection Config.

        <div>
          <code>update:connections</code>
        </div>
      summary: Replace Connection
      parameters:
        - name: connection_id
          in: path
          description: The unique identifier for the connection.
          required: true
          schema:
            type: string
      requestBody:
        description: The complete connection configuration to replace the existing one.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The internal name of the connection.
                  type: string
                  example: ConnectionA
                  nullable: false
                display_name:
                  description: The public-facing name of the connection.
                  type: string
                  example: Connection
                  nullable: false
                enabled_applications:
                  description: Client IDs of applications in which this connection is to be enabled.
                  type: array
                  items:
                    type: string
                  example:
                    - c647dbe20f5944e28af97c9184fded22
                    - 20bbffaa4c5e492a962273039d4ae18b
                options:
                  oneOf:
                    - type: object
                      description: Social connection options (e.g., Google SSO).
                      properties:
                        client_id:
                          type: string
                          description: OAuth client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: OAuth client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: Azure AD connection options.
                      properties:
                        client_id:
                          type: string
                          description: Client ID.
                          example: hji7db2146af332akfldfded22
                        client_secret:
                          type: string
                          description: Client secret.
                          example: 19fkjdalg521l23fassf3039d4ae18b
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to limit authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        entra_id_domain:
                          type: string
                          description: Domain for Entra ID.
                          example: kinde.com
                        is_use_common_endpoint:
                          type: boolean
                          description: Use https://login.windows.net/common instead of a default endpoint.
                          example: true
                        is_sync_user_profile_on_login:
                          type: boolean
                          description: Sync user profile data with IDP.
                          example: true
                        is_retrieve_provider_user_groups:
                          type: boolean
                          description: Include user group info from MS Entra ID.
                          example: true
                        is_extended_attributes_required:
                          type: boolean
                          description: Include additional user profile information.
                          example: true
                        is_create_missing_user:
                          type: boolean
                          description: Create a user record in Kinde if the user signing in does not exist.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
                    - type: object
                      description: SAML connection options (e.g., Cloudflare SAML).
                      properties:
                        home_realm_domains:
                          type: array
                          items:
                            type: string
                          description: List of domains to restrict authentication.
                          example:
                            - '@kinde.com'
                            - '@kinde.io'
                        saml_entity_id:
                          type: string
                          description: SAML Entity ID.
                          example: https://kinde.com
                        saml_idp_metadata_url:
                          type: string
                          description: URL for the IdP metadata.
                          example: https://kinde.com/saml/metadata
                        sign_request_algorithm:
                          type: string
                          description: Algorithm used to sign SAML requests.
                          enum:
                            - RSA-SHA256
                            - RSA-SHA1
                          example: RSA-SHA256
                        protocol_binding:
                          type: string
                          description: Protocol binding used to send SAML requests.
                          enum:
                            - HTTP-REDIRECT
                            - HTTP-POST
                          example: HTTP-REDIRECT
                        name_id_format:
                          type: string
                          description: Format for the Name ID used to identify users in SAML responses.
                          enum:
                            - Persistent
                            - Transient
                            - Email address
                            - Unspecified
                          example: Persistent
                        saml_email_key_attr:
                          type: string
                          description: Attribute key for the user's email.
                          example: email
                        saml_user_id_key_attr:
                          type: string
                          description: Attribute key for the user's ID.
                          example: user_id
                        saml_first_name_key_attr:
                          type: string
                          description: Attribute key for the user's first name.
                          example: given_name
                        saml_last_name_key_attr:
                          type: string
                          description: Attribute key for the user's last name.
                          example: family_name
                        is_create_missing_user:
                          type: boolean
                          description: Create user if they don't exist.
                          example: true
                        is_force_show_sso_button:
                          type: boolean
                          description: Force showing the SSO button for this connection.
                          example: false
                        upstream_params:
                          type: object
                          description: Additional upstream parameters to pass to the identity provider.
                          additionalProperties: true
                          example:
                            prompt:
                              value: select_account
                        saml_signing_certificate:
                          type: string
                          description: Certificate for signing SAML requests.
                          example: |-
                            -----BEGIN CERTIFICATE-----
                            MIIDdTCCAl2gAwIBAgIEUjZoyDANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVNhbiBGcmFuYzEXMBUGA1UECgwOQ2xv
                            -----END CERTIFICATE-----
                        saml_signing_private_key:
                          type: string
                          description: Private key associated with the signing certificate.
                          example: |-
                            -----BEGIN PRIVATE KEY-----
                            MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCy5+KLjTzF6tvl
                            -----END PRIVATE KEY-----
                        is_use_custom_domain:
                          type: boolean
                          description: Use custom domain callback URL.
                          example: true
                        is_trusted:
                          type: boolean
                          description: Trust this connection for account merging.
                          example: true
      responses:
        '200':
          description: Connection successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Connections
      operationId: deleteConnection
      description: |
        Delete connection.

        <div>
          <code>delete:connections</code>
        </div>
      summary: Delete Connection
      parameters:
        - name: connection_id
          in: path
          description: The identifier for the connection.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Connection successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/directories:
    servers: []
    get:
      tags:
        - Directories
      operationId: getDirectories
      summary: Get SCIM directories
      description: |
        Returns a list of SCIM directories for your organization.

        <div>
          <code>read:scim_directories</code>
        </div>
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 50 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          description: The ID of the directory to start after.
          schema:
            type: string
            nullable: true
        - name: organization_code
          in: query
          description: Filter by organization code to get directories for a specific organization.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: SCIM directories successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_directories_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Directories
      operationId: createDirectory
      summary: Create SCIM directory
      description: |
        Create a new SCIM directory for user and group synchronization.

        <div>
          <code>create:scim_directories</code>
        </div>
      externalDocs:
        url: https://docs.kinde.com/developer-tools/scim-provisioning/
        description: SCIM Provisioning
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                org_code:
                  type: string
                  description: The organization code to create the SCIM directory for.
                  example: org_1ccfb819462
                directory_name:
                  type: string
                  description: A descriptive name for the SCIM directory.
                  example: Production Directory
                provider_code:
                  type: string
                  description: The SCIM provider code to use for this directory.
                  enum:
                    - entra_id_azure_ad
                    - okta
                    - google_workspace
                    - custom_scim_v2
                    - cyberark
                    - jumpcloud
                    - onelogin
                    - pingfederate
                    - rippling
                  example: entra_id_azure_ad
              required:
                - org_code
                - directory_name
                - provider_code
      responses:
        '201':
          description: SCIM directory successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_directory_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
              examples:
                organization_required:
                  summary: Organization code required
                  value:
                    errors:
                      - code: ORGANIZATION_REQUIRED
                        message: Organization code is required
                        field: org_code
                directory_name_required:
                  summary: Directory name required
                  value:
                    errors:
                      - code: DIRECTORY_NAME_REQUIRED
                        message: Directory name is required
                        field: directory_name
                provider_code_required:
                  summary: Provider code required
                  value:
                    errors:
                      - code: PROVIDER_CODE_REQUIRED
                        message: Provider code is required
                        field: provider_code
                invalid_provider:
                  summary: Invalid provider code
                  value:
                    errors:
                      - code: INVALID_PROVIDER
                        message: Invalid or disabled provider code
                        field: provider_code
                organization_not_found:
                  summary: Organization not found
                  value:
                    errors:
                      - code: ORGANIZATION_NOT_FOUND
                        message: Organization not found
                        field: org_code
        '403':
          $ref: '#/components/responses/forbidden'
        '409':
          description: Conflict - Directory already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
              examples:
                directory_exists:
                  summary: Directory already exists
                  value:
                    errors:
                      - code: DIRECTORY_EXISTS
                        message: A SCIM directory already exists for this organization
                        field: org_code
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/directories/{directory_id}:
    servers: []
    parameters:
      - name: directory_id
        in: path
        description: The directory's ID.
        required: true
        schema:
          type: string
          example: directory_0192b1941f125645fa15bf28a662a0b3
    get:
      tags:
        - Directories
      operationId: getDirectory
      summary: Get SCIM directory
      description: |
        Retrieve SCIM directory details by ID.

        <div>
          <code>read:scim_directories</code>
        </div>
      responses:
        '200':
          description: SCIM directory successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_directory_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Directories
      operationId: updateDirectory
      summary: Update SCIM directory
      description: |
        Update SCIM directory configuration.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                directory_name:
                  type: string
                  description: A descriptive name for the SCIM directory.
                  example: Updated Production Directory
              required:
                - directory_name
      responses:
        '200':
          description: SCIM directory successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_directory_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Directories
      operationId: deleteDirectory
      summary: Delete SCIM directory
      description: |
        Delete a SCIM directory and all associated data.

        <div>
          <code>delete:scim_directories</code>
        </div>
      responses:
        '200':
          description: SCIM directory successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete_directory_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/environment:
    servers: []
    get:
      tags:
        - Environments
      operationId: getEnvironment
      x-scope: read:environments
      summary: Get environment
      description: |
        Gets the current environment.

        <div>
          <code>read:environments</code>
        </div>
      responses:
        '200':
          description: Environment successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_environment_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/environment/feature_flags:
    servers: []
    delete:
      tags:
        - Environments
      operationId: DeleteEnvironementFeatureFlagOverrides
      x-scope: delete:environment_feature_flags
      description: |
        Delete all environment feature flag overrides.

        <div>
          <code>delete:environment_feature_flags</code>
        </div>
      summary: Delete Environment Feature Flag Overrides
      responses:
        '200':
          description: Feature flag overrides deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    get:
      tags:
        - Environments
      operationId: GetEnvironementFeatureFlags
      x-scope: read:environment_feature_flags
      description: |
        Get environment feature flags.

        <div>
          <code>read:environment_feature_flags</code>
        </div>
      summary: List Environment Feature Flags
      responses:
        '200':
          description: Feature flags retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_environment_feature_flags_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_environment_feature_flags_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/environment/feature_flags/{feature_flag_key}:
    servers: []
    delete:
      tags:
        - Environments
      operationId: DeleteEnvironementFeatureFlagOverride
      description: |
        Delete environment feature flag override.

        <div>
          <code>delete:environment_feature_flags</code>
        </div>
      summary: Delete Environment Feature Flag Override
      parameters:
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Environments
      operationId: UpdateEnvironementFeatureFlagOverride
      description: |
        Update environment feature flag override.

        <div>
          <code>update:environment_feature_flags</code>
        </div>
      summary: Update Environment Feature Flag Override
      parameters:
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag.
          required: true
          schema:
            type: string
      requestBody:
        description: Flag details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  description: The flag override value.
                  type: string
                  nullable: false
              required:
                - value
      responses:
        '200':
          description: Feature flag override successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/environment/logos:
    servers: []
    get:
      tags:
        - Environments
      operationId: ReadLogo
      description: |
        Read environment logo details

        <div>
          <code>read:environments</code>
        </div>
      summary: Read logo details
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/read_env_logo_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/environment/logos/{type}:
    servers: []
    put:
      tags:
        - Environments
      operationId: AddLogo
      description: |
        Add environment logo

        <div>
          <code>update:environments</code>
        </div>
      summary: Add logo
      parameters:
        - name: type
          in: path
          description: The type of logo to add.
          required: true
          schema:
            type: string
            example: dark
            enum:
              - dark
              - light
      requestBody:
        description: Logo details.
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - logo
              properties:
                logo:
                  type: string
                  format: binary
                  description: The logo file to upload.
      responses:
        '200':
          description: Logo successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Environments
      operationId: DeleteLogo
      description: |
        Delete environment logo

        <div>
          <code>update:environments</code>
        </div>
      summary: Delete logo
      parameters:
        - name: type
          in: path
          description: The type of logo to delete.
          required: true
          schema:
            type: string
            example: dark
            enum:
              - dark
              - light
      responses:
        '200':
          description: Logo successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '204':
          description: No logo found to delete
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/environment_variables:
    servers: []
    get:
      tags:
        - Environment variables
      operationId: getEnvironmentVariables
      x-scope: read:environment_variables
      summary: Get environment variables
      description: |
        Get environment variables. This feature is in beta and admin UI is not yet available.

        <div>
          <code>read:environment_variables</code>
        </div>
      responses:
        '200':
          description: A successful response with a list of environment variables or an empty list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_environment_variables_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Environment variables
      operationId: createEnvironmentVariable
      x-scope: create:environment_variables
      summary: Create environment variable
      description: |
        Create a new environment variable. This feature is in beta and admin UI is not yet available.

        <div>
          <code>create:environment_variables</code>
        </div>
      requestBody:
        description: The environment variable details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: The name of the environment variable (max 128 characters).
                  example: MY_API_KEY
                value:
                  type: string
                  description: The value of the new environment variable (max 2048 characters).
                  example: some-secret-value
                is_secret:
                  type: boolean
                  description: Whether the environment variable is sensitive. Secrets are not-readable by you or your team after creation.
                  example: false
              required:
                - key
                - value
      responses:
        '201':
          description: Environment variable successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_environment_variable_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/environment_variables/{variable_id}:
    servers: []
    parameters:
      - $ref: '#/components/parameters/variable_id'
    get:
      tags:
        - Environment variables
      operationId: getEnvironmentVariable
      x-scope: read:environment_variables
      summary: Get environment variable
      description: |
        Retrieve environment variable details by ID. This feature is in beta and admin UI is not yet available.

        <div>
          <code>read:environment_variables</code>
        </div>
      responses:
        '200':
          description: Environment variable successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_environment_variable_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Environment variables
      operationId: updateEnvironmentVariable
      x-scope: update:environment_variables
      summary: Update environment variable
      description: |
        Update an environment variable you previously created. This feature is in beta and admin UI is not yet available.

        <div>
          <code>update:environment_variables</code>
        </div>
      requestBody:
        description: The new details for the environment variable
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                key:
                  type: string
                  description: The key to update.
                  example: MY_API_KEY
                value:
                  type: string
                  description: The new value for the environment variable.
                  example: new-secret-value
                is_secret:
                  type: boolean
                  description: Whether the environment variable is sensitive. Secret variables are not-readable by you or your team after creation.
      responses:
        '200':
          description: Environment variable successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_environment_variable_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Environment variables
      operationId: deleteEnvironmentVariable
      x-scope: delete:environment_variables
      summary: Delete environment variable
      description: |
        Delete an environment variable you previously created. This feature is in beta and admin UI is not yet available.

        <div>
          <code>delete:environment_variables</code>
        </div>
      responses:
        '200':
          description: Environment variable successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete_environment_variable_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/feature_flags:
    servers: []
    post:
      tags:
        - Feature Flags
      operationId: CreateFeatureFlag
      x-scope: create:feature_flags
      description: |
        Create feature flag.

        <div>
          <code>create:feature_flags</code>
        </div>
      summary: Create Feature Flag
      requestBody:
        description: Flag details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the flag.
                  type: string
                  nullable: false
                description:
                  description: Description of the flag purpose.
                  type: string
                  nullable: false
                key:
                  description: The flag identifier to use in code.
                  type: string
                  nullable: false
                type:
                  description: The variable type.
                  type: string
                  enum:
                    - str
                    - int
                    - bool
                  nullable: false
                allow_override_level:
                  description: Allow the flag to be overridden at a different level.
                  type: string
                  enum:
                    - env
                    - org
                    - usr
                  nullable: false
                default_value:
                  description: Default value for the flag used by environments and organizations.
                  type: string
                  nullable: false
              required:
                - name
                - key
                - type
                - default_value
      responses:
        '201':
          description: Feature flag successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/feature_flags/{feature_flag_key}:
    servers: []
    delete:
      tags:
        - Feature Flags
      operationId: DeleteFeatureFlag
      x-scope: delete:feature_flags
      description: |
        Delete feature flag

        <div>
          <code>delete:feature_flags</code>
        </div>
      summary: Delete Feature Flag
      parameters:
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    put:
      tags:
        - Feature Flags
      operationId: UpdateFeatureFlag
      x-scope: update:feature_flags
      description: |
        Update feature flag.

        <div>
          <code>update:feature_flags</code>
        </div>
      summary: Replace Feature Flag
      parameters:
        - name: feature_flag_key
          in: path
          description: The key identifier for the feature flag.
          required: true
          schema:
            type: string
        - name: name
          in: query
          description: The name of the flag.
          schema:
            type: string
            nullable: false
          required: true
        - name: description
          in: query
          description: Description of the flag purpose.
          schema:
            type: string
            nullable: false
          required: true
        - name: type
          in: query
          description: The variable type
          schema:
            type: string
            enum:
              - str
              - int
              - bool
            nullable: false
          required: true
        - name: allow_override_level
          in: query
          description: Allow the flag to be overridden at a different level.
          schema:
            type: string
            enum:
              - env
              - org
            nullable: false
          required: true
        - name: default_value
          in: query
          description: Default value for the flag used by environments and organizations.
          schema:
            type: string
            nullable: false
          required: true
      responses:
        '200':
          description: Feature flag successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/identities/{identity_id}:
    servers: []
    get:
      tags:
        - Identities
      operationId: GetIdentity
      x-scope: read:identities
      description: |
        Returns an identity by ID

        <div>
          <code>read:identities</code>
        </div>
      summary: Get identity
      parameters:
        - name: identity_id
          in: path
          description: The unique identifier for the identity.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Identity successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/identity'
            application/json:
              schema:
                $ref: '#/components/schemas/identity'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Identities
      operationId: UpdateIdentity
      x-scope: update:identities
      description: |
        Update identity by ID.

        <div>
          <code>update:identities</code>
        </div>
      summary: Update identity
      parameters:
        - name: identity_id
          in: path
          description: The unique identifier for the identity.
          required: true
          schema:
            type: string
      requestBody:
        description: The fields of the identity to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                is_primary:
                  description: Whether the identity is the primary for it's type
                  type: boolean
                  nullable: false
      responses:
        '200':
          description: Identity successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Identities
      operationId: DeleteIdentity
      x-scope: delete:identities
      description: |
        Delete identity by ID.

        <div>
          <code>delete:identities</code>
        </div>
      summary: Delete identity
      parameters:
        - name: identity_id
          in: path
          description: The unique identifier for the identity.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Identity successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organization/{org_code}/invites:
    servers: []
    get:
      tags:
        - Organizations
      operationId: getOrganizationInvites
      x-scope: read:organization_invites
      summary: Get organization invites
      description: |
        Get a list of invitations for an organization. By default, only pending (non-revoked, non-accepted) invitations are returned.

        <div>
          <code>read:organization_invites</code>
        </div>
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - created_on_asc
              - created_on_desc
              - email_asc
              - email_desc
              - name_asc
              - name_desc
            example: created_on_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
            example: 10
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
        - name: include_revoked
          in: query
          description: Include revoked invitations in the results.
          schema:
            type: boolean
            nullable: true
            default: false
        - name: include_accepted
          in: query
          description: Include accepted invitations in the results.
          schema:
            type: boolean
            nullable: true
            default: false
      responses:
        '200':
          description: Invitations successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organization_invites_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Organizations
      operationId: createOrganizationInvite
      x-scope: create:organization_invites
      summary: Create organization invite
      description: |
        Create a new invitation for an organization. An invitation email will be sent to the provided email address if `send_email` is set to `true`.

        Invitations cannot be created for organizations that are managed by directory sync; user and role changes for those organizations must be made in the upstream identity provider.

        Roles that require an explicit assignment permission cannot be granted to an invitee unless the caller (or the user the token represents) holds that permission. On Kinde-hosted plans, roles outside `owner`/`admin` additionally require the `extended_roles` entitlement.

        Per-organization rate limits apply: a maximum number of invitations may be created per rolling 24 hour window, and a maximum number of active (non-accepted, non-revoked) invitations may exist at any time. Requests that exceed either limit are rejected.

        <div>
          <code>create:organization_invites</code>
        </div>
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
      requestBody:
        description: Invitation details. `email` is capped at 254 characters (RFC 5321). `first_name` and `last_name` are capped at 64 characters each. Inputs over these limits are rejected with `EMAIL_TOO_LONG`, `FIRST_NAME_TOO_LONG`, or `LAST_NAME_TOO_LONG`.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - roles
              properties:
                email:
                  description: The email address of the user to invite. Maximum 254 characters.
                  type: string
                  maxLength: 254
                  example: user@example.com
                first_name:
                  description: The first name of the user to invite. Maximum 64 characters.
                  type: string
                  maxLength: 64
                  nullable: true
                  example: John
                last_name:
                  description: The last name of the user to invite. Maximum 64 characters.
                  type: string
                  maxLength: 64
                  nullable: true
                  example: Doe
                roles:
                  description: Array of role keys to assign to the user.
                  type: array
                  items:
                    type: string
                  example:
                    - admin
                    - manager
                send_email:
                  description: Whether to send an invitation email to the user. Defaults to false.
                  type: boolean
                  default: false
      responses:
        '201':
          description: Invitation successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_organization_invite_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organization/{org_code}/invites/{invite_code}:
    servers: []
    get:
      tags:
        - Organizations
      operationId: getOrganizationInvite
      x-scope: read:organization_invites
      summary: Get organization invite
      description: |
        Get details of a specific invitation by its code.

        <div>
          <code>read:organization_invites</code>
        </div>
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: invite_code
          in: path
          description: The invitation's code.
          required: true
          schema:
            type: string
            example: inv_abc123def456
      responses:
        '200':
          description: Invitation successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organization_invite_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: deleteOrganizationInvite
      x-scope: delete:organization_invites
      summary: Delete organization invite
      description: |
        Revoke (delete) an invitation. This will mark the invitation as revoked and prevent it from being accepted.

        <div>
          <code>delete:organization_invites</code>
        </div>
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: invite_code
          in: path
          description: The invitation's code.
          required: true
          schema:
            type: string
            example: inv_abc123def456
      responses:
        '200':
          description: Invitation successfully revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/mfa:
    servers: []
    put:
      tags:
        - MFA
      operationId: ReplaceMFA
      x-scope: update:mfa
      description: |
        Replace MFA Configuration.

        <div>
          <code>update:mfa</code>
        </div>
      summary: Replace MFA Configuration
      requestBody:
        description: MFA details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                policy:
                  description: Specifies whether MFA is required, optional, or not enforced.
                  type: string
                  enum:
                    - required
                    - 'off'
                    - optional
                  nullable: false
                enabled_factors:
                  description: The MFA methods to enable.
                  type: array
                  nullable: false
                  items:
                    type: string
                    enum:
                      - mfa:email
                      - mfa:sms
                      - mfa:authenticator_app
                is_recovery_codes_enabled:
                  description: Determines whether recovery codes are shown to users during MFA setup for the environment.
                  type: boolean
                  default: true
              required:
                - policy
                - enabled_factors
      responses:
        '200':
          description: MFA Configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organization:
    servers: []
    get:
      tags:
        - Organizations
      operationId: getOrganization
      x-scope: read:organizations
      summary: Get organization
      description: |
        Retrieve organization details by code.

        <div>
          <code>read:organizations</code>
        </div>
      parameters:
        - in: query
          name: code
          description: The organization's code.
          schema:
            type: string
            example: org_1ccfb819462
        - in: query
          name: expand
          description: 'Additional data to include in the response. Allowed value: "billing".'
          schema:
            type: string
            example: billing
      responses:
        '200':
          description: Organization successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organization_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Organizations
      operationId: createOrganization
      x-scope: create:organizations
      summary: Create organization
      description: |
        Create a new organization. To learn more read about [multi tenancy using organizations](https://docs.kinde.com/build/organizations/multi-tenancy-using-organizations/)

        <div>
          <code>create:organizations</code>
        </div>
      requestBody:
        description: Organization details.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
              properties:
                name:
                  description: The organization's name.
                  type: string
                  example: Acme Corp
                feature_flags:
                  type: object
                  description: The organization's feature flag settings.
                  additionalProperties:
                    type: string
                    enum:
                      - str
                      - int
                      - bool
                    description: Value of the feature flag.
                external_id:
                  description: The organization's external identifier - commonly used when migrating from or mapping to other systems.
                  type: string
                  example: some1234
                background_color:
                  description: The organization's brand settings - background color.
                  type: string
                button_color:
                  description: The organization's brand settings - button color.
                  type: string
                button_text_color:
                  description: The organization's brand settings - button text color.
                  type: string
                link_color:
                  description: The organization's brand settings - link color.
                  type: string
                background_color_dark:
                  description: The organization's brand settings - dark mode background color.
                  type: string
                button_color_dark:
                  description: The organization's brand settings - dark mode button color.
                  type: string
                button_text_color_dark:
                  description: The organization's brand settings - dark mode button text color.
                  type: string
                link_color_dark:
                  description: The organization's brand settings - dark mode link color.
                  type: string
                theme_code:
                  description: The organization's brand settings - theme/mode 'light' | 'dark' | 'user_preference'.
                  type: string
                handle:
                  description: A unique handle for the organization - can be used for dynamic callback urls.
                  type: string
                  example: acme_corp
                is_allow_registrations:
                  deprecated: true
                  description: Deprecated - Use 'is_auto_membership_enabled' instead.
                  type: boolean
                  example: true
                is_auto_membership_enabled:
                  description: If users become members of this organization when the org code is supplied during authentication.
                  type: boolean
                  example: true
                sender_name:
                  nullable: true
                  type: string
                  example: Acme Corp
                  description: The name of the organization that will be used in emails
                sender_email:
                  nullable: true
                  type: string
                  example: hello@acmecorp.com
                  description: The email address that will be used in emails. Requires custom SMTP to be set up.
                is_create_billing_customer:
                  type: boolean
                  example: false
                  description: If a billing customer is also created for this organization
                billing_email:
                  type: string
                  example: billing@acmecorp.com
                  description: The email address used for billing purposes for the organization
                billing_plan_code:
                  type: string
                  example: pro
                  description: The billing plan to put the customer on. If not specified, the default plan is used
      responses:
        '200':
          description: Organization successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_organization_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations:
    servers: []
    get:
      tags:
        - Organizations
      operationId: getOrganizations
      x-scope: read:organizations
      summary: Get organizations
      description: |
        Get a list of organizations.

        <div>
          <code>read:organizations</code>
        </div>
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - email_asc
              - email_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Organizations successfully retreived.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organizations_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organization/{org_code}:
    servers: []
    patch:
      tags:
        - Organizations
      operationId: updateOrganization
      description: |
        Update an organization.

        <div>
          <code>update:organizations</code>
        </div>
      summary: Update Organization
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: expand
          in: query
          description: 'Additional data to include in the response. Allowed value: "billing".'
          required: false
          schema:
            type: string
            nullable: true
            enum:
              - billing
      requestBody:
        description: Organization details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The organization's name.
                  type: string
                  example: Acme Corp
                external_id:
                  description: The organization's ID.
                  type: string
                  example: some1234
                background_color:
                  description: The organization's brand settings - background color.
                  type: string
                  example: '#fff'
                button_color:
                  description: The organization's brand settings - button color.
                  type: string
                  example: '#fff'
                button_text_color:
                  description: The organization's brand settings - button text color.
                  type: string
                  example: '#fff'
                link_color:
                  description: The organization's brand settings - link color.
                  type: string
                  example: '#fff'
                background_color_dark:
                  description: The organization's brand settings - dark mode background color.
                  type: string
                  example: '#000'
                button_color_dark:
                  description: The organization's brand settings - dark mode button color.
                  type: string
                  example: '#000'
                button_text_color_dark:
                  description: The organization's brand settings - dark mode button text color.
                  type: string
                  example: '#000'
                link_color_dark:
                  description: The organization's brand settings - dark mode link color.
                  type: string
                  example: '#000'
                theme_code:
                  description: The organization's brand settings - theme/mode.
                  type: string
                  enum:
                    - light
                    - dark
                    - user_preference
                  example: light
                handle:
                  description: The organization's handle.
                  type: string
                  example: acme_corp
                is_allow_registrations:
                  deprecated: true
                  description: Deprecated - Use 'is_auto_membership_enabled' instead.
                  type: boolean
                is_auto_membership_enabled:
                  description: If users become members of this organization when the org code is supplied during authentication.
                  type: boolean
                  example: true
                is_auto_join_domain_list:
                  description: Users can sign up to this organization.
                  type: boolean
                  example: true
                allowed_domains:
                  description: Domains allowed for self-sign up to this environment.
                  type: array
                  example:
                    - https://acme.kinde.com
                    - https://acme.com
                  items:
                    type: string
                is_enable_advanced_orgs:
                  description: Activate advanced organization features.
                  type: boolean
                  example: true
                is_enforce_mfa:
                  description: Enforce MFA for all users in this organization.
                  type: boolean
                  example: true
                sender_name:
                  nullable: true
                  type: string
                  example: Acme Corp
                  description: The name of the organization that will be used in emails
                sender_email:
                  nullable: true
                  type: string
                  example: hello@acmecorp.com
                  description: The email address that will be used in emails. Requires custom SMTP to be set up.
                is_suspended:
                  type: boolean
                  description: Whether to suspend or unsuspend the organization. Setting to true suspends the organization; setting to false unsuspends it. The default organization cannot be suspended.
                  example: false
      responses:
        '200':
          description: Organization successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: deleteOrganization
      description: |
        Delete an organization.

        <div>
          <code>delete:organizations</code>
        </div>
      summary: Delete Organization
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Organization successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationUsers
      x-scope: read:organization_users
      summary: Get organization users
      description: |
        Get user details for all members of an organization.

        <div>
          <code>read:organization_users</code>
        </div>
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            example: email_asc
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - email_asc
              - email_desc
              - id_asc
              - id_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            example: 10
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            example: MTo6OmlkX2FzYw==
            type: string
            nullable: true
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            example: org_1ccfb819462
            type: string
            nullable: false
        - name: permissions
          in: query
          description: Filter by user permissions comma separated (where all match)
          schema:
            example: admin
            type: string
        - name: roles
          in: query
          description: Filter by user roles comma separated (where all match)
          schema:
            example: manager
            type: string
      responses:
        '200':
          description: A successful response with a list of organization users or an empty list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organization_users_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Organizations
      operationId: AddOrganizationUsers
      description: |
        Add existing users to an organization.

        <div>
          <code>create:organization_users</code>
        </div>
      summary: Add Organization Users
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                users:
                  description: Users to be added to the organization.
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        description: The users id.
                        type: string
                        example: kp_057ee6debc624c70947b6ba512908c35
                      roles:
                        description: Role keys to assign to the user.
                        type: array
                        items:
                          type: string
                          example: manager
                      permissions:
                        description: Permission keys to assign to the user.
                        type: array
                        items:
                          type: string
                          example: admin
      responses:
        '200':
          description: Add organization users request successfully processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/add_organization_users_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Organizations
      operationId: UpdateOrganizationUsers
      description: |
        Update users that belong to an organization.

        <div>
          <code>update:organization_users</code>
        </div>
      summary: Update Organization Users
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                users:
                  description: Users to add, update or remove from the organization.
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        description: The users id.
                        type: string
                        example: kp_057ee6debc624c70947b6ba512908c35
                      operation:
                        description: Optional operation, set to 'delete' to remove the user from the organization.
                        type: string
                        example: delete
                      roles:
                        description: Role keys to assign to the user.
                        type: array
                        items:
                          type: string
                          example: manager
                      permissions:
                        description: Permission keys to assign to the user.
                        type: array
                        items:
                          type: string
                          example: admin
      responses:
        '200':
          description: Users successfully removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_organization_users_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/roles:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationUserRoles
      x-scope: read:organization_user_roles
      description: |
        Get roles for an organization user.

        <div>
          <code>read:organization_user_roles</code>
        </div>
      summary: List Organization User Roles
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: A successful response with a list of user roles.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organizations_user_roles_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_organizations_user_roles_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Organizations
      operationId: CreateOrganizationUserRole
      description: |
        Add role to an organization user.

        <div>
          <code>create:organization_user_roles</code>
        </div>
      summary: Add Organization User Role
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: Role details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                role_id:
                  description: The role id.
                  type: string
      responses:
        '200':
          description: Role successfully added.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/roles/{role_id}:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationUserRole
      description: |
        Delete role for an organization user.

        <div>
          <code>delete:organization_user_roles</code>
        </div>
      summary: Delete Organization User Role
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
        - name: role_id
          in: path
          description: The role id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: User successfully removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Error creating user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/permissions:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationUserPermissions
      x-scope: read:organization_user_permissions
      description: |
        Get permissions for an organization user.

        <div>
          <code>read:organization_user_permissions</code>
        </div>
      summary: List Organization User Permissions
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
        - name: expand
          in: query
          description: 'Additional data to include in the response. Allowed value: "roles".'
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: A successful response with a list of user permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organizations_user_permissions_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_organizations_user_permissions_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Organizations
      operationId: CreateOrganizationUserPermission
      description: |
        Add permission to an organization user.

        <div>
          <code>create:organization_user_permissions</code>
        </div>
      summary: Add Organization User Permission
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: Permission details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                permission_id:
                  description: The permission id.
                  type: string
      responses:
        '200':
          description: User permission successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/permissions/{permission_id}:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationUserPermission
      description: |
        Delete permission for an organization user.

        <div>
          <code>delete:organization_user_permissions</code>
        </div>
      summary: Delete Organization User Permission
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
        - name: permission_id
          in: path
          description: The permission id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: User successfully removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Error creating user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: RemoveOrganizationUser
      description: |
        Remove user from an organization.

        <div>
          <code>delete:organization_users</code>
        </div>
      summary: Remove Organization User
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
        - name: user_id
          in: path
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: User successfully removed from organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Error removing user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/apis/{api_id}/scopes/{scope_id}:
    servers: []
    post:
      tags:
        - Organizations
      operationId: addOrganizationUserAPIScope
      summary: Add scope to organization user api
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
        - name: user_id
          in: path
          description: User ID
          required: true
          schema:
            type: string
            nullable: false
            example: kp_5ce676e5d6a24bc9aac2fba35a46e958
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Add a scope to an organization user api.

        <div>
          <code>create:organization_user_api_scopes</code>
        </div>
      responses:
        '200':
          description: API scope successfully added to organization user api
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: deleteOrganizationUserAPIScope
      summary: Delete scope from organization user API
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
        - name: user_id
          in: path
          description: User ID
          required: true
          schema:
            type: string
            nullable: false
            example: kp_5ce676e5d6a24bc9aac2fba35a46e958
        - name: api_id
          in: path
          description: API ID
          required: true
          schema:
            type: string
            nullable: false
            example: 838f208d006a482dbd8cdb79a9889f68
        - name: scope_id
          in: path
          description: Scope ID
          required: true
          schema:
            type: string
            nullable: false
            example: api_scope_019391daf58d87d8a7213419c016ac95
      description: |
        Delete a scope from an organization user api you previously created.

        <div>
          <code>delete:organization_user_api_scopes</code>
        </div>
      responses:
        '200':
          description: Organization user API scope successfully deleted.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/mfa:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrgUserMFA
      description: |
        Get an organization user’s MFA configuration.

        <div>
          <code>read:organization_user_mfa</code>
        </div>
      summary: Get an organization user's MFA configuration
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: Successfully retrieve user's MFA configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_user_mfa_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: ResetOrgUserMFAAll
      description: |
        Reset all organization MFA factors for a user.

        <div>
          <code>delete:organization_user_mfa</code>
        </div>
      summary: Reset all organization MFA for a user
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: User's MFA successfully reset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/users/{user_id}/mfa/{factor_id}:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: ResetOrgUserMFA
      description: |
        Reset a specific organization MFA factor for a user.

        <div>
          <code>delete:organization_user_mfa</code>
        </div>
      summary: Reset specific organization MFA for a user
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
            example: org_1ccfb819462
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
        - name: factor_id
          in: path
          description: The identifier for the MFA factor
          required: true
          schema:
            type: string
            example: mfa_0193278a00ac29b3f6d4e4d462d55c47
      responses:
        '200':
          description: User's MFA successfully reset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/feature_flags:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationFeatureFlags
      x-scope: read:organization_feature_flags
      description: |
        Get all organization feature flags.

        <div>
          <code>read:organization_feature_flags</code>
        </div>
      summary: List Organization Feature Flags
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag overrides successfully returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_organization_feature_flags_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_organization_feature_flags_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationFeatureFlagOverrides
      description: |
        Delete all organization feature flag overrides.

        <div>
          <code>delete:organization_feature_flags</code>
        </div>
      summary: Delete Organization Feature Flag Overrides
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag overrides successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/feature_flags/{feature_flag_key}:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationFeatureFlagOverride
      description: |
        Delete organization feature flag override.

        <div>
          <code>delete:organization_feature_flags</code>
        </div>
      summary: Delete Organization Feature Flag Override
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization.
          required: true
          schema:
            type: string
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag override successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Organizations
      operationId: UpdateOrganizationFeatureFlagOverride
      description: |
        Update organization feature flag override.

        <div>
          <code>update:organization_feature_flags</code>
        </div>
      summary: Update Organization Feature Flag Override
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization
          required: true
          schema:
            type: string
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: Override value
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag override successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/properties/{property_key}:
    servers: []
    put:
      tags:
        - Organizations
      operationId: UpdateOrganizationProperty
      description: |
        Update organization property value.

        <div>
          <code>update:organization_properties</code>
        </div>
      summary: Update Organization Property value
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization
          required: true
          schema:
            type: string
        - name: property_key
          in: path
          description: The identifier for the property
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: The new property value
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/properties:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationPropertyValues
      description: |
        Gets properties for an organization by org code.

        <div>
          <code>read:organization_properties</code>
        </div>
      summary: Get Organization Property Values
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Properties successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_property_values_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_property_values_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Organizations
      operationId: UpdateOrganizationProperties
      description: |
        Update organization property values.

        <div>
          <code>update:organization_properties</code>
        </div>
      summary: Update Organization Property values
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization
          required: true
          schema:
            type: string
      requestBody:
        description: Properties to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                properties:
                  description: Property keys and values
                  type: object
                  nullable: false
              required:
                - properties
      responses:
        '200':
          description: Properties successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/mfa:
    servers: []
    put:
      tags:
        - Organizations
      operationId: ReplaceOrganizationMFA
      description: |
        Replace Organization MFA Configuration.

        <div>
          <code>update:organization_mfa</code>
        </div>
      summary: Replace Organization MFA Configuration
      parameters:
        - name: org_code
          in: path
          description: The identifier for the organization
          required: true
          schema:
            type: string
      requestBody:
        description: MFA details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                enabled_factors:
                  description: The MFA methods to enable.
                  type: array
                  nullable: false
                  items:
                    type: string
                    enum:
                      - mfa:email
                      - mfa:sms
                      - mfa:authenticator_app
                is_recovery_codes_enabled:
                  description: Determines whether recovery codes are shown to users during MFA setup for this specific organization. This overrides the environment-level setting.
                  type: boolean
                  default: true
              required:
                - enabled_factors
      responses:
        '200':
          description: MFA Configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organization/{org_code}/handle:
    servers: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationHandle
      description: |
        Delete organization handle

        <div>
          <code>delete:organization_handles</code>
        </div>
      summary: Delete organization handle
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Handle successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/logos:
    servers: []
    get:
      tags:
        - Organizations
      operationId: ReadOrganizationLogo
      description: |
        Read organization logo details

        <div>
          <code>read:organizations</code>
        </div>
      summary: Read organization logo details
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
            example: org_1ccfb819462
      responses:
        '200':
          description: Successfully retrieved organization logo details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/read_logo_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/logos/{type}:
    servers: []
    post:
      tags:
        - Organizations
      operationId: AddOrganizationLogo
      description: |
        Add organization logo

        <div>
          <code>update:organizations</code>
        </div>
      summary: Add organization logo
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
            example: org_1ccfb819462
        - name: type
          in: path
          description: The type of logo to add.
          required: true
          schema:
            type: string
            example: dark
            enum:
              - dark
              - light
      requestBody:
        description: Organization logo details.
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
                - logo
              properties:
                logo:
                  type: string
                  format: binary
                  description: The logo file to upload.
      responses:
        '200':
          description: Organization logo successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: DeleteOrganizationLogo
      description: |
        Delete organization logo

        <div>
          <code>update:organizations</code>
        </div>
      summary: Delete organization logo
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
            example: org_1ccfb819462
        - name: type
          in: path
          description: The type of logo to delete.
          required: true
          schema:
            type: string
            example: dark
            enum:
              - dark
              - light
      responses:
        '200':
          description: Organization logo successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '204':
          description: No logo found to delete
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{organization_code}/connections:
    servers: []
    get:
      tags:
        - Organizations
      operationId: GetOrganizationConnections
      description: |
        Gets all connections for an organization.

        <div>
          <code>read:organization_connections</code>
        </div>
      summary: Get connections
      parameters:
        - name: organization_code
          in: path
          description: The organization code.
          required: true
          schema:
            type: string
            nullable: false
            example: org_7d45b01ef13
      responses:
        '200':
          description: Organization connections successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_connections_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{organization_code}/connections/{connection_id}:
    servers: []
    post:
      tags:
        - Organizations
      operationId: EnableOrgConnection
      summary: Enable connection
      description: |
        Enable an auth connection for an organization.

        <div>
          <code>create:organization_connections</code>
        </div>
      parameters:
        - name: organization_code
          in: path
          description: The unique code for the organization.
          required: true
          schema:
            type: string
            example: org_7d45b01ef13
        - name: connection_id
          in: path
          description: The identifier for the connection.
          required: true
          schema:
            type: string
            example: conn_0192c16abb53b44277e597d31877ba5b
      responses:
        '200':
          description: Connection successfully enabled.
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Organizations
      operationId: RemoveOrgConnection
      summary: Remove connection
      description: |
        Turn off an auth connection for an organization

        <div>
          <code>delete:organization_connections</code>
        </div>
      parameters:
        - name: organization_code
          in: path
          description: The unique code for the organization.
          required: true
          schema:
            type: string
            example: org_7d45b01ef13
        - name: connection_id
          in: path
          description: The identifier for the connection.
          required: true
          schema:
            type: string
            example: conn_0192c16abb53b44277e597d31877ba5b
      responses:
        '200':
          description: Connection successfully removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/organizations/{org_code}/sessions:
    servers: []
    patch:
      tags:
        - Organizations
      operationId: UpdateOrganizationSessions
      description: |
        Update the organization's session configuration.

        <div>
          <code>update:organizations</code>
        </div>
      summary: Update organization session configuration
      parameters:
        - name: org_code
          in: path
          description: The organization's code.
          required: true
          schema:
            type: string
            nullable: false
            example: org_1ccfb819462
      requestBody:
        description: Organization session configuration.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                is_use_org_sso_session_policy:
                  type: boolean
                  description: Whether to use the organization's SSO session policy override.
                sso_session_persistence_mode:
                  type: string
                  enum:
                    - persistent
                    - non_persistent
                  description: Determines if the session should be persistent or not.
                is_use_org_authenticated_session_lifetime:
                  type: boolean
                  description: Whether to apply the organization's authenticated session lifetime override.
                authenticated_session_lifetime:
                  type: integer
                  description: Authenticated session lifetime in seconds.
                  example: 86400
      responses:
        '200':
          description: Organization sessions successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/permissions:
    servers: []
    get:
      tags:
        - Permissions
      operationId: GetPermissions
      x-scope: read:permissions
      description: |
        The returned list can be sorted by permission name or permission ID in ascending or descending order. The number of records to return at a time can also be controlled using the `page_size` query string parameter.

        <div>
          <code>read:permissions</code>
        </div>
      summary: List Permissions
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - id_asc
              - id_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Permissions successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_permissions_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_permissions_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Permissions
      operationId: CreatePermission
      x-scope: create:permissions
      description: |
        Create a new permission.

        <div>
          <code>create:permissions</code>
        </div>
      summary: Create Permission
      requestBody:
        description: Permission details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The permission's name.
                  type: string
                description:
                  description: The permission's description.
                  type: string
                key:
                  description: The permission identifier to use in code.
                  type: string
      responses:
        '201':
          description: Permission successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/permissions/{permission_id}:
    servers: []
    patch:
      tags:
        - Permissions
      operationId: UpdatePermissions
      x-scope: update:permissions
      description: |
        Update permission

        <div>
          <code>update:permissions</code>
        </div>
      summary: Update Permission
      parameters:
        - name: permission_id
          in: path
          description: The identifier for the permission.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: Permission details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The permission's name.
                  type: string
                description:
                  description: The permission's description.
                  type: string
                key:
                  description: The permission identifier to use in code.
                  type: string
      responses:
        '200':
          description: Permission successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Permissions
      operationId: DeletePermission
      x-scope: delete:permissions
      description: |
        Delete permission

        <div>
          <code>delete:permissions</code>
        </div>
      summary: Delete Permission
      parameters:
        - name: permission_id
          in: path
          description: The identifier for the permission.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: permission successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/properties:
    servers: []
    get:
      tags:
        - Properties
      operationId: GetProperties
      x-scope: read:properties
      description: |
        Returns a list of properties

        <div>
          <code>read:properties</code>
        </div>
      summary: List properties
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          description: The ID of the property to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          description: The ID of the property to end before.
          schema:
            type: string
            nullable: true
        - name: context
          in: query
          description: Filter results by user,  organization or application context
          schema:
            type: string
            nullable: true
            enum:
              - usr
              - org
              - app
      responses:
        '200':
          description: Properties successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_properties_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_properties_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Properties
      operationId: CreateProperty
      x-scope: create:properties
      description: |
        Create property.

        <div>
          <code>create:properties</code>
        </div>
      summary: Create Property
      requestBody:
        description: Property details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the property.
                  type: string
                  nullable: false
                description:
                  description: Description of the property purpose.
                  type: string
                  nullable: false
                key:
                  description: The property identifier to use in code.
                  type: string
                  nullable: false
                type:
                  description: The property type.
                  type: string
                  enum:
                    - single_line_text
                    - multi_line_text
                  nullable: false
                context:
                  description: The context that the property applies to.
                  type: string
                  enum:
                    - org
                    - usr
                    - app
                  nullable: false
                is_private:
                  description: Whether the property can be included in id and access tokens.
                  type: boolean
                  nullable: false
                category_id:
                  description: Which category the property belongs to.
                  type: string
                  nullable: false
              required:
                - name
                - key
                - type
                - context
                - is_private
                - category_id
      responses:
        '201':
          description: Property successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_property_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/create_property_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/properties/{property_id}:
    servers: []
    put:
      tags:
        - Properties
      operationId: UpdateProperty
      x-scope: update:properties
      description: |
        Update property.

        <div>
          <code>update:properties</code>
        </div>
      summary: Update Property
      parameters:
        - name: property_id
          in: path
          description: The unique identifier for the property.
          required: true
          schema:
            type: string
      requestBody:
        description: The fields of the property to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the property.
                  type: string
                  nullable: false
                description:
                  type: string
                  description: Description of the property purpose.
                is_private:
                  type: boolean
                  description: Whether the property can be included in id and access tokens.
                category_id:
                  description: Which category the property belongs to.
                  type: string
                  nullable: false
              required:
                - name
                - is_private
                - category_id
      responses:
        '200':
          description: Property successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Properties
      operationId: DeleteProperty
      x-scope: delete:properties
      description: |
        Delete property.

        <div>
          <code>delete:properties</code>
        </div>
      summary: Delete Property
      parameters:
        - name: property_id
          in: path
          description: The unique identifier for the property.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/property_categories:
    servers: []
    get:
      tags:
        - Property Categories
      operationId: GetCategories
      x-scope: read:property_categories
      description: |
        Returns a list of categories.

        <div>
          <code>read:property_categories</code>
        </div>
      summary: List categories
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: starting_after
          in: query
          description: The ID of the category to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          description: The ID of the category to end before.
          schema:
            type: string
            nullable: true
        - name: context
          in: query
          description: Filter the results by User or Organization context
          schema:
            type: string
            nullable: true
            enum:
              - usr
              - org
      responses:
        '200':
          description: Categories successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_categories_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_categories_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Property Categories
      operationId: CreateCategory
      x-scope: create:property_categories
      description: |
        Create category.

        <div>
          <code>create:property_categories</code>
        </div>
      summary: Create Category
      requestBody:
        description: Category details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the category.
                  type: string
                  nullable: false
                context:
                  description: The context that the category applies to.
                  type: string
                  enum:
                    - org
                    - usr
                    - app
                  nullable: false
              required:
                - name
                - context
      responses:
        '201':
          description: Category successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_category_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/create_category_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/property_categories/{category_id}:
    servers: []
    put:
      tags:
        - Property Categories
      operationId: UpdateCategory
      description: |
        Update category.

        <div>
          <code>update:property_categories</code>
        </div>
      summary: Update Category
      parameters:
        - name: category_id
          in: path
          description: The unique identifier for the category.
          required: true
          schema:
            type: string
      requestBody:
        description: The fields of the category to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The name of the category.
                  type: string
                  nullable: false
      responses:
        '200':
          description: category successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/roles:
    servers: []
    get:
      tags:
        - Roles
      operationId: GetRoles
      x-scope: read:roles
      description: |
        The returned list can be sorted by role name or role ID in ascending or descending order. The number of records to return at a time can also be controlled using the `page_size` query string parameter.

        <div>
          <code>read:roles</code>
        </div>
      summary: List roles
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - id_asc
              - id_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Roles successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_roles_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Roles
      operationId: CreateRole
      x-scope: create:roles
      description: |
        Create role.

        <div>
          <code>create:roles</code>
        </div>
      summary: Create role
      requestBody:
        description: Role details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The role's name.
                  type: string
                description:
                  description: The role's description.
                  type: string
                key:
                  description: The role identifier to use in code.
                  type: string
                is_default_role:
                  description: Set role as default for new users.
                  type: boolean
                assignment_permission_id:
                  description: The public ID of the permission required to assign this role to users. If null, no permission is required.
                  type: string
                  format: uuid
                  nullable: true
      responses:
        '201':
          description: Role successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_roles_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/roles/{role_id}:
    servers: []
    get:
      tags:
        - Roles
      operationId: GetRole
      x-scope: read:roles
      description: |
        Get a role

        <div>
          <code>read:roles</code>
        </div>
      summary: Get role
      parameters:
        - name: role_id
          in: path
          description: The identifier for the role.
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Role successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_role_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Roles
      operationId: UpdateRoles
      x-scope: update:roles
      description: |
        Update a role

        <div>
          <code>update:roles</code>
        </div>
      summary: Update role
      parameters:
        - name: role_id
          in: path
          description: The identifier for the role.
          schema:
            type: string
          required: true
      requestBody:
        description: Role details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The role's name.
                  type: string
                description:
                  description: The role's description.
                  type: string
                key:
                  description: The role identifier to use in code.
                  type: string
                is_default_role:
                  description: Set role as default for new users.
                  type: boolean
                assignment_permission_id:
                  description: The public ID of the permission required to assign this role to users. If null, no change to the assignment permission is made. If set to 'NO_PERMISSION_REQUIRED', no permission is required.
                  type: string
                  format: uuid
                  nullable: true
              required:
                - name
                - key
      responses:
        '201':
          description: Role successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Roles
      operationId: DeleteRole
      x-scope: delete:roles
      description: |
        Delete role

        <div>
          <code>delete:roles</code>
        </div>
      summary: Delete role
      parameters:
        - name: role_id
          in: path
          description: The identifier for the role.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Role successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/roles/{role_id}/scopes:
    servers: []
    get:
      tags:
        - Roles
      operationId: GetRoleScopes
      x-scope: read:role_scopes
      description: |
        Get scopes for a role.

        <div>
          <code>read:role_scopes</code>
        </div>
      summary: Get role scopes
      parameters:
        - name: role_id
          in: path
          description: The role id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: A list of scopes for a role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/role_scopes_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/role_scopes_response'
        '400':
          description: Error removing user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Roles
      operationId: AddRoleScope
      x-scope: create:role_scopes
      description: |
        Add scope to role.

        <div>
          <code>create:role_scopes</code>
        </div>
      summary: Add role scope
      parameters:
        - name: role_id
          in: path
          description: The role id.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: Add scope to role.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                scope_id:
                  description: The scope identifier.
                  type: string
              required:
                - scope_id
      responses:
        '201':
          description: Role scope successfully added.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/add_role_scope_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/roles/{role_id}/scopes/{scope_id}:
    servers: []
    delete:
      tags:
        - Roles
      operationId: DeleteRoleScope
      x-scope: delete:role_scopes
      description: |
        Delete scope from role.

        <div>
          <code>delete:role_scopes</code>
        </div>
      summary: Delete role scope
      parameters:
        - name: role_id
          in: path
          description: The role id.
          required: true
          schema:
            type: string
            nullable: false
        - name: scope_id
          in: path
          description: The scope id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Role scope successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete_role_scope_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/roles/{role_id}/permissions:
    servers: []
    get:
      tags:
        - Roles
      operationId: GetRolePermissions
      x-scope: read:role_permissions
      description: |
        Get permissions for a role.

        <div>
          <code>read:role_permissions</code>
        </div>
      summary: Get role permissions
      parameters:
        - name: role_id
          in: path
          description: The role's public id.
          required: true
          schema:
            type: string
            nullable: false
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - id_asc
              - id_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: A list of permissions for a role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/role_permissions_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/role_permissions_response'
        '400':
          description: Error removing user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Roles
      operationId: UpdateRolePermissions
      x-scope: update:role_permissions
      description: |
        Update role permissions.

        <div>
          <code>update:role_permissions</code>
        </div>
      summary: Update role permissions
      parameters:
        - name: role_id
          in: path
          description: The identifier for the role.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                permissions:
                  description: Permissions to add or remove from the role.
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        description: The permission id.
                        type: string
                      operation:
                        description: Optional operation, set to 'delete' to remove the permission from the role.
                        type: string
      responses:
        '200':
          description: Permissions successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_role_permissions_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/update_role_permissions_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/roles/{role_id}/permissions/{permission_id}:
    servers: []
    delete:
      tags:
        - Roles
      operationId: RemoveRolePermission
      x-scope: delete:role_permissions
      description: |
        Remove a permission from a role.

        <div>
          <code>delete:role_permissions</code>
        </div>
      summary: Remove role permission
      parameters:
        - name: role_id
          in: path
          description: The role's public id.
          required: true
          schema:
            type: string
            nullable: false
        - name: permission_id
          in: path
          description: The permission's public id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Permission successfully removed from role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Error removing user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/search/users:
    servers: []
    get:
      tags:
        - Search
      operationId: searchUsers
      x-scope: read:users
      description: |
        Search for users based on the provided query string. Set query to '*' to filter by other parameters only.
        The number of records to return at a time can be controlled using the `page_size` query string parameter.

        <div>
          <code>read:users</code>
        </div>
      summary: Search users
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: query
          in: query
          description: Search the users by email or name. Use '*' to search all.
          schema:
            type: string
            nullable: true
        - name: api_scopes
          in: query
          description: Search the users by api scopes.
          schema:
            type: string
            nullable: true
        - name: properties
          in: query
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: array
              items:
                type: string
        - name: starting_after
          in: query
          description: The ID of the user to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          description: The ID of the user to end before.
          schema:
            type: string
            nullable: true
        - name: expand
          in: query
          description: 'Additional data to include in the response. One or more of (comma-separated): "organizations", "identities", "properties".'
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Users successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/search_users_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/subscribers:
    servers: []
    get:
      tags:
        - Subscribers
      operationId: GetSubscribers
      x-scope: read:subscribers
      description: |
        The returned list can be sorted by full name or email address
        in ascending or descending order. The number of records to return at a time can also be controlled using the `page_size` query
        string parameter.

        <div>
          <code>read:subscribers</code>
        </div>
      summary: List Subscribers
      parameters:
        - name: sort
          in: query
          description: Field and order to sort the result by.
          schema:
            type: string
            nullable: true
            enum:
              - name_asc
              - name_desc
              - email_asc
              - email_desc
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Subscriber successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_subscribers_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_subscribers_response'
        '403':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Subscribers
      operationId: CreateSubscriber
      x-scope: create:subscribers
      description: |
        Create subscriber.

        <div>
          <code>create:subscribers</code>
        </div>
      summary: Create Subscriber
      parameters:
        - name: first_name
          in: query
          description: Subscriber's first name.
          required: true
          schema:
            type: string
            nullable: false
        - name: last_name
          in: query
          description: Subscriber's last name.
          required: true
          schema:
            type: string
            nullable: true
        - name: email
          in: query
          description: The email address of the subscriber.
          required: true
          schema:
            type: string
            nullable: true
      responses:
        '201':
          description: Subscriber successfully created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_subscriber_success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/create_subscriber_success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/subscribers/{subscriber_id}:
    servers: []
    get:
      tags:
        - Subscribers
      operationId: GetSubscriber
      x-scope: read:subscribers
      description: |
        Retrieve a subscriber record.

        <div>
          <code>read:subscribers</code>
        </div>
      summary: Get Subscriber
      parameters:
        - name: subscriber_id
          in: path
          description: The subscriber's id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Subscriber successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_subscriber_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_subscriber_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users:
    servers: []
    get:
      tags:
        - Users
      operationId: getUsers
      x-scope: read:users
      description: |
        The returned list can be sorted by full name or email address in ascending or descending order. The number of records to return at a time can also be controlled using the `page_size` query string parameter.

        <div>
          <code>read:users</code>
        </div>
      summary: Get users
      parameters:
        - name: page_size
          in: query
          description: Number of results per page. Defaults to 10 if parameter not sent.
          schema:
            type: integer
            nullable: true
        - name: user_id
          in: query
          description: Filter the results by User ID. The query string should be comma separated and url encoded.
          schema:
            type: string
            nullable: true
        - name: next_token
          in: query
          description: A string to get the next page of results if there are more results.
          schema:
            type: string
            nullable: true
        - name: email
          in: query
          description: Filter the results by email address. The query string should be comma separated and url encoded.
          schema:
            type: string
            nullable: true
        - name: username
          in: query
          description: Filter the results by username. The query string should be comma separated and url encoded.
          schema:
            type: string
            nullable: true
        - name: phone
          in: query
          description: Filter the results by phone. The query string should be comma separated and url encoded.
          schema:
            type: string
            nullable: true
        - name: expand
          in: query
          description: 'Additional data to include in the response. One or more of (comma-separated): "organizations", "identities", "billing".'
          required: false
          schema:
            type: string
            nullable: true
        - name: has_organization
          in: query
          description: Filter the results by if the user has at least one organization assigned.
          required: false
          schema:
            type: boolean
            nullable: true
        - name: active_since
          in: query
          description: Filter the results to only include users who have been active since this date. Date should be in ISO 8601 format.
          required: false
          schema:
            type: string
            format: date-time
            nullable: true
      responses:
        '200':
          description: Users successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/users_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/refresh_claims:
    servers: []
    post:
      tags:
        - Users
      operationId: refreshUserClaims
      x-scope: update:user_refresh_claims
      description: |
        Refreshes the user's claims and invalidates the current cache.

        <div>
          <code>update:user_refresh_claims</code>
        </div>
      summary: Refresh User Claims and Invalidate Cache
      parameters:
        - in: path
          name: user_id
          schema:
            type: string
          required: true
          description: The id of the user whose claims needs to be updated.
      responses:
        '200':
          description: Claims successfully refreshed.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Bad request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/user:
    servers: []
    get:
      tags:
        - Users
      operationId: getUserData
      x-scope: read:users
      description: |
        Retrieve a user record.

        <div>
          <code>read:users</code>
        </div>
      summary: Get user
      parameters:
        - name: id
          in: query
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
        - name: expand
          in: query
          description: 'Additional data to include in the response. One or more of (comma-separated): "organizations", "identities", "billing".'
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: User successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Users
      operationId: createUser
      description: |
        Creates a user record and optionally zero or more identities for the user. An example identity could be the email
        address of the user.

        <div>
          <code>create:users</code>
        </div>
      summary: Create user
      requestBody:
        description: The details of the user to create.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                profile:
                  description: Basic information required to create a user.
                  type: object
                  properties:
                    given_name:
                      type: string
                      description: User's first name.
                    family_name:
                      type: string
                      description: User's last name.
                    picture:
                      type: string
                      description: The user's profile picture.
                organization_code:
                  description: The unique code associated with the organization you want the user to join.
                  type: string
                provided_id:
                  description: An external id to reference the user.
                  type: string
                identities:
                  type: array
                  description: Array of identities to assign to the created user
                  items:
                    type: object
                    description: The result of the user creation operation.
                    properties:
                      type:
                        type: string
                        description: The type of identity to create, e.g. email, username, or phone.
                        enum:
                          - email
                          - phone
                          - username
                      is_verified:
                        type: boolean
                        description: Set whether an email or phone identity is verified or not.
                        example: true
                      details:
                        type: object
                        description: Additional details required to create the user.
                        properties:
                          email:
                            type: string
                            description: The email address of the user.
                            example: email@email.com
                          phone:
                            type: string
                            description: The phone number of the user.
                            example: '+61426148233'
                          phone_country_id:
                            type: string
                            description: The country code for the phone number.
                            example: au
                          username:
                            type: string
                            description: The username of the user.
                            example: myusername
                  example:
                    - type: email
                      is_verified: true
                      details:
                        email: email@email.com
                    - type: phone
                      is_verified: false
                      details:
                        phone: '+61426148233'
                        phone_country_id: au
                    - type: username
                      details:
                        username: myusername
      responses:
        '200':
          description: User successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_user_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Users
      operationId: updateUser
      description: |
        Update a user record.

        <div>
          <code>update:users</code>
        </div>
      summary: Update user
      parameters:
        - name: id
          in: query
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: The user to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                given_name:
                  type: string
                  description: User's first name.
                family_name:
                  type: string
                  description: User's last name.
                picture:
                  type: string
                  description: The user's profile picture.
                is_suspended:
                  type: boolean
                  description: Whether the user is currently suspended or not.
                is_password_reset_requested:
                  type: boolean
                  description: Prompt the user to change their password on next sign in.
                provided_id:
                  description: An external id to reference the user.
                  type: string
      responses:
        '200':
          description: User successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update_user_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Users
      operationId: deleteUser
      description: |
        Delete a user record.

        <div>
          <code>delete:users</code>
        </div>
      summary: Delete user
      parameters:
        - name: id
          in: query
          description: The user's id.
          required: true
          schema:
            type: string
            nullable: false
            example: kp_c3143a4b50ad43c88e541d9077681782
        - name: is_delete_profile
          in: query
          description: Delete all data and remove the user's profile from all of Kinde, including the subscriber list
          schema:
            type: boolean
            nullable: false
            example: true
      responses:
        '200':
          description: User successfully deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/feature_flags/{feature_flag_key}:
    servers: []
    patch:
      tags:
        - Users
      operationId: UpdateUserFeatureFlagOverride
      description: |
        Update user feature flag override.

        <div>
          <code>update:user_feature_flags</code>
        </div>
      summary: Update User Feature Flag Override
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
        - name: feature_flag_key
          in: path
          description: The identifier for the feature flag
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: Override value
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Feature flag override successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/properties/{property_key}:
    servers: []
    put:
      tags:
        - Users
      operationId: UpdateUserProperty
      description: |
        Update property value.

        <div>
          <code>update:user_properties</code>
        </div>
      summary: Update Property value
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
        - name: property_key
          in: path
          description: The identifier for the property
          required: true
          schema:
            type: string
        - name: value
          in: query
          description: The new property value
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Property successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/properties:
    servers: []
    get:
      tags:
        - Users
      operationId: GetUserPropertyValues
      description: |
        Gets properties for an user by ID.

        <div>
          <code>read:user_properties</code>
        </div>
      summary: Get property values
      parameters:
        - name: user_id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Properties successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_property_values_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_property_values_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Users
      operationId: UpdateUserProperties
      description: |
        Update property values.

        <div>
          <code>update:user_properties</code>
        </div>
      summary: Update Property values
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
      requestBody:
        description: Properties to update.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                properties:
                  description: Property keys and values
                  type: object
                  nullable: false
              required:
                - properties
      responses:
        '200':
          description: Properties successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/password:
    servers: []
    put:
      tags:
        - Users
      operationId: SetUserPassword
      description: |
        Set user password.

        <div>
          <code>update:user_passwords</code>
        </div>
      summary: Set User password
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
      requestBody:
        description: Password details.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                hashed_password:
                  description: The hashed password.
                  type: string
                hashing_method:
                  description: The hashing method or algorithm used to encrypt the user’s password. Default is bcrypt.
                  type: string
                  enum:
                    - bcrypt
                    - crypt
                    - md5
                    - wordpress
                salt:
                  type: string
                  description: Extra characters added to passwords to make them stronger. Not required for bcrypt.
                salt_position:
                  type: string
                  description: Position of salt in password string. Not required for bcrypt.
                  enum:
                    - prefix
                    - suffix
                is_temporary_password:
                  type: boolean
                  description: The user will be prompted to set a new password after entering this one.
              required:
                - hashed_password
      responses:
        '200':
          description: User successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          description: Error creating user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/identities:
    servers: []
    get:
      tags:
        - Users
      operationId: GetUserIdentities
      x-scope: read:user_identities
      description: |
        Gets a list of identities for an user by ID.

        <div>
          <code>read:user_identities</code>
        </div>
      summary: Get identities
      parameters:
        - name: user_id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
            nullable: false
        - name: starting_after
          in: query
          description: The ID of the identity to start after.
          schema:
            type: string
            nullable: true
        - name: ending_before
          in: query
          description: The ID of the identity to end before.
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Identities successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_identities_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_identities_response'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Users
      operationId: CreateUserIdentity
      description: |
        Creates an identity for a user.

        <div>
          <code>create:user_identities</code>
        </div>
      summary: Create identity
      parameters:
        - name: user_id
          in: path
          description: The user's ID.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: The identity details.
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  type: string
                  description: The email address, social identity, or username of the user.
                  example: sally@example.com
                type:
                  type: string
                  description: The identity type
                  enum:
                    - email
                    - username
                    - phone
                    - enterprise
                    - social
                  example: email
                phone_country_id:
                  type: string
                  description: The country code for the phone number, only required when identity type is 'phone'.
                  example: au
                connection_id:
                  type: string
                  description: The social or enterprise connection ID, only required when identity type is 'social' or 'enterprise'.
                  example: conn_019289347f1193da6c0e4d49b97b4bd2
      responses:
        '201':
          description: Identity successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create_identity_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/create_identity_response'
        '400':
          description: Error creating identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/sessions:
    servers: []
    get:
      tags:
        - Users
      operationId: GetUserSessions
      description: |
        Retrieve the list of active sessions for a specific user.

        <div>
          <code>read:user_sessions</code>
        </div>
      summary: Get user sessions
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: Successfully retrieved user sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_user_sessions_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Users
      operationId: DeleteUserSessions
      description: |
        Invalidate user sessions.

        <div>
          <code>delete:user_sessions</code>
        </div>
      summary: Delete user sessions
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: User sessions successfully invalidated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/mfa:
    servers: []
    get:
      tags:
        - Users
      operationId: GetUsersMFA
      description: |
        Get a user’s MFA configuration.

        <div>
          <code>read:user_mfa</code>
        </div>
      summary: Get user's MFA configuration
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: Successfully retrieve user's MFA configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_user_mfa_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
    delete:
      tags:
        - Users
      operationId: ResetUsersMFAAll
      description: |
        Reset all environment MFA factors for a user.

        <div>
          <code>delete:user_mfa</code>
        </div>
      summary: Reset all environment MFA for a user
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
      responses:
        '200':
          description: User's MFA successfully reset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/users/{user_id}/mfa/{factor_id}:
    servers: []
    delete:
      tags:
        - Users
      operationId: ResetUsersMFA
      description: |
        Reset a specific environment MFA factor for a user.

        <div>
          <code>delete:user_mfa</code>
        </div>
      summary: Reset specific environment MFA for a user
      parameters:
        - name: user_id
          in: path
          description: The identifier for the user
          required: true
          schema:
            type: string
            example: kp_c3143a4b50ad43c88e541d9077681782
        - name: factor_id
          in: path
          description: The identifier for the MFA factor
          required: true
          schema:
            type: string
            example: mfa_0193278a00ac29b3f6d4e4d462d55c47
      responses:
        '200':
          description: User's MFA successfully reset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/success_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
      security:
        - kindeBearerAuth: []
  /api/v1/events/{event_id}:
    servers: []
    get:
      tags:
        - Webhooks
      operationId: GetEvent
      x-scope: read:events
      description: |
        Returns an event

        <div>
          <code>read:events</code>
        </div>
      summary: Get Event
      parameters:
        - name: event_id
          in: path
          description: The event id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Event successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_event_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_event_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/event_types:
    servers: []
    get:
      tags:
        - Webhooks
      operationId: GetEventTypes
      x-scope: read:event_types
      description: |
        Returns a list event type definitions

        <div>
          <code>read:event_types</code>
        </div>
      summary: List Event Types
      responses:
        '200':
          description: Event types successfully retrieved.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_event_types_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_event_types_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/webhooks/{webhook_id}:
    servers: []
    delete:
      tags:
        - Webhooks
      operationId: DeleteWebHook
      description: |
        Delete webhook

        <div>
          <code>delete:webhooks</code>
        </div>
      summary: Delete Webhook
      parameters:
        - name: webhook_id
          in: path
          description: The webhook id.
          required: true
          schema:
            type: string
            nullable: false
      responses:
        '200':
          description: Webhook successfully deleted.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/delete_webhook_response'
            application/json:
              schema:
                $ref: '#/components/schemas/delete_webhook_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    patch:
      tags:
        - Webhooks
      operationId: UpdateWebHook
      description: |
        Update a webhook

        <div>
          <code>update:webhooks</code>
        </div>
      summary: Update a Webhook
      parameters:
        - name: webhook_id
          in: path
          description: The webhook id.
          required: true
          schema:
            type: string
            nullable: false
      requestBody:
        description: Update webhook request specification.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                event_types:
                  description: Array of event type keys
                  type: array
                  items:
                    type: string
                  nullable: false
                name:
                  description: The webhook name
                  type: string
                  nullable: false
                description:
                  description: The webhook description
                  type: string
                  nullable: true
      responses:
        '200':
          description: Webhook successfully updated.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/update_webhook_response'
            application/json:
              schema:
                $ref: '#/components/schemas/update_webhook_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
  /api/v1/webhooks:
    servers: []
    get:
      tags:
        - Webhooks
      operationId: GetWebHooks
      description: |
        List webhooks

        <div>
          <code>read:webhooks</code>
        </div>
      summary: List Webhooks
      responses:
        '200':
          description: Webhook list successfully returned.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/get_webhooks_response'
            application/json:
              schema:
                $ref: '#/components/schemas/get_webhooks_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
    post:
      tags:
        - Webhooks
      operationId: CreateWebHook
      description: |
        Create a webhook

        <div>
          <code>create:webhooks</code>
        </div>
      summary: Create a Webhook
      requestBody:
        description: Webhook request specification.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                endpoint:
                  description: The webhook endpoint url
                  type: string
                  nullable: false
                event_types:
                  description: Array of event type keys
                  type: array
                  items:
                    type: string
                  nullable: false
                name:
                  description: The webhook name
                  type: string
                  nullable: false
                description:
                  description: The webhook description
                  type: string
                  nullable: true
              required:
                - endpoint
                - event_types
                - name
      responses:
        '200':
          description: Webhook successfully created.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/create_webhook_response'
            application/json:
              schema:
                $ref: '#/components/schemas/create_webhook_response'
        '400':
          description: Invalid request.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '403':
          description: Invalid credentials.
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/error_response'
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '429':
          description: Request was throttled.
      security:
        - kindeBearerAuth: []
components:
  parameters:
    api_id:
      in: path
      name: api_id
      description: The API's ID.
      required: true
      schema:
        type: string
        example: 7ccd126599aa422a771abcb341596881
    application_id:
      in: path
      name: application_id
      description: The application's ID / client ID.
      required: true
      schema:
        type: string
        example: 3b0b5c6c8fcc464fab397f4969b5f482
    property_key:
      in: path
      name: property_key
      description: The property's key.
      required: true
      schema:
        type: string
        example: kp_some_key
    variable_id:
      in: path
      name: variable_id
      description: The environment variable's ID.
      required: true
      schema:
        type: string
        example: env_var_0192b1941f125645fa15bf28a662a0b3
  responses:
    bad_request:
      description: Invalid request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_response'
    not_found:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/not_found_response'
    forbidden:
      description: Unauthorized - invalid credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_response'
    too_many_requests:
      description: Too many requests. Request was throttled.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_response'
  schemas:
    success_response:
      type: object
      properties:
        message:
          type: string
          example: Success
        code:
          type: string
          example: OK
    error:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        message:
          type: string
          description: Error message.
    error_response:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/error'
    not_found_response:
      type: object
      properties:
        errors:
          type: object
          properties:
            code:
              type: string
              example: ROUTE_NOT_FOUND
            message:
              type: string
              example: The requested API route does not exist
    get_apis_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        next_token:
          type: string
          description: Pagination token.
          example: Njo5Om1hvWVfYXNj
        apis:
          type: array
          items:
            type: object
            properties:
              id:
                description: The unique ID for the API.
                type: string
                example: 7ccd126599aa422a771abcb341596881
              name:
                type: string
                description: The API's name.
                example: Example API
              audience:
                type: string
                description: A unique identifier for the API - commonly the URL. This value will be used as the `audience` parameter in authorization claims.
                example: https://api.example.com
              is_management_api:
                type: boolean
                description: Whether or not it is the Kinde management API.
                example: false
              scopes:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      example: api_scope_01939128c3d7193ae87c4755213c07c6
                    key:
                      type: string
                      example: create:apis
    create_apis_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: Success
        code:
          type: string
          description: A Kinde generated status code.
          example: OK
        api:
          type: object
          properties:
            id:
              description: The unique ID for the API.
              type: string
              example: 7ccd126599aa422a771abcb341596881
    create_api_scopes_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: Success
        code:
          type: string
          description: A Kinde generated status code.
          example: OK
        scope:
          type: object
          properties:
            id:
              description: The unique ID for the API scope.
              type: string
              example: api_scope_0193ab57965aef77b2b687d0ef673713
    get_environment_variables_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        has_more:
          description: Whether more records exist.
          type: boolean
        environment_variables:
          type: array
          items:
            $ref: '#/components/schemas/environment_variable'
    get_environment_variable_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        environment_variable:
          $ref: '#/components/schemas/environment_variable'
    create_environment_variable_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: Environment variable created
        code:
          type: string
          description: A Kinde generated status code.
          example: VARIABLE_CREATED
        environment_variable:
          type: object
          properties:
            id:
              description: The unique ID for the environment variable.
              type: string
              example: env_var_0192b194f6156fb7452fe38cfb144958
    update_environment_variable_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: Environment variable updated
        code:
          type: string
          description: A Kinde generated status code.
          example: ENVIRONMENT_VARIABLE_UPDATED
    delete_environment_variable_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: Environment variable deleted
        code:
          type: string
          description: A Kinde generated status code.
          example: ENVIRONMENT_VARIABLE_DELETED
    get_business_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        business:
          type: object
          properties:
            code:
              type: string
              description: The unique ID for the business.
              example: bus_c69fb73b091
            name:
              type: string
              description: Your business's name.
              example: Tailsforce Ltd
            phone:
              type: string
              description: Phone number associated with business.
              example: 555-555-5555
              nullable: true
            email:
              type: string
              description: Email address associated with business.
              example: sally@example.com
              nullable: true
            industry:
              type: string
              description: The industry your business is in.
              example: Healthcare & Medical
              nullable: true
            timezone:
              type: string
              description: The timezone your business is in.
              example: Los Angeles (Pacific Standard Time)
              nullable: true
            privacy_url:
              type: string
              description: Your Privacy policy URL.
              example: https://example.com/privacy
              nullable: true
            terms_url:
              type: string
              description: Your Terms and Conditions URL.
              example: https://example.com/terms
              nullable: true
            has_clickwrap:
              type: boolean
              description: Whether your business uses clickwrap agreements.
              example: false
            has_kinde_branding:
              type: boolean
              description: Whether your business shows Kinde branding.
              example: true
            created_on:
              type: string
              description: Date of business creation in ISO 8601 format.
              example: '2021-01-01T00:00:00Z'
    get_industries_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        industries:
          type: array
          items:
            type: object
            properties:
              key:
                description: The unique key for the industry.
                type: string
                example: administration_office_support
              name:
                type: string
                description: The display name for the industry.
                example: Administration & Office Support
    get_timezones_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        timezones:
          type: array
          items:
            type: object
            properties:
              key:
                description: The unique key for the timezone.
                type: string
                example: london_greenwich_mean_time
              name:
                type: string
                description: The display name for the timezone.
                example: London (Greenwich Mean Time) [+01:00]
    get_api_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: success_response
        api:
          type: object
          properties:
            id:
              type: string
              description: Unique ID of the API.
              example: 7ccd126599aa422a771abcb341596881
            name:
              type: string
              description: The API's name.
              example: Example API
            audience:
              type: string
              description: A unique identifier for the API - commonly the URL. This value will be used as the `audience` parameter in authorization claims.
              example: https://api.example.com
            is_management_api:
              type: boolean
              description: Whether or not it is the Kinde management API.
              example: false
            scopes:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: The ID of the scope.
                    example: api_scope_01939222ef24200668b9f5829af001ce
                  key:
                    type: string
                    description: The reference key for the scope.
                    example: read:logs
            applications:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    description: The Client ID of the application.
                    example: 3b0b5c6c8fcc464fab397f4969b5f482
                  name:
                    type: string
                    description: The application's name.
                    example: My M2M app
                  type:
                    type: string
                    description: The application's type.
                    enum:
                      - Machine to machine (M2M)
                      - Back-end web
                      - Front-end and mobile
                      - Device and IoT
                    example: Machine to machine (M2M)
                  is_active:
                    type: boolean
                    description: Whether or not the application is authorized to access the API
                    example: true
                    nullable: true
    get_api_scopes_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: success_response
        scopes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique ID of the API scope.
                example: api_scope_01939128c3d7193ae87c4755213c07c6
              key:
                type: string
                description: The scope's reference key.
                example: read:logs
              description:
                type: string
                description: Explanation of the scope purpose.
                example: Read logs scope
    get_api_scope_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: success_response
        scope:
          type: object
          properties:
            id:
              type: string
              description: Unique ID of the API scope.
              example: api_scope_01939128c3d7193ae87c4755213c07c6
            key:
              type: string
              description: The scope's reference key.
              example: read:logs
            description:
              type: string
              description: Explanation of the scope purpose.
              example: Read logs scope
    authorize_app_api_response:
      type: object
      properties:
        message:
          type: string
          example: API applications updated
        code:
          type: string
          example: API_APPLICATIONS_UPDATED
        applications_disconnected:
          type: array
          items:
            type: string
        applications_connected:
          type: array
          items:
            type: string
            example: d2db282d6214242b3b145c123f0c123
    delete_api_response:
      type: object
      properties:
        message:
          type: string
          example: API successfully deleted
        code:
          type: string
          example: API_DELETED
    user:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the user in Kinde.
        provided_id:
          type: string
          description: External ID for user.
        preferred_email:
          type: string
          description: Default email address of the user in Kinde.
        phone:
          type: string
          description: User's primary phone number.
        username:
          type: string
          description: Primary username of the user in Kinde.
        last_name:
          type: string
          description: User's last name.
        first_name:
          type: string
          description: User's first name.
        is_suspended:
          type: boolean
          description: Whether the user is currently suspended or not.
        picture:
          type: string
          description: User's profile picture URL.
        total_sign_ins:
          type: integer
          description: Total number of user sign ins.
          nullable: true
        failed_sign_ins:
          type: integer
          description: Number of consecutive failed user sign ins.
          nullable: true
        last_signed_in:
          type: string
          description: Last sign in date in ISO 8601 format.
          nullable: true
        created_on:
          type: string
          description: Date of user creation in ISO 8601 format.
          nullable: true
        organizations:
          type: array
          description: Array of organizations a user belongs to.
          items:
            type: string
        identities:
          type: array
          description: Array of identities belonging to the user.
          items:
            type: object
            properties:
              type:
                type: string
              identity:
                type: string
        billing:
          type: object
          properties:
            customer_id:
              type: string
    update_user_response:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the user in Kinde.
        given_name:
          type: string
          description: User's first name.
        family_name:
          type: string
          description: User's last name.
        email:
          type: string
          description: User's preferred email.
        is_suspended:
          type: boolean
          description: Whether the user is currently suspended or not.
        is_password_reset_requested:
          type: boolean
          description: Whether a password reset has been requested.
        picture:
          type: string
          description: User's profile picture URL.
          nullable: true
    users:
      type: array
      description: Array of users.
      items:
        $ref: '#/components/schemas/user'
    users_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        users:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique ID of the user in Kinde.
              provided_id:
                type: string
                description: External ID for user.
              email:
                type: string
                description: Default email address of the user in Kinde.
              phone:
                type: string
                description: User's primary phone number.
              username:
                type: string
                description: Primary username of the user in Kinde.
              last_name:
                type: string
                description: User's last name.
              first_name:
                type: string
                description: User's first name.
              is_suspended:
                type: boolean
                description: Whether the user is currently suspended or not.
              picture:
                type: string
                description: User's profile picture URL.
              total_sign_ins:
                type: integer
                description: Total number of user sign ins.
                nullable: true
              failed_sign_ins:
                type: integer
                description: Number of consecutive failed user sign ins.
                nullable: true
              last_signed_in:
                type: string
                description: Last sign in date in ISO 8601 format.
                nullable: true
              created_on:
                type: string
                description: Date of user creation in ISO 8601 format.
                nullable: true
              last_organization_sign_ins:
                type: array
                description: Array of organization sign-in information for the user.
                nullable: true
                items:
                  type: object
                  properties:
                    org_code:
                      type: string
                      description: The organization code.
                      example: org_d2d85014942
                    last_signed_in:
                      type: string
                      format: date-time
                      description: The date and time the user last signed in to this organization in ISO 8601 format.
                      example: '2026-01-28T14:26:02.448856+00:00'
              organizations:
                type: array
                description: Array of organizations a user belongs to.
                items:
                  type: string
              identities:
                type: array
                description: Array of identities belonging to the user.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    identity:
                      type: string
              billing:
                type: object
                properties:
                  customer_id:
                    type: string
                    description: The billing customer id.
                    example: customer_1245adbc6789
        next_token:
          type: string
          description: Pagination token.
    search_users_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        results:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Unique ID of the user in Kinde.
                example: kp_0ba7c433e5d648cf992621ce99d42817
              provided_id:
                type: string
                description: External ID for user.
                nullable: true
                example: U123456
              email:
                type: string
                description: Default email address of the user in Kinde.
                nullable: true
                example: user@domain.com
              username:
                type: string
                description: Primary username of the user in Kinde.
                nullable: true
                example: john.snow
              last_name:
                type: string
                description: User's last name.
                example: Snow
              first_name:
                type: string
                description: User's first name.
                example: John
              is_suspended:
                type: boolean
                description: Whether the user is currently suspended or not.
                example: true
              picture:
                type: string
                description: User's profile picture URL.
                example: https://example.com/john_snow.jpg
                nullable: true
              total_sign_ins:
                type: integer
                description: Total number of user sign ins.
                nullable: true
                example: 1
              failed_sign_ins:
                type: integer
                description: Number of consecutive failed user sign ins.
                nullable: true
                example: 0
              last_signed_in:
                type: string
                description: Last sign in date in ISO 8601 format.
                nullable: true
                example: '2025-02-12T18:02:23.614638+00:00'
              created_on:
                type: string
                description: Date of user creation in ISO 8601 format.
                nullable: true
                example: '2025-02-12T18:02:23.614638+00:00'
              organizations:
                type: array
                description: Array of organizations a user belongs to.
                items:
                  type: string
              identities:
                type: array
                description: Array of identities belonging to the user.
                items:
                  type: object
                  properties:
                    type:
                      type: string
                    identity:
                      type: string
              properties:
                type: object
                description: The user properties.
                additionalProperties:
                  type: string
              api_scopes:
                type: array
                description: Array of api scopes belonging to the user.
                items:
                  type: object
                  properties:
                    org_code:
                      type: string
                    scope:
                      type: string
                    api_id:
                      type: string
    create_user_response:
      type: object
      properties:
        id:
          description: Unique ID of the user in Kinde.
          type: string
        created:
          description: True if the user was successfully created.
          type: boolean
        identities:
          type: array
          items:
            $ref: '#/components/schemas/user_identity'
    create_organization_response:
      type: object
      properties:
        message:
          type: string
          description: Response message.
          example: Success
        code:
          type: string
          description: Response code.
          example: OK
        organization:
          type: object
          properties:
            code:
              description: The organization's unique code.
              type: string
              example: org_1ccfb819462
            billing_customer_id:
              description: The billing customer id if the organization was created with the is_create_billing_customer as true
              type: string
              example: customer_1245adbc6789
    user_identity:
      type: object
      properties:
        type:
          type: string
          description: The type of identity object created.
        result:
          type: object
          description: The result of the user creation operation.
          properties:
            created:
              type: boolean
              description: True if the user identity was successfully created.
    create_property_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        property:
          type: object
          properties:
            id:
              description: The property's ID.
              type: string
    create_identity_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        identity:
          type: object
          properties:
            id:
              description: The identity's ID.
              type: string
    get_identities_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        identities:
          type: array
          items:
            $ref: '#/components/schemas/identity'
        has_more:
          description: Whether more records exist.
          type: boolean
    get_user_sessions_response:
      type: object
      properties:
        code:
          type: string
          example: OK
        message:
          type: string
          example: Success
        has_more:
          type: boolean
          example: false
        sessions:
          type: array
          items:
            type: object
            properties:
              user_id:
                description: The unique identifier of the user associated with the session.
                type: string
                example: kp_5fc30d0547734f30aca617450202169f
              org_code:
                description: The organization code associated with the session, if applicable.
                type: string
                nullable: true
                example: org_1ccfb819462
              client_id:
                description: The client ID used to initiate the session.
                type: string
                example: 3b0b5c6c8fcc464fab397f4969b5f482
              expires_on:
                description: The timestamp indicating when the session will expire.
                type: string
                format: date-time
                example: '2025-04-02T13:04:20.315701+11:00'
              session_id:
                description: The unique identifier of the session.
                type: string
                example: session_0xc75ec12fe8434ffc9d527794f00692e5
              started_on:
                description: The timestamp when the session was initiated.
                type: string
                format: date-time
                example: '2025-04-01T13:04:20.315701+11:00'
              updated_on:
                description: The timestamp of the last update to the session.
                type: string
                format: date-time
                example: '2025-04-01T13:04:20+11'
              connection_id:
                description: The identifier of the connection through which the session was established.
                type: string
                example: conn_75ab8ec0faae4f73bae9fc64daf120c9
              last_ip_address:
                description: The last known IP address of the user during this session.
                type: string
                example: 192.168.65.1
              last_user_agent:
                description: The last known user agent (browser or app) used during this session.
                type: string
                example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
              initial_ip_address:
                description: The IP address from which the session was initially started.
                type: string
                example: 192.168.65.1
              initial_user_agent:
                description: The user agent (browser or app) used when the session was first created.
                type: string
                example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
    get_user_mfa_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        mfa:
          type: object
          properties:
            id:
              description: The MFA's identifier.
              type: string
              example: mfa_01933d1ca1f093e7fad48ebcdb65a871
            type:
              description: The type of MFA (e.g. email, SMS, authenticator app).
              type: string
              example: email
            created_on:
              description: The timestamp when the MFA was created.
              type: string
              format: date-time
              example: '2024-11-18T13:31:46.795085+11:00'
            name:
              description: The identifier used for MFA (e.g. email address, phone number).
              type: string
              example: sally@gmail.com
            is_verified:
              description: Whether the MFA is verified or not.
              type: boolean
              example: true
            usage_count:
              description: The number of times MFA has been used.
              type: integer
              example: 2
            last_used_on:
              description: The timestamp when the MFA was last used.
              type: string
              format: date-time
              example: '2024-11-18T13:32:07.22538+11:00'
    get_properties_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        properties:
          type: array
          items:
            $ref: '#/components/schemas/property'
        has_more:
          description: Whether more records exist.
          type: boolean
    get_property_values_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        properties:
          type: array
          items:
            $ref: '#/components/schemas/property_value'
        next_token:
          description: Pagination token.
          type: string
    create_category_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        category:
          type: object
          properties:
            id:
              description: The category's ID.
              type: string
    get_categories_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        categories:
          type: array
          items:
            $ref: '#/components/schemas/category'
        has_more:
          description: Whether more records exist.
          type: boolean
    get_event_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        event:
          type: object
          properties:
            type:
              type: string
            source:
              type: string
            event_id:
              type: string
            timestamp:
              type: integer
              description: Timestamp in ISO 8601 format.
            data:
              type: object
              description: Event specific data object.
    get_event_types_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        event_types:
          type: array
          items:
            $ref: '#/components/schemas/event_type'
    get_webhooks_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        webhooks:
          type: array
          items:
            $ref: '#/components/schemas/webhook'
    webhook:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        endpoint:
          type: string
        description:
          type: string
        event_types:
          type: array
          items:
            type: string
        created_on:
          type: string
          description: Created on date in ISO 8601 format.
    create_webhook_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        webhook:
          type: object
          properties:
            id:
              type: string
            endpoint:
              type: string
    update_webhook_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        webhook:
          type: object
          properties:
            id:
              type: string
    create_connection_response:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
        connection:
          type: object
          properties:
            id:
              description: The connection's ID.
              type: string
    get_connections_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        connections:
          type: array
          items:
            $ref: '#/components/schemas/connection'
        has_more:
          description: Whether more records exist.
          type: boolean
    delete_webhook_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
    event_type:
      type: object
      properties:
        id:
          type: string
        code:
          type: string
        name:
          type: string
        origin:
          type: string
        schema:
          type: object
    organization_item_schema:
      type: object
      properties:
        code:
          type: string
          description: The unique identifier for the organization.
          example: org_1ccfb819462
        name:
          type: string
          description: The organization's name.
          example: Acme Corp
        handle:
          type: string
          description: A unique handle for the organization - can be used for dynamic callback urls.
          example: acme_corp
          nullable: true
        is_default:
          type: boolean
          description: Whether the organization is the default organization.
          example: false
        external_id:
          type: string
          description: The organization's external identifier - commonly used when migrating from or mapping to other systems.
          example: some1234
          nullable: true
        is_auto_membership_enabled:
          type: boolean
          example: true
          description: If users become members of this organization when the org code is supplied during authentication.
    get_environment_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: success_response
        environment:
          type: object
          properties:
            code:
              type: string
              description: The unique identifier for the environment.
              example: production
            name:
              type: string
              description: The environment's name.
              example: Production
            hotjar_site_id:
              type: string
              description: Your HotJar site ID.
              example: 404009
              nullable: true
            google_analytics_tag:
              type: string
              description: Your Google Analytics tag.
              example: G-1234567
              nullable: true
            contentsquare_tag_id:
              type: string
              description: Your Contentsquare Tag ID.
              example: 769238b6e1309
              nullable: true
            is_default:
              type: boolean
              description: Whether the environment is the default. Typically this is your production environment.
              example: true
            is_live:
              type: boolean
              description: Whether the environment is live.
              example: true
            kinde_domain:
              type: string
              description: Your domain on Kinde
              example: example.kinde.com
            custom_domain:
              type: string
              description: Your custom domain for the environment
              nullable: true
              example: app.example.com
            logo:
              type: string
              nullable: true
              description: The organization's logo URL.
              example: https://yoursubdomain.kinde.com/logo?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
            logo_dark:
              type: string
              nullable: true
              description: The organization's logo URL to be used for dark themes.
              example: https://yoursubdomain.kinde.com/logo_dark?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
            favicon_svg:
              type: string
              nullable: true
              description: The organization's SVG favicon URL. Optimal format for most browsers
              example: https://yoursubdomain.kinde.com/favicon_svg?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
            favicon_fallback:
              type: string
              nullable: true
              description: The favicon URL to be used as a fallback in browsers that don't support SVG, add a PNG
              example: https://yoursubdomain.kinde.com/favicon_fallback?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
            link_color:
              type: object
              nullable: true
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            background_color:
              nullable: true
              type: object
              properties:
                raw:
                  type: string
                  example: '#ffffff'
                hex:
                  type: string
                  example: '#ffffff'
                hsl:
                  type: string
                  example: hsl(0, 0%, 100%)
            button_color:
              nullable: true
              type: object
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            button_text_color:
              nullable: true
              type: object
              properties:
                raw:
                  type: string
                  example: '#ffffff'
                hex:
                  type: string
                  example: '#ffffff'
                hsl:
                  type: string
                  example: hsl(0, 0%, 100%)
            link_color_dark:
              type: object
              nullable: true
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            background_color_dark:
              type: object
              nullable: true
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            button_text_color_dark:
              type: object
              nullable: true
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            button_color_dark:
              type: object
              nullable: true
              properties:
                raw:
                  type: string
                  example: '#0056F1'
                hex:
                  type: string
                  example: '#0056F1'
                hsl:
                  type: string
                  example: hsl(220, 100%, 50%)
            button_border_radius:
              type: integer
              nullable: true
              description: The border radius for buttons. Value is px, Kinde transforms to rem for rendering
              example: 8
            card_border_radius:
              type: integer
              nullable: true
              description: The border radius for cards. Value is px, Kinde transforms to rem for rendering
              example: 16
            input_border_radius:
              type: integer
              nullable: true
              description: The border radius for inputs. Value is px, Kinde transforms to rem for rendering
              example: 4
            theme_code:
              type: string
              description: Whether the environment is forced into light mode, dark mode or user preference
              enum:
                - light
                - dark
                - user_preference
            color_scheme:
              type: string
              description: The color scheme for the environment used for meta tags based on the theme code
              enum:
                - light
                - dark
                - light dark
            created_on:
              type: string
              description: Date of environment creation in ISO 8601 format.
              example: '2021-01-01T00:00:00Z'
    get_organization_response:
      type: object
      properties:
        code:
          type: string
          description: The unique identifier for the organization.
          example: org_1ccfb819462
        name:
          type: string
          description: The organization's name.
          example: Acme Corp
        handle:
          type: string
          description: A unique handle for the organization - can be used for dynamic callback urls.
          example: acme_corp
          nullable: true
        is_default:
          type: boolean
          description: Whether the organization is the default organization.
          example: false
        external_id:
          type: string
          description: The organization's external identifier - commonly used when migrating from or mapping to other systems.
          example: some1234
          nullable: true
        is_auto_membership_enabled:
          type: boolean
          example: true
          description: If users become members of this organization when the org code is supplied during authentication.
        logo:
          type: string
          nullable: true
          description: The organization's logo URL.
          example: https://yoursubdomain.kinde.com/logo?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
        logo_dark:
          type: string
          nullable: true
          description: The organization's logo URL to be used for dark themes.
          example: https://yoursubdomain.kinde.com/logo_dark?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
        favicon_svg:
          type: string
          nullable: true
          description: The organization's SVG favicon URL. Optimal format for most browsers
          example: https://yoursubdomain.kinde.com/favicon_svg?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
        favicon_fallback:
          type: string
          nullable: true
          description: The favicon URL to be used as a fallback in browsers that don't support SVG, add a PNG
          example: https://yoursubdomain.kinde.com/favicon_fallback?org_code=org_1ccfb819462&cache=311308b8ad3544bf8e572979f0e5748d
        allowed_domains:
          type: array
          description: Domains allowed for self-sign up to this environment.  Empty array means no restrictions.
          example:
            - https://acme.kinde.com
            - https://acme.com
          items:
            type: string
        link_color:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        background_color:
          nullable: true
          type: object
          properties:
            raw:
              type: string
              example: '#ffffff'
            hex:
              type: string
              example: '#ffffff'
            hsl:
              type: string
              example: hsl(0, 0%, 100%)
        button_color:
          nullable: true
          type: object
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        button_text_color:
          nullable: true
          type: object
          properties:
            raw:
              type: string
              example: '#ffffff'
            hex:
              type: string
              example: '#ffffff'
            hsl:
              type: string
              example: hsl(0, 0%, 100%)
        link_color_dark:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        background_color_dark:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        button_text_color_dark:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        button_color_dark:
          type: object
          nullable: true
          properties:
            raw:
              type: string
              example: '#0056F1'
            hex:
              type: string
              example: '#0056F1'
            hsl:
              type: string
              example: hsl(220, 100%, 50%)
        button_border_radius:
          type: integer
          nullable: true
          description: The border radius for buttons. Value is px, Kinde transforms to rem for rendering
          example: 8
        card_border_radius:
          type: integer
          nullable: true
          description: The border radius for cards. Value is px, Kinde transforms to rem for rendering
          example: 16
        input_border_radius:
          type: integer
          nullable: true
          description: The border radius for inputs. Value is px, Kinde transforms to rem for rendering
          example: 4
        theme_code:
          type: string
          description: Whether the environment is forced into light mode, dark mode or user preference
          enum:
            - light
            - dark
            - user_preference
        color_scheme:
          type: string
          description: The color scheme for the environment used for meta tags based on the theme code
          enum:
            - light
            - dark
            - light dark
        created_on:
          type: string
          description: Date of organization creation in ISO 8601 format.
          example: '2021-01-01T00:00:00Z'
        is_allow_registrations:
          nullable: true
          type: boolean
          example: true
          deprecated: true
          description: Deprecated - Use 'is_auto_membership_enabled' instead
        sender_name:
          nullable: true
          type: string
          example: Acme Corp
          description: The name of the organization that will be used in emails
        sender_email:
          nullable: true
          type: string
          example: hello@acmecorp.com
          description: The email address that will be used in emails. Requires custom SMTP to be set up.
        is_suspended:
          type: boolean
          description: Whether the organization is currently suspended or not.
          example: false
        suspended_on:
          type: string
          description: The date the organization was suspended in ISO 8601 format. Null if not suspended.
          nullable: true
          example: '2021-01-01T00:00:00Z'
        billing:
          type: object
          description: The billing information if the organization is a billing customer.
          properties:
            billing_customer_id:
              type: string
            agreements:
              type: array
              description: The billing agreements the billing customer is currently subscribed to
              items:
                type: object
                properties:
                  plan_code:
                    type: string
                    example: pro
                    description: The code of the plan from which this agreement is taken from
                  agreement_id:
                    type: string
                    example: agreement_a1234b
                    description: The id of the billing agreement in Kinde
    organization_user:
      type: object
      properties:
        id:
          type: string
          example: kp:97c2ba24217d48e3b96a799b76cf2c74
          description: The unique ID for the user.
          nullable: true
        email:
          type: string
          example: john.snow@example.com
          description: The user's email address.
          nullable: true
        full_name:
          type: string
          example: John Snow
          description: The user's full name.
        last_name:
          type: string
          example: Snow
          description: The user's last name.
          nullable: true
        first_name:
          type: string
          example: John
          description: The user's first name.
          nullable: true
        picture:
          type: string
          example: https://example.com/john_snow.jpg
          description: The user's profile picture URL.
          nullable: true
        joined_on:
          type: string
          example: '2021-01-01T00:00:00Z'
          description: The date the user joined the organization.
        last_accessed_on:
          type: string
          example: '2022-01-01T00:00:00Z'
          description: The date the user last accessed the organization.
          nullable: true
        is_suspended:
          type: boolean
          description: Whether the user is currently suspended or not.
          example: false
        roles:
          type: array
          description: The roles the user has in the organization.
          items:
            type: string
            example: admin
            description: The role's key.
    category:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
    connection:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        connection:
          type: object
          properties:
            id:
              type: string
            name:
              type: string
            display_name:
              type: string
            strategy:
              type: string
    environment_variable:
      type: object
      properties:
        id:
          description: The unique ID for the environment variable.
          type: string
          example: env_var_0192b1941f125645fa15bf28a662a0b3
        key:
          type: string
          description: The name of the environment variable.
          example: MY_API_KEY
        value:
          type: string
          description: The value of the environment variable.
          example: some-secret
          nullable: true
        is_secret:
          type: boolean
          description: Whether the environment variable is sensitive.
          example: false
        created_on:
          type: string
          description: The date the environment variable was created.
          example: '2021-01-01T00:00:00Z'
    identity:
      type: object
      properties:
        id:
          type: string
          description: The unique ID for the identity
          example: identity_019617f0cd72460a42192cf37b41084f
        type:
          type: string
          description: The type of identity
          example: email
        is_confirmed:
          type: boolean
          description: Whether the identity is confirmed
          example: true
        created_on:
          type: string
          description: Date of user creation in ISO 8601 format
          example: '2025-01-01T00:00:00Z'
        last_login_on:
          type: string
          description: Date of last login in ISO 8601 format
          example: '2025-01-05T00:00:00Z'
        total_logins:
          type: integer
          example: 20
        name:
          type: string
          description: The value of the identity
          example: sally@example.com
        email:
          type: string
          description: The associated email of the identity
          example: sally@example.com
        is_primary:
          type: boolean
          description: Whether the identity is the primary identity for the user
          nullable: true
          example: true
    property:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        is_private:
          type: boolean
        description:
          type: string
        is_kinde_property:
          type: boolean
    property_value:
      type: object
      properties:
        id:
          type: string
          example: prop_0192b7e8b4f8ca08110d2b22059662a8
        name:
          type: string
          example: Town
        description:
          type: string
          example: Where the entity is located
          nullable: true
        key:
          type: string
          example: kp_town
        value:
          type: string
          example: West-side Staines massive
          nullable: true
    role:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        description:
          type: string
    subscribers_subscriber:
      type: object
      properties:
        id:
          type: string
        email:
          type: string
        full_name:
          type: string
        first_name:
          type: string
        last_name:
          type: string
    subscriber:
      type: object
      properties:
        id:
          type: string
        preferred_email:
          type: string
        first_name:
          type: string
        last_name:
          type: string
    organization_user_role:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
    organization_user_role_permissions:
      type: object
      properties:
        id:
          type: string
        role:
          type: string
        permissions:
          type: object
          properties:
            key:
              type: string
    organization_user_permission:
      type: object
      properties:
        id:
          type: string
        key:
          type: string
        name:
          type: string
        description:
          type: string
        roles:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              key:
                type: string
    organization_users:
      type: array
      items:
        $ref: '#/components/schemas/organization_user'
    get_subscriber_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        subscribers:
          type: array
          items:
            $ref: '#/components/schemas/subscriber'
    get_subscribers_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        subscribers:
          type: array
          items:
            $ref: '#/components/schemas/subscribers_subscriber'
        next_token:
          description: Pagination token.
          type: string
    get_roles_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        roles:
          type: array
          items:
            $ref: '#/components/schemas/roles'
        next_token:
          description: Pagination token.
          type: string
    get_role_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        role:
          type: object
          properties:
            id:
              type: string
              description: The role's ID.
              example: 01929904-316d-bb2c-069f-99dfea4ac394
            key:
              type: string
              description: The role identifier to use in code.
              example: admin
            name:
              type: string
              description: The role's name.
              example: Administrator
            description:
              type: string
              description: The role's description.
              example: Full access to all resources.
            is_default_role:
              type: boolean
              description: Whether the role is the default role.
              example: false
    create_roles_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        role:
          type: object
          properties:
            id:
              type: string
              description: The role's ID.
    add_role_scope_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: ROLE_SCOPE_ADDED
        message:
          type: string
          description: Response message.
          example: Scope added to role
    delete_role_scope_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: SCOPE_DELETED
        message:
          type: string
          description: Response message.
          example: Scope deleted from role
    get_organizations_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/organization_item_schema'
        next_token:
          description: Pagination token.
          type: string
          example: Mjo5Om1hbWVfYZNj
    get_organization_users_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        organization_users:
          type: array
          items:
            $ref: '#/components/schemas/organization_user'
        next_token:
          type: string
          description: Pagination token.
    get_organizations_user_roles_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        roles:
          type: array
          items:
            $ref: '#/components/schemas/organization_user_role'
        next_token:
          type: string
          description: Pagination token.
    get_organizations_user_permissions_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/organization_user_permission'
    get_organization_invites_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        invites:
          type: array
          items:
            $ref: '#/components/schemas/organization_invite'
        next_token:
          type: string
          description: Pagination token.
          nullable: true
    get_organization_invite_response:
      type: object
      properties:
        message:
          type: string
          description: Response message.
          example: Success
        id:
          type: string
          description: The invitation's unique identifier.
          example: inv_abc123def456
        code:
          type: string
          description: The invitation's code.
          example: inv_abc123def456
        email:
          type: string
          description: The email address of the invited user.
          example: user@example.com
        first_name:
          type: string
          description: The first name of the invited user.
          nullable: true
          example: John
        last_name:
          type: string
          description: The last name of the invited user.
          nullable: true
          example: Doe
        full_name:
          type: string
          description: The full name of the invited user.
          example: John Doe
        created_on:
          type: string
          format: date-time
          description: When the invitation was created.
          example: '2024-11-18T13:32:03+11'
        is_sent:
          type: boolean
          description: Whether the invitation email was sent.
          example: true
        accepted_on:
          type: string
          format: date-time
          description: When the invitation was accepted.
          nullable: true
          example: '2024-11-19T10:15:30+11'
        roles:
          type: array
          description: The roles assigned to the invitation.
          items:
            type: object
            properties:
              key:
                type: string
                description: The role's key.
                example: admin
              name:
                type: string
                description: The role's name.
                example: Administrator
          example:
            - key: admin
              name: Administrator
            - key: manager
              name: Manager
        is_revoked:
          type: boolean
          description: Whether the invitation has been revoked.
          example: false
        invite_link:
          type: string
          description: URL to share with the invitee to accept the invitation.
          example: https://example.kinde.com/team_invitation?code=inv_abc123def456
    create_organization_invite_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: INVITATION_CREATED
        message:
          type: string
          description: Response message.
          example: Invitation created
        invite:
          type: object
          properties:
            id:
              type: string
              description: The invitation's unique identifier.
              example: inv_abc123def456
            code:
              type: string
              description: The invitation's code.
              example: inv_abc123def456
            email:
              type: string
              description: The email address of the invited user.
              example: user@example.com
            first_name:
              type: string
              description: The first name of the invited user.
              nullable: true
              example: John
            last_name:
              type: string
              description: The last name of the invited user.
              nullable: true
              example: Doe
            full_name:
              type: string
              description: The full name of the invited user.
              example: John Doe
            created_on:
              type: string
              format: date-time
              description: When the invitation was created.
              example: '2024-11-18T13:32:03+11'
            is_sent:
              type: boolean
              description: Whether the invitation email was sent.
              example: true
            accepted_on:
              type: string
              format: date-time
              description: When the invitation was accepted. Always null for a freshly created invitation.
              nullable: true
              example: null
            roles:
              type: array
              description: The roles assigned to the invitation.
              items:
                type: object
                properties:
                  key:
                    type: string
                    description: The role's key.
                    example: admin
                  name:
                    type: string
                    description: The role's name.
                    example: Administrator
              example:
                - key: admin
                  name: Administrator
                - key: manager
                  name: Manager
            is_revoked:
              type: boolean
              description: Whether the invitation has been revoked. Always false for a freshly created invitation.
              example: false
            invite_link:
              type: string
              description: URL to share with the invitee to accept the invitation.
              example: https://example.kinde.com/team_invitation?code=inv_abc123def456
    organization_invite:
      type: object
      properties:
        id:
          type: string
          description: The invitation's unique identifier.
          example: inv_abc123def456
        code:
          type: string
          description: The invitation's code.
          example: inv_abc123def456
        email:
          type: string
          description: The email address of the invited user.
          example: user@example.com
        first_name:
          type: string
          description: The first name of the invited user.
          nullable: true
          example: John
        last_name:
          type: string
          description: The last name of the invited user.
          nullable: true
          example: Doe
        full_name:
          type: string
          description: The full name of the invited user.
          example: John Doe
        created_on:
          type: string
          format: date-time
          description: When the invitation was created.
          example: '2024-11-18T13:32:03+11'
        is_sent:
          type: boolean
          description: Whether the invitation email was sent.
          example: true
        accepted_on:
          type: string
          format: date-time
          description: When the invitation was accepted.
          nullable: true
          example: '2024-11-19T10:15:30+11'
        roles:
          type: array
          description: The roles assigned to the invitation.
          items:
            type: object
            properties:
              key:
                type: string
                description: The role's key.
                example: admin
              name:
                type: string
                description: The role's name.
                example: Administrator
          example:
            - key: admin
              name: Administrator
            - key: manager
              name: Manager
        is_revoked:
          type: boolean
          description: Whether the invitation has been revoked.
          example: false
        invite_link:
          type: string
          description: URL to share with the invitee to accept the invitation.
          example: https://example.kinde.com/team_invitation?code=inv_abc123def456
    get_organization_feature_flags_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        feature_flags:
          type: object
          description: The environment's feature flag settings.
          additionalProperties:
            type: object
            properties:
              type:
                type: string
                enum:
                  - str
                  - int
                  - bool
              value:
                type: string
    get_environment_feature_flags_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        feature_flags:
          type: object
          description: The environment's feature flag settings.
          additionalProperties:
            type: object
            properties:
              type:
                type: string
                enum:
                  - str
                  - int
                  - bool
              value:
                type: string
        next_token:
          type: string
          description: Pagination token.
    add_organization_users_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        users_added:
          type: array
          items:
            type: string
    update_role_permissions_response:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        permissions_added:
          type: array
          items:
            type: string
        permissions_removed:
          type: array
          items:
            type: string
    update_organization_users_response:
      type: object
      properties:
        message:
          type: string
          example: Success
        code:
          type: string
          example: OK
        users_added:
          type: array
          items:
            type: string
            example: kp_057ee6debc624c70947b6ba512908c35
        users_updated:
          type: array
          items:
            type: string
            example: kp_057ee6debc624c70947b6ba512908c35
        users_removed:
          type: array
          items:
            type: string
            example: kp_057ee6debc624c70947b6ba512908c35
    connected_apps_auth_url:
      type: object
      properties:
        url:
          type: string
          description: A URL that is used to authenticate an end-user against a connected app.
        session_id:
          type: string
          description: A unique identifier for the login session.
    create_subscriber_success_response:
      type: object
      properties:
        subscriber:
          type: object
          properties:
            subscriber_id:
              type: string
              description: A unique identifier for the subscriber.
    connected_apps_access_token:
      type: object
      properties:
        access_token:
          type: string
          description: The access token to access a third-party provider.
        access_token_expiry:
          type: string
          description: The date and time that the access token expires.
    api_result:
      type: object
      properties:
        result:
          type: string
          description: The result of the api operation.
    create_application_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        application:
          type: object
          properties:
            id:
              description: The application's identifier.
              type: string
              example: 3b0b5c6c8fcc464fab397f4969b5f482
            client_id:
              description: The application's client ID.
              type: string
              example: 3b0b5c6c8fcc464fab397f4969b5f482
            client_secret:
              description: The application's client secret.
              type: string
              example: sUJSHI3ZQEVTJkx6hOxdOSHaLsZkCBRFLzTNOI791rX8mDjgt7LC
    get_application_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        application:
          type: object
          properties:
            id:
              description: The application's identifier.
              type: string
              example: 3b0b5c6c8fcc464fab397f4969b5f482
            name:
              description: The application's name.
              type: string
              example: My React app
            type:
              description: The application's type.
              type: string
              enum:
                - m2m
                - reg
                - spa
            client_id:
              description: The application's client ID.
              type: string
              example: 3b0b5c6c8fcc464fab397f4969b5f482
            client_secret:
              description: The application's client secret.
              type: string
              example: sUJSHI3ZQEVTJkx6hOxdOSHaLsZkCBRFLzTNOI791rX8mDjgt7LC
            login_uri:
              description: The default login route for resolving session issues.
              type: string
              example: https://yourapp.com/api/auth/login
            homepage_uri:
              description: The homepage link to your application.
              type: string
              example: https://yourapp.com
            has_cancel_button:
              description: Whether the application has a cancel button to allow users to exit the auth flow [Beta].
              type: boolean
              example: false
    applications:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
    get_applications_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        applications:
          type: array
          items:
            $ref: '#/components/schemas/applications'
        next_token:
          description: Pagination token.
          type: string
    redirect_callback_urls:
      type: object
      properties:
        redirect_urls:
          type: array
          description: An application's redirect URLs.
          items:
            type: string
    get_redirect_callback_urls_response:
      type: object
      properties:
        redirect_urls:
          description: An application's redirect callback URLs.
          type: array
          items:
            $ref: '#/components/schemas/redirect_callback_urls'
    logout_redirect_urls:
      type: object
      properties:
        logout_urls:
          type: array
          description: An application's logout URLs.
          items:
            type: string
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
    get_permissions_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/permissions'
        next_token:
          type: string
          description: Pagination token.
    permissions:
      type: object
      properties:
        id:
          type: string
          description: The permission's ID.
        key:
          type: string
          description: The permission identifier to use in code.
        name:
          type: string
          description: The permission's name.
        description:
          type: string
          description: The permission's description.
    scopes:
      type: object
      properties:
        id:
          type: string
          description: Scope ID.
          example: api_scope_019541f3fa0c874fc47b3ae73585b21c
        key:
          type: string
          description: Scope key.
          example: create:users
        description:
          type: string
          description: Description of scope.
          example: Create users
        api_id:
          type: string
          description: API ID.
          example: 3635b4431f174de6b789c67481bd0c7a
    roles:
      type: object
      properties:
        id:
          type: string
          description: The role's ID.
        key:
          type: string
          description: The role identifier to use in code.
        name:
          type: string
          description: The role's name.
        description:
          type: string
          description: The role's description.
          nullable: true
        is_default_role:
          type: boolean
          description: Whether the role is the default role.
    role_permissions_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
        message:
          type: string
          description: Response message.
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/permissions'
        next_token:
          type: string
          description: Pagination token.
    role_scopes_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        scopes:
          type: array
          items:
            $ref: '#/components/schemas/scopes'
    read_logo_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        logos:
          type: array
          description: A list of logos.
          items:
            type: object
            properties:
              type:
                type: string
                description: The type of logo (light or dark).
                example: light
              file_name:
                type: string
                description: The name of the logo file.
                example: kinde_light.jpeg
              path:
                type: string
                description: The relative path to the logo file.
                example: /logo?p_org_code=org_1767f11ce62
        message:
          type: string
          description: Response message.
          example: Success
    read_env_logo_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        logos:
          type: array
          description: A list of logos.
          items:
            type: object
            properties:
              type:
                type: string
                description: The type of logo (light or dark).
                example: light
              file_name:
                type: string
                description: The name of the logo file.
                example: kinde_light.jpeg
        message:
          type: string
          description: Response message.
          example: Success
    get_billing_entitlements_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        has_more:
          description: Whether more records exist.
          type: boolean
        entitlements:
          type: array
          description: A list of entitlements
          items:
            type: object
            properties:
              id:
                type: string
                description: The friendly id of an entitlement
                example: entitlement_0195ac80a14e8d71f42b98e75d3c61ad
              fixed_charge:
                type: integer
                description: The price charged if this is an entitlement for a fixed charged
                example: 35
              price_name:
                type: string
                description: The name of the price associated with the entitlement
                example: Pro gym
              unit_amount:
                type: integer
                description: The price charged for this entitlement in cents
              feature_code:
                type: string
                description: The feature code of the feature corresponding to this entitlement
                example: CcdkvEXpbg6UY
              feature_name:
                type: string
                description: The feature name of the feature corresponding to this entitlement
                example: Pro Gym
              entitlement_limit_max:
                type: integer
                description: The maximum number of units of the feature the customer is entitled to
              entitlement_limit_min:
                type: integer
                description: The minimum number of units of the feature the customer is entitled to
        plans:
          type: array
          description: A list of plans.
          items:
            type: object
            properties:
              code:
                type: string
                description: The plan code the billing customer is subscribed to
              subscribed_on:
                type: string
                format: date-time
                example: '2024-11-18T13:32:03+11'
    get_billing_agreements_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        has_more:
          description: Whether more records exist.
          type: boolean
        agreements:
          type: array
          description: A list of billing agreements
          items:
            type: object
            properties:
              id:
                type: string
                description: The friendly id of an agreement
                example: agreement_0195ac80a14c2ca2cec97d026d864de0
              plan_code:
                type: string
                description: The plan code the billing customer is subscribed to
              expires_on:
                type: string
                format: date-time
                description: The date the agreement expired (and was no longer active)
                example: '2024-11-18T13:32:03+11'
              billing_group_id:
                type: string
                description: The friendly id of the billing group this agreement's plan is part of
                example: sbg_0195abf6773fdae18d5da72281a3fde2
              entitlements:
                type: array
                description: A list of billing entitlements that is part of this agreement
                items:
                  type: object
                  properties:
                    feature_code:
                      type: string
                      description: The feature code of the feature corresponding to this entitlement
                      example: CcdkvEXpbg6UY
                    entitlement_id:
                      type: string
                      description: The friendly id of an entitlement
                      example: entitlement_0195ac80a14e8d71f42b98e75d3c61ad
    create_meter_usage_record_response:
      type: object
      properties:
        message:
          type: string
          description: Response message.
          example: Success
        code:
          type: string
          description: Response code.
          example: OK
    get_api_keys_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        has_more:
          description: Whether more records exist.
          type: boolean
        api_keys:
          type: array
          items:
            type: object
            properties:
              id:
                description: The unique ID for the API key.
                type: string
                example: api_key_0195ac80a14e8d71f42b98e75d3c61ad
              name:
                type: string
                description: The API key's name.
                example: My API Key
              type:
                type: string
                description: The type of API key.
                example: organization
              status:
                type: string
                description: The status of the API key.
                example: active
              key_prefix:
                type: string
                description: The first 6 characters of the API key for identification.
                example: kinde_
              key_suffix:
                type: string
                description: The last 4 characters of the API key for identification.
                example: abcd
                nullable: true
              created_on:
                type: string
                format: date-time
                description: When the API key was created.
                example: '2024-11-18T13:32:03+11'
              last_verified_on:
                type: string
                format: date-time
                description: When the API key was last verified.
                example: '2024-11-18T13:32:03+11'
                nullable: true
              last_verified_ip:
                type: string
                description: The IP address from which the API key was last verified.
                example: 192.168.1.1
                nullable: true
              created_by:
                type: string
                description: The name of the user who created the API key.
                example: John Doe
                nullable: true
              api_ids:
                type: array
                description: Array of API IDs associated with this key.
                items:
                  type: string
                example:
                  - api_123
                  - api_456
              scopes:
                type: array
                description: Array of scopes associated with this key.
                items:
                  type: string
                example:
                  - read:users
                  - write:users
    rotate_api_key_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: API_KEY_ROTATED
        message:
          type: string
          description: Response message.
          example: API key rotated successfully
        api_key:
          type: object
          properties:
            id:
              type: string
              description: The unique ID for the API key.
              example: api_key_0195ac80a14e8d71f42b98e75d3c61ad
            key:
              type: string
              description: The new API key value (only shown once).
              example: k_live_1234567890abcdef1234567890abcdef
    create_api_key_response:
      type: object
      properties:
        message:
          type: string
          description: A Kinde generated message.
          example: API key created
        code:
          type: string
          description: A Kinde generated status code.
          example: API_KEY_CREATED
        api_key:
          type: object
          properties:
            id:
              description: The unique ID for the API key.
              type: string
              example: api_key_0195ac80a14e8d71f42b98e75d3c61ad
            key:
              description: The API key value (only shown once on creation).
              type: string
              example: k_live_1234567890abcdef
    verify_api_key_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: API_KEY_VERIFIED
        message:
          type: string
          description: Response message.
          example: API key verified
        is_valid:
          type: boolean
          description: Whether the API key is valid.
          example: true
        key_id:
          type: string
          description: The unique ID for the API key.
          example: api_key_0195ac80a14e8d71f42b98e75d3c61ad
        status:
          type: string
          description: The status of the API key.
          example: active
        scopes:
          type: array
          description: Array of scopes associated with this key.
          items:
            type: string
          example:
            - read:users
            - write:users
        org_code:
          type: string
          description: The organization code associated with this key.
          example: org_123
          nullable: true
        user_id:
          type: string
          description: The user ID associated with this key.
          example: user_456
          nullable: true
        last_verified_on:
          type: string
          format: date-time
          description: When the API key was last verified.
          example: '2024-11-18T13:32:03+11'
          nullable: true
        verification_count:
          type: integer
          description: Number of times this API key has been verified.
          example: 42
    get_api_key_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        api_key:
          type: object
          properties:
            id:
              description: The unique ID for the API key.
              type: string
              example: api_key_0195ac80a14e8d71f42b98e75d3c61ad
            name:
              type: string
              description: The API key's name.
              example: My API Key
            type:
              type: string
              description: The type of API key.
              example: organization
            status:
              type: string
              description: The status of the API key.
              example: active
            key_prefix:
              type: string
              description: The first 6 characters of the API key for identification.
              example: k_live
            key_suffix:
              type: string
              description: The last 4 characters of the API key for identification.
              example: abcd
              nullable: true
            created_on:
              type: string
              format: date-time
              description: When the API key was created.
              example: '2024-11-18T13:32:03+11'
            last_verified_on:
              type: string
              format: date-time
              description: When the API key was last verified.
              example: '2024-11-18T13:32:03+11'
              nullable: true
            last_verified_ip:
              type: string
              description: The IP address from which the API key was last verified.
              example: 192.168.1.1
              nullable: true
            created_by:
              type: string
              description: The name of the user who created the API key.
              example: John Doe
              nullable: true
            api_ids:
              type: array
              description: Array of API IDs associated with this key.
              items:
                type: string
              example:
                - api_123
                - api_456
            scopes:
              type: array
              description: Array of scopes associated with this key.
              items:
                type: string
              example:
                - read:users
                - write:users
            verification_count:
              type: integer
              description: Number of times this API key has been verified.
              example: 42
              nullable: true
            organization_id:
              type: string
              description: The organization code associated with this key.
              example: org_123
              nullable: true
            user_id:
              type: string
              description: The user ID associated with this key.
              example: user_456
              nullable: true
    get_directories_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        has_more:
          description: Whether more records exist.
          type: boolean
        directories:
          type: array
          items:
            $ref: '#/components/schemas/directory'
    get_directory_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: OK
        message:
          type: string
          description: Response message.
          example: Success
        directory:
          $ref: '#/components/schemas/directory'
    create_directory_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: DIRECTORY_CREATED
        message:
          type: string
          description: Response message.
          example: SCIM directory created successfully
        directory:
          $ref: '#/components/schemas/directory'
    update_directory_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: DIRECTORY_UPDATED
        message:
          type: string
          description: Response message.
          example: SCIM directory updated successfully
        directory:
          $ref: '#/components/schemas/directory'
    delete_directory_response:
      type: object
      properties:
        code:
          type: string
          description: Response code.
          example: DIRECTORY_DELETED
        message:
          type: string
          description: Response message.
          example: SCIM directory deleted successfully
    directory:
      type: object
      properties:
        id:
          type: string
          description: The unique ID for the SCIM directory.
          example: directory_0192b1941f125645fa15bf28a662a0b3
        directory_name:
          type: string
          description: The name of the SCIM directory.
          example: Production Directory
        directory_endpoint_id:
          type: string
          description: The endpoint ID for the SCIM directory.
          example: ksde_0192b1941f125645fa15bf28a662a0b3
        secret_token:
          type: string
          description: The secret token for SCIM authentication.
          example: kstkn_0192b1941f125645fa15bf28a662a0b3
        status:
          type: string
          description: The current status of the SCIM directory.
          enum:
            - Pending
            - Validating
            - Active
            - Inactive
            - Error
          example: Pending
        organization_code:
          type: string
          description: The organization code this directory belongs to.
          example: org_1ccfb819462
        last_sync_started_at:
          type: string
          format: date-time
          description: When the last sync started.
          example: '2024-11-18T13:32:03+11'
          nullable: true
        last_sync_completed_at:
          type: string
          format: date-time
          description: When the last sync completed.
          example: '2024-11-18T13:32:03+11'
          nullable: true
        last_sync_error:
          type: string
          description: The last sync error message.
          example: Connection timeout
          nullable: true
        created_on:
          type: string
          format: date-time
          description: When the directory was created.
          example: '2024-11-18T13:32:03+11'
  securitySchemes:
    kindeBearerAuth:
      description: |
        Requires an access token obtained using the client_credentials flow.
      type: http
      scheme: bearer
      bearerFormat: JWT
