openapi: 3.0.3
info:
    version: 2.0.0
    title: Corbado Backend API
    description: |
        # Introduction
        This documentation gives an overview of all Corbado Backend API calls to implement passwordless authentication with Passkeys.
    contact:
        name: Corbado team
        email: support@corbado.com
        url: https://www.corbado.com
servers:
    - url: https://backendapi.corbado.io/v2
tags:
    - name: Users
      description: All API calls to manage users
    - name: Sessions
      description: All API calls to manage sessions
    - name: Challenges
      description: All API calls to manage challenges
    - name: Identifiers
      description: All API calls to manage login identifiers
    - name: Passkeys
      description: All API calls for passkey flows
    - name: SSO
      description: All API calls for SSO flows
    - name: AuthEvents
      description: All API calls to manage authentication events
    - name: PasskeyEvents
      description: All API calls to manage passkey events
    - name: ProjectConfig
      description: All API calls to manage project configurations
    - name: ConnectTokens
      description: All API calls to manage connectTokens
    - name: PasskeyChallenges
      description: All API calls to manage passkey challenges
    - name: WebhookEndpoints
      description: All API calls to manage webhook endpoints
    - name: PasswordManagers
      description: All API calls to manage password managers
    - name: ClientEnvs
      description: All API calls to manage client environments
    - name: Devices
      description: All API calls to manage devices
    - name: Exports
      description: All API calls to manage project export files
paths:
    /users:
        post:
            summary: Create a new user
            description: |
                Creates a new user with the given status. Use [login identifiers](/api-reference/backend-api/identifiers/create-a-login-identifier-for-a-user) to add an email address or phone number to the user.

                You can also manage users in the [Developer Panel](https://app.corbado.com/users).
            operationId: UserCreate
            tags:
                - Users
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/userCreateReq"
            responses:
                "200":
                    description: User has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/user"
                default:
                    $ref: "#/components/responses/error"
        get:
            summary: List users
            description: |
                Returns a list of project users.

                The list supports pagination and sorting:
                - The `sort` parameter only supports the `created` field (use `created` for ascending, `-created` for descending).
                - Users can be filtered by:
                  - Single user ID using `userID`
                  - Multiple user IDs using `userIDs` (max 1000)
                  - Multiple WebAuthn IDs using `webauthnIDs` (max 1000)
                  - Single identifier using `identifierValue` and `identifierType` together
                  - Multiple identifiers using `identifierValues` and `identifierType` together (max 1000)

                Filtering rules:
                - Only one filter type can be used at a time: `userID`, `userIDs`, `webauthnIDs`, or identifier filters
                - `userID` and `userIDs` are mutually exclusive
                - `identifierValue` and `identifierValues` are mutually exclusive
                - When filtering by identifier(s), `identifierType` must be provided
            operationId: UserList
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - name: userID
                  in: query
                  description: Filter by specific user ID (format `usr-<number>`). Cannot be used together with `userIDs`.
                  required: false
                  schema:
                    type: string
                    example: "usr-4693224802260150919"
                - name: userIDs
                  in: query
                  description: Filter by multiple user IDs (comma-separated). Cannot be used together with `userID`, `webauthnIDs`, or identifier filters. Maximum 1000 IDs.
                  required: false
                  schema:
                    type: array
                    items:
                        type: string
                    example: ["usr-4693224802260150919", "usr-1234567890123456789"]
                  style: form
                  explode: false
                - name: userIDPattern
                  in: query
                  description: Filter by user IDs matching the given pattern. Supports `%` as a wildcard character. Cannot be used together with other filter types.
                  required: false
                  schema:
                    type: string
                    example: "usr-%"
                - name: webauthnIDs
                  in: query
                  description: Filter by multiple WebAuthn IDs (comma-separated). Cannot be used together with other filter types. Maximum 1000 IDs.
                  required: false
                  schema:
                    type: array
                    items:
                        type: string
                    example: ["abc123def456", "xyz789ghi012"]
                  style: form
                  explode: false
                - name: identifierValue
                  in: query
                  description: Filter by identifier value (email, phone, or username). Must be used together with `identifierType`. Cannot be used together with `identifierValues`.
                  required: false
                  schema:
                    type: string
                    example: "jane@doe.com"
                - name: identifierValues
                  in: query
                  description: Filter by multiple identifier values (comma-separated). Must be used together with `identifierType`. Cannot be used together with `identifierValue`. Maximum 1000 values.
                  required: false
                  schema:
                    type: array
                    items:
                        type: string
                    example: ["jane@doe.com", "john@example.com"]
                  style: form
                  explode: false
                - name: identifierType
                  in: query
                  description: Type of identifier to filter by. Must be used together with `identifierValue` or `identifierValues`.
                  required: false
                  schema:
                    type: string
                    enum:
                        - "email"
                        - "phone"
                        - "username"
                    example: "email"
                - name: status
                  in: query
                  description: Filter by user status.
                  required: false
                  schema:
                    type: string
                    enum:
                        - "active"
                        - "pending"
                        - "disabled"
                        - "deleted"
                    example: "active"
                - name: sort
                  in: query
                  description: |
                    Sort field. Only `created` is supported.
                    - Use `+created` for ascending order
                    - Use `-created` for descending order
                  required: false
                  schema:
                    type: string
                    enum:
                        - "+created"
                        - "-created"
                    example: "-created"
                - name: includeIdentifiers
                  in: query
                  description: Whether to include login identifiers in the response. Defaults to `true`.
                  required: false
                  schema:
                    type: boolean
                    default: true
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of users.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/userList"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}:
        get:
            summary: Retrieve a user
            description: |
                Retrieves a user by given `userID`. This does not return login identifiers like email addresses or phone numbers.

                You can also manage users in the [Developer Panel](https://app.corbado.com/users).
            operationId: UserGet
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    description: User has been returned.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/user"
                default:
                    $ref: "#/components/responses/error"
        patch:
            summary: Update a user
            description: |
                Updates a user by given `userID`. For example, this can be used to modify the user's status.

                You can also manage users in the [Developer Panel](https://app.corbado.com/users).
            operationId: UserUpdate
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/userUpdateReq"
            responses:
                "200":
                    description: User has been updated.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/user"
                default:
                    $ref: "#/components/responses/error"
        delete:
            summary: Delete a user
            description: |
                Deletes a user by given `userID`.

                You can also manage users in the [Developer Panel](https://app.corbado.com/users).
            operationId: UserDelete
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/challenges:
        post:
            summary: Create a challenge for a user
            description: |
                Creates a new challenge to verify a login identifier for a user by given `userID`. Challenges come in three flavors: **Email OTP**, **SMS OTP**, and **Email Magiclink**.

                **OTP** stands for One-Time Password. It is a unique code sent to the user via email or SMS, which they must enter to complete the verification process.
            operationId: ChallengeCreate
            tags:
                - Challenges
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/challengeCreateReq"
            responses:
                "200":
                    description: Challenge has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/challenge"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/challenges/{challengeID}:
        patch:
            summary: Update a challenge for a user
            description: |
                Updates a challenge for a user by given `userID` and `challengeID`. For example, this can be used to change the challenge status from `pending` to `completed`.
            operationId: ChallengeUpdate
            tags:
                - Challenges
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/challengeID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/challengeUpdateReq"
            responses:
                "200":
                    description: Challenge has been updated.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/challenge"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/identifiers:
        post:
            summary: Create a login identifier for a user
            description: |
                Creates a new login identifier for a user with the given ID. Login identifiers can be of the type `email`, `phone`, or `username`. Separating login identifiers from users allows Corbado to manage multiple login identifiers of different types for each user.

                You can set up login identifiers in the [Developer Panel](https://app.corbado.com/settings/userinterface?tab=Overview) or consult the [Documentation](/corbado-complete/overview/configuration/user-flow-configuration#2-login-identifiers-and-fallbacks) for more details.
            operationId: IdentifierCreate
            tags:
                - Identifiers
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/identifierCreateReq"
            responses:
                "200":
                    description: Identifier has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/identifier"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/identifiers/{identifierID}:
        delete:
            summary: Delete a login identifier for a user
            description: |
                Delete an existing login identifier for a user by given `userID` and `identifierID`.
            operationId: IdentifierDelete
            tags:
                - Identifiers
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/identifierID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
        patch:
            summary: Update a login identifier for a user
            description: |
                Updates a login identifier (e.g. from `pending` to `verified`) for a user by given `userID` and `identifierID`.
            operationId: IdentifierUpdate
            tags:
                - Identifiers
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/identifierID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/identifierUpdateReq"
            responses:
                "200":
                    description: Identifier has been updated.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/identifier"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/socialAccounts:
        get:
            summary: List all social logins for a user
            description: "Returns a list of social logins for a user by given `userID`.\n\nThe list can be sorted and filtered:  \n- The `sort` parameter supports the following fields: `providerType` and `foreignID`.\n- The `filter` parameter supports the following fields: `providerType` and `foreignID`.\n\nRefer to the parameter description for more details on sorting in different directions and using the filter with different operators.\n"
            operationId: UserSocialAccountList
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of social logins.
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/socialAccount"
                default:
                    $ref: "#/components/responses/error"
        post:
            summary: Create a social login for a user
            description: |
                Creates a new social login for a user by given `userID`. Social logins are used to authenticate users with third-party providers like Google, Microsoft, or GitHub.

                You can set up social logins in the [Developer Panel](https://app.corbado.com/settings/userinterface?tab=Social) or consult the [Documentation](/corbado-complete/overview/configuration/social-logins/overview) for more details.
            operationId: SocialAccountCreate
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/socialAccountCreateReq"
            responses:
                "200":
                    description: Social login has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/socialAccount"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/credentials:
        get:
            summary: List passkeys for a user
            description: |
                Returns a list of passkeys for a user by given `userID`.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `userID`, `created`, `status`, `backupState`, `browserName` and `osName`.
                - The `filter` parameter supports the following fields: `userID`, `created`, `status`, `backupState`, `browserName` and `osName`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: CredentialList
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
                - $ref: "#/components/parameters/includeAllStatus"
            responses:
                "200":
                    description: List of passkeys.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/credentialList"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/credentials/{credentialID}:
        delete:
            summary: Delete a passkey for a user
            description: |
                Deletes an existing passkey for a user by given `userID` and `credentialID`.
            operationId: CredentialDelete
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/credentialID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/authEvents:
        post:
            description: Create a new authentication event for a user
            operationId: AuthEventCreate
            x-excluded: true
            tags:
                - AuthEvents
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/authEventCreateReq"
            responses:
                "200":
                    description: Auth event has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/authEvent"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/passkeyEvents:
        post:
            summary: Create a passkey event for a user
            description: Creates a new passkey event for a user by given `userID`.
            operationId: PasskeyEventCreate
            tags:
                - PasskeyEvents
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyEventCreateReq"
            responses:
                "200":
                    description: Passkey event has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyEvent"
                default:
                    $ref: "#/components/responses/error"
        get:
            summary: List all passkey events for a user
            description: |
                Returns a list of passkey events for a user by given `userID`.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `created` and `eventType`.
                - The `filter` parameter supports the following fields: `eventType`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: PasskeyEventList
            tags:
                - PasskeyEvents
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    description: List of all matching passkey events.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyEventList"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/passkeyEvents/{passkeyEventID}:
        delete:
            summary: Delete a passkey event for a user
            description: Deletes an existing passkey event for a user by given `userID` and `passkeyEventID`.
            operationId: PasskeyEventDelete
            tags:
                - PasskeyEvents
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/passkeyEventID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/passkeyChallenges:
        get:
            summary: List all passkey challenges for a user
            description: |
                Returns a list of passkey challenges for a user by given `userID`.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `userID`, `projectID`, `status`, and `type`.
                - The `filter` parameter supports the following fields: `userID`, `projectID`, `status`, and `type`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: PasskeyChallengeList
            tags:
                - PasskeyChallenges
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    description: List of all matching passkey challenges.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyChallengeList"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/passkeyChallenges/{passkeyChallengeID}:
        patch:
            summary: Update a passkey challenge for a user
            description: Updates a passkey challenge for a user by given `userID` and `passkeyChallengeID`.
            operationId: PasskeyChallengeUpdate
            tags:
                - PasskeyChallenges
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
                - $ref: "#/components/parameters/passkeyChallengeID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyChallengeUpdateReq"
            responses:
                "200":
                    description: Passkey challenge has been updated.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyChallenge"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/passwordManagers:
        get:
            summary: List password managers for a user
            description: Returns a list of password managers
            operationId: PasswordManagerList
            x-excluded: true
            tags:
                - PasswordManagers
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    description: List of all matching password managers.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passwordManagerList"
                default:
                    $ref: "#/components/responses/error"
    /users/{userID}/clientEnvs:
        get:
            summary: List client environments for a user
            description: Returns a list of clientEnvs
            operationId: ClientEnvList
            x-excluded: true
            tags:
                - ClientEnvs
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/userID"
            responses:
                "200":
                    description: List of all matching clientEnvs.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/clientEnvList"
                default:
                    $ref: "#/components/responses/error"
    /identifiers:
        get:
            summary: List all login identifiers
            description: |
                Returns a list of login identifiers.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `userID`, `identifierType` and `identifierValue`.
                - The `filter` parameter supports the following fields: `userID`, `identifierType` and `identifierValue`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: IdentifierList
            tags:
                - Identifiers
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of all matching login identifiers.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/identifierList"
                default:
                    $ref: "#/components/responses/error"
    /socialAccounts:
        get:
            summary: List all social logins
            description: |
                Returns a list of social logins.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `providerType` and `foreignID`.
                - The `filter` parameter supports the following fields: `providerType` and `foreignID`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: SocialAccountList
            tags:
                - Users
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of social logins.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/socialAccountList"
                default:
                    $ref: "#/components/responses/error"
    /projectConfig/cname:
        put:
            summary: Update project CNAME and generate SSL certificate
            description: Update project config CNAME and generates new SSL certificate
            operationId: ProjectConfigUpdateCNAME
            x-excluded: true
            tags:
                - ProjectConfig
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/projectConfigUpdateCnameReq"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /connectTokens:
        post:
            summary: Create a connectToken
            description: |
                Creates a new ConnectToken, which is essential for [Corbado Connect](/corbado-connect). ConnectTokens authorize actions that modify user data.

                Consult the [Documentation](/corbado-connect/concepts/connect-token) for more details.
            operationId: ConnectTokenCreate
            tags:
                - ConnectTokens
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/connectTokenCreateReq"
            responses:
                "200":
                    description: ConnectToken has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/connectToken"
                default:
                    $ref: "#/components/responses/error"
        get:
            summary: List all ConnectTokens
            description: |
                Returns a list of ConnectTokens.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `token`, `tokenType`, `status` and `expires`.
                - The `filter` parameter supports the following fields: `token`, `tokenType`, `status` and `expires`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.
            operationId: ConnectTokenList
            tags:
                - ConnectTokens
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of all matching append tokens.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/connectTokenList"
                default:
                    $ref: "#/components/responses/error"
    /connectTokens/{connectTokenID}:
        patch:
            summary: Update a ConnectToken
            description: |
                Updates an existing ConnectToken.
            operationId: ConnectTokenUpdate
            tags:
                - ConnectTokens
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/connectTokenID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/connectTokenUpdateReq"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
        delete:
            summary: Delete a ConnectToken
            description: |
                Deletes an existing ConnectToken.
            operationId: ConnectTokenDelete
            tags:
                - ConnectTokens
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/connectTokenID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /webhookEndpoints:
        get:
            description: Returns a list of webhook endpoints
            operationId: WebhookEndpointList
            x-excluded: true
            tags:
                - WebhookEndpoints
            security:
                - basicAuth: []
            responses:
                "200":
                    description: List of webhook endpoints.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/webhookEndpointList"
                default:
                    $ref: "#/components/responses/error"
        post:
            description: Creates a new webhook endpoint
            operationId: WebhookEndpointCreate
            x-excluded: true
            tags:
                - WebhookEndpoints
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/webhookEndpointCreateReq"
            responses:
                "200":
                    description: Webhook endpoint has been created.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/webhookEndpoint"
                default:
                    $ref: "#/components/responses/error"
    /webhookEndpoints/{webhookEndpointID}:
        put:
            description: Updates an existing webhook endpoint
            operationId: WebhookEndpointUpdate
            x-excluded: true
            tags:
                - WebhookEndpoints
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/webhookEndpointID"
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/webhookEndpointUpdateReq"
            responses:
                "200":
                    description: Webhook endpoint has been updated.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/webhookEndpoint"
                default:
                    $ref: "#/components/responses/error"
        delete:
            description: Deletes an existing webhook endpoint
            operationId: WebhookEndpointDelete
            x-excluded: true
            tags:
                - WebhookEndpoints
            security:
                - basicAuth: []
            parameters:
                - $ref: "#/components/parameters/webhookEndpointID"
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /sessions:
        get:
            summary: List all sessions
            description: |
                Returns a list of sessions.

                The list can be sorted and filtered:
                - The `sort` parameter supports the following fields: `ID`, `userID`, `expires`, `lastAction`, `created`, `updated`, and `status`.
                - The `filter` parameter supports the following fields: `ID`, `userID`, `expires`, `lastAction`, `created`, `updated`, and `status`.

                Refer to the parameter description for more details on sorting in different directions and using the filter with different operators.

                You can view and manage sessions in the [Developer Panel](https://app.corbado.com/users/sessions) or consult the [Documentation](https://docs.corbado.com/corbado-complete/sessions/overview) for more details.
            operationId: SessionList
            tags:
                - Sessions
            security:
                - basicAuth: []
            parameters:
                - name: sort
                  in: query
                  description: |
                    Field and direction to sort results. Use the format `fieldName:asc` or `fieldName:desc`.
                  required: false
                  schema:
                    type: string
                    example: createdAt:desc
                - name: filter[]
                  in: query
                  description: "Filter results by specific fields and conditions. Format: `<field>:<operator>:<value>`.\nSupported operators include:  \n  - `eq`: equals (e\\.g\\. `email:eq:mail@example\\.com` matches items where email equals mail@example\\.com)  \n  - `gt`: greater than (e\\.g\\. `created:gt:2021-01-01T00:00:00` matches items created after Jan 1, 2021)  \n  - `lt`: less than (e\\.g\\. `created:lt:2021-01-01T00:00:00` matches items created before Jan 1, 2021)\n"
                  required: false
                  style: form
                  explode: true
                  schema:
                    type: array
                    items:
                        type: string
                  examples:
                    filterEmail:
                        summary: Filter by email address
                        value:
                            - identifierType:eq:email
                            - identifierValue:eq:mail@example.com
                    filterTimepoint:
                        summary: Filter by date after July 20, 2021
                        value:
                            - timePoint:gt:2021-07-20T00:00:00
                - name: page
                  in: query
                  description: |
                    The page number to retrieve for paginated results.
                  required: false
                  schema:
                    type: integer
                    default: 1
                    example: 1
                - name: pageSize
                  in: query
                  description: |
                    The number of items to return per page. Useful for pagination.
                  required: false
                  schema:
                    type: integer
                    default: 10
                    example: 20
            responses:
                "200":
                    description: List of all matching sessions.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/sessionList"
                default:
                    $ref: "#/components/responses/error"
    /sessions/{sessionID}/revoke:
        post:
            summary: Revoke a session
            description: Revokes an existing session by given `sessionID`.
            operationId: SessionRevoke
            tags:
                - Sessions
            security:
                - basicAuth: []
            parameters:
                - name: sessionID
                  in: path
                  description: ID of session
                  required: true
                  schema:
                    type: string
                    minLength: 30
                    maxLength: 30
            responses:
                "200":
                    $ref: "#/components/responses/200"
                default:
                    $ref: "#/components/responses/error"
    /passkey/append/start:
        post:
            summary: Start creating a new passkey
            description: |
                Starts creating a new passkey by initiating the WebAuthn ceremony. To complete the ceremony you need to call [finish](/api-reference/backend-api/passkeys/finish-creating-a-new-passkey).
            operationId: PasskeyAppendStart
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyAppendStartReq"
            responses:
                "200":
                    description: Passkey creation process has been started.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyAppendStartRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/append/finish:
        post:
            summary: Finish creating a new passkey
            description: |
                Finishes creating a new passkey by completing the WebAuthn ceremony.
            operationId: PasskeyAppendFinish
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyAppendFinishReq"
            responses:
                "200":
                    description: Passkey append succeeded.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyAppendFinishRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/login/start:
        post:
            summary: Start login with an existing passkey
            description: |
                Starts login with an existing passkey by initiating the WebAuthn ceremony. To complete the ceremony you need to call [finish](/api-reference/backend-api/passkeys/finish-login-with-an-existing-passkey).
            operationId: PasskeyLoginStart
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyLoginStartReq"
            responses:
                "200":
                    description: Passkey authentication process has been started.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyLoginStartRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/login/finish:
        post:
            summary: Finish login with an existing passkey
            description: |
                Finishes login with an existing passkey by completing the WebAuthn ceremony.
            operationId: PasskeyLoginFinish
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyLoginFinishReq"
            responses:
                "200":
                    description: Passkey login succeeded.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyLoginFinishRsp"
                default:
                    $ref: "#/components/responses/error"
    /sso/saml2/start:
        post:
            summary: Start SAML2 SSO login
            description: Starts SAML2-based SSO login by resolving the project's SSO configuration for the email and returning an IdP redirect URL.
            operationId: SsoSaml2Start
            tags:
                - SSO
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ssoSaml2StartReq"
            responses:
                "200":
                    description: SSO start succeeded.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ssoSaml2StartRsp"
                default:
                    $ref: "#/components/responses/error"
    /sso/saml2/finish:
        post:
            summary: Finish SAML2 SSO login
            description: |
                Finishes SAML2-based SSO login by validating the SAML response against the pending SSO session and resolving/provisioning a user.
            operationId: SsoSaml2Finish
            tags:
                - SSO
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/ssoSaml2FinishReq"
            responses:
                "200":
                    description: SSO finish succeeded.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/ssoSaml2FinishRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/postLogin:
        post:
            summary: Run the post-login action for passkey
            description: Explicitly runs the post-login action
            operationId: PasskeyPostLogin
            x-excluded: true
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyPostLoginReq"
            responses:
                "200":
                    description: Post Passkey Login succeeded.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyPostLoginRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/verifySignedData:
        post:
            summary: Verify signedPasskeyData from a passkey login
            description: |
                Verifies the `signedPasskeyData` from a passkey login. The `signedPasskeyData` is returned by the [finish](/api-reference/backend-api/passkeys/finish-login-with-an-existing-passkey) call and is essential for transferring the authentication state to your backend.

                It is required only for [Corbado Connect](/corbado-connect) and is thoroughly explained in our [Documentation](/corbado-connect/concepts/signed-passkey-data). Our [generic integration guide](/corbado-connect/integration/generic) explains how to use `signedPasskeyData` in your backend.
            operationId: PasskeyVerifySignedData
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyVerifySignedDataReq"
            responses:
                "200":
                    description: |
                        `signedPasskeyData` has been verified.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyVerifySignedDataRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/mediation/start:
        post:
            summary: Start login with an existing passkey (Conditional UI)
            description: |
                Starts login with an existing passkey in [Conditional UI](https://www.corbado.com/glossary/conditional-ui) scenario. To complete the ceremony you need to call [finish](/api-reference/backend-api/passkeys/finish-login-with-an-existing-passkey-conditional-ui).
            operationId: PasskeyMediationStart
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyMediationStartReq"
            responses:
                "200":
                    description: Passkey login process has been started.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyMediationStartRsp"
                default:
                    $ref: "#/components/responses/error"
    /passkey/mediation/finish:
        post:
            summary: Finish login with an existing passkey (Conditional UI)
            description: |
                Finishes login with an existing passkey in [Conditional UI](https://www.corbado.com/glossary/conditional-ui) scenario.
            operationId: PasskeyMediationFinish
            tags:
                - Passkeys
            security:
                - basicAuth: []
            requestBody:
                required: true
                content:
                    application/json:
                        schema:
                            $ref: "#/components/schemas/passkeyMediationFinishReq"
            responses:
                "200":
                    description: Passkey login process has been completed.
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/passkeyMediationFinishRsp"
                default:
                    $ref: "#/components/responses/error"
    /exports/{exportType}:
        get:
            summary: List project exports
            description: |
                Returns a list of available export files for the authenticated project and export type.
            operationId: ExportList
            tags:
                - Exports
            security:
                - basicAuth: []
            parameters:
                - name: exportType
                  in: path
                  required: true
                  description: Type of export to list
                  schema:
                    $ref: "#/components/schemas/exportType"
            responses:
                "200":
                    description: List of export files
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/exportList"
                default:
                    $ref: "#/components/responses/error"
    /exports/{exportType}/{filename}/downloadLink:
        get:
            summary: Get download link for an export file
            description: |
                Generates a pre-signed download link for a specific export file.
            operationId: ExportDownloadLinkGet
            tags:
                - Exports
            security:
                - basicAuth: []
            parameters:
                - name: exportType
                  in: path
                  required: true
                  description: Type of export to download
                  schema:
                    $ref: "#/components/schemas/exportType"
                - name: filename
                  in: path
                  required: true
                  description: Name of the export file
                  schema:
                    type: string
            responses:
                "200":
                    description: Pre-signed download link
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/exportDownloadLink"
                default:
                    $ref: "#/components/responses/error"
components:
    securitySchemes:
        basicAuth:
            type: http
            scheme: basic
            description: |
                Basic authentication is used to authenticate requests to the Backend API. The username is the project ID and the password is the API secret.

                The project ID and API secret can be found in the [Developer Panel](https://app.corbado.com/settings/api-secrets).
    parameters:
        userID:
            name: userID
            in: path
            description: |
                Unique identifier of the user. Format: `usr-<number>`.
            required: true
            schema:
                type: string
                example: usr-4693224802260150919
        challengeID:
            name: challengeID
            in: path
            description: ID of challenge
            required: true
            schema:
                type: string
        identifierID:
            name: identifierID
            in: path
            description: |
                Unique identifier of the login identifier (e.g., email address or phone number). Format: `ide-<number>`.
            required: true
            schema:
                type: string
                example: "ide-4693224802260150919"
        credentialID:
            name: credentialID
            in: path
            description: |
                Unique identifier of the passkey. Format: `cre-<number>`.
            required: true
            schema:
                type: string
                example: "cre-4693224802260150919"
        connectTokenID:
            name: connectTokenID
            in: path
            description: |
                Unique identifier of the connectToken. Format: `ctk-<number>`.
            required: true
            schema:
                type: string
                example: "ctk-4693224802260150919"
        passkeyChallengeID:
            name: passkeyChallengeID
            in: path
            description: ID of a passkey challenge
            required: true
            schema:
                type: string
        passkeyEventID:
            name: passkeyEventID
            in: path
            description: ID of a passkey event
            required: true
            schema:
                type: string
        webhookEndpointID:
            name: webhookEndpointID
            in: path
            description: ID of a webhook endpoint
            required: true
            schema:
                type: string
        includeAllStatus:
            name: includeAllStatus
            in: query
            description: Whether to include all status types (including `deleted`) in the response. Default is `false`, which excludes `deleted` items.
            required: false
            schema:
                type: boolean
                default: false
    schemas:
        userCreateReq:
            type: object
            required:
                - status
            properties:
                fullName:
                    type: string
                    example: "Jane Doe"
                status:
                    $ref: "#/components/schemas/userStatus"
                explicitWebauthnID:
                    type: string
                    description: For [Corbado Connect](https://docs.corbado.com/corbado-connect) projects, the webauthnID can be explicitly set for a user
        userUpdateReq:
            type: object
            properties:
                fullName:
                    type: string
                    example: "Jane Doe"
                name:
                    type: string
                status:
                    $ref: "#/components/schemas/userStatus"
        challengeCreateReq:
            type: object
            required:
                - challengeType
                - identifierValue
                - clientInformation
            properties:
                challengeType:
                    $ref: "#/components/schemas/challengeType"
                identifierValue:
                    type: string
                    example: "jane@doe.com"
                challengeMetadata:
                    type: object
                    example: {"city": "Munich"}
                lifetimeSeconds:
                    type: integer
                    example: 300
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
        challengeUpdateReq:
            type: object
            required:
                - value
            properties:
                value:
                    type: string
        identifierCreateReq:
            type: object
            required:
                - identifierType
                - identifierValue
                - status
            properties:
                identifierType:
                    $ref: "#/components/schemas/identifierType"
                identifierValue:
                    type: string
                status:
                    $ref: "#/components/schemas/identifierStatus"
        identifierUpdateReq:
            type: object
            required:
                - status
            properties:
                status:
                    $ref: "#/components/schemas/identifierStatus"
        passkeyAppendStartReq:
            type: object
            required:
                - userID
                - processID
                - username
                - clientInformation
                - passkeyIntelFlags
                - situation
            properties:
                userID:
                    description: ID of the user
                    type: string
                processID:
                    type: string
                username:
                    type: string
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                passkeyIntelFlags:
                    $ref: "#/components/schemas/passkeyIntelFlags"
                situation:
                    type: string
        passkeyAppendStartRsp:
            type: object
            required:
                - appendAllow
                - attestationOptions
                - detectionInsights
                - decisionInsights
            properties:
                appendAllow:
                    type: boolean
                attestationOptions:
                    type: string
                    example: '{"publicKey":{"challenge":"2m6...0w9/MgW...KE=","rp":{"name":"demo","id":"localhost"},"user":{"name":"example@mail.com","id":"dXN...zk5"},"pubKeyCredParams":[{"type":"public-key","alg":-7},{"type":"public-key","alg":-35},{"type":"public-key","alg":-36},{"type":"public-key","alg":-257},{"type":"public-key","alg":-258},{"type":"public-key","alg":-259},{"type":"public-key","alg":-37},{"type":"public-key","alg":-38},{"type":"public-key","alg":-39},{"type":"public-key","alg":-8}],"authenticatorSelection":{"authenticatorAttachment":"platform","requireResidentKey":false,"userVerification":"required"},"timeout":60000,"attestation":"none"}}'
                detectionInsights:
                    $ref: "#/components/schemas/detectionInsights"
                decisionInsights:
                    $ref: "#/components/schemas/decisionInsightsAppend"
        passkeyAppendFinishReq:
            type: object
            required:
                - userID
                - processID
                - attestationResponse
                - clientInformation
                - trackingID
            properties:
                userID:
                    description: ID of the user
                    type: string
                processID:
                    type: string
                attestationResponse:
                    type: string
                    example: '{"type":"public-key","id":"JM6...J_Q","rawId":"JM6...J_Q","authenticatorAttachment":null,"response":{"clientDataJSON":"eyJ...ZX0","authenticatorData":"SZY...AAQ","signature":"Ni7...YAg","userHandle":"dXN...zk5"},"clientExtensionResults":{}}'
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                sendNotification:
                    type: boolean
                trackingID:
                    type: string
        passkeyAppendFinishRsp:
            type: object
            required:
                - passkeyData
            properties:
                passkeyData:
                    $ref: "#/components/schemas/passkeyData"
        passkeyLoginStartReq:
            type: object
            required:
                - userID
                - clientInformation
                - crossDeviceAuthenticationStrategy
                - processID
            properties:
                userID:
                    description: ID of the user
                    type: string
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                crossDeviceAuthenticationStrategy:
                    $ref: "#/components/schemas/crossDeviceAuthenticationStrategy"
                processID:
                    type: string
        passkeyLoginStartRsp:
            type: object
            required:
                - loginAllow
                - assertionOptions
                - detectionInsights
                - decisionInsights
            properties:
                loginAllow:
                    type: boolean
                assertionOptions:
                    type: string
                detectionInsights:
                    $ref: "#/components/schemas/detectionInsights"
                decisionInsights:
                    $ref: "#/components/schemas/decisionInsights"
        passkeyLoginFinishReq:
            type: object
            required:
                - userID
                - assertionResponse
                - clientInformation
                - processID
                - trackingID
            properties:
                userID:
                    description: ID of the user
                    type: string
                assertionResponse:
                    type: string
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                processID:
                    type: string
                signPasskeyData:
                    type: boolean
                trackingID:
                    type: string
        passkeyLoginFinishRsp:
            type: object
            required:
                - passkeyData
            properties:
                passkeyData:
                    $ref: "#/components/schemas/passkeyData"
                signedPasskeyData:
                    type: string
        ssoSaml2StartReq:
            type: object
            required:
                - email
            properties:
                email:
                    type: string
                invitationToken:
                    type: string
        ssoSaml2StartRsp:
            type: object
            required:
                - idpRedirectURL
                - ssoNonce
            properties:
                idpRedirectURL:
                    type: string
                ssoNonce:
                    type: string
        ssoSaml2FinishReq:
            type: object
            required:
                - samlResponse
                - relayState
                - ssoNonce
            properties:
                samlResponse:
                    type: string
                relayState:
                    type: string
                ssoNonce:
                    type: string
        ssoSaml2FinishRsp:
            type: object
            required:
                - projectID
                - userID
                - identifier
            properties:
                projectID:
                    description: ID of project
                    type: string
                    x-oapi-codegen-extra-tags:
                        validate: required,id=pro
                userID:
                    description: ID of the user
                    type: string
                identifier:
                    type: string
                invitationToken:
                    type: string
        passkeyPostLoginReq:
            type: object
            required:
                - signedPasskeyData
            properties:
                signedPasskeyData:
                    type: string
        passkeyPostLoginRsp:
            type: object
            required:
                - session
            properties:
                session:
                    type: string
        passkeyVerifySignedDataReq:
            type: object
            required:
                - signedPasskeyData
                - username
            properties:
                signedPasskeyData:
                    type: string
                username:
                    type: string
        passkeyVerifySignedDataRsp:
            type: object
            required:
                - verificationResult
            properties:
                verificationResult:
                    type: string
                    enum:
                        - "success"
                        - "invalid_signature"
                        - "invalid_challenge"
                        - "user_mismatch"
                        - "generic_error"
        passkeyMediationStartReq:
            type: object
            required:
                - clientInformation
            properties:
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                processID:
                    type: string
        passkeyMediationStartRsp:
            type: object
            required:
                - loginAllow
                - assertionOptions
            properties:
                loginAllow:
                    type: boolean
                assertionOptions:
                    type: string
        passkeyMediationFinishReq:
            type: object
            required:
                - assertionResponse
                - clientInformation
                - processID
                - trackingID
            properties:
                assertionResponse:
                    type: string
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
                processID:
                    type: string
                signPasskeyData:
                    type: boolean
                trackingID:
                    type: string
        passkeyMediationFinishRsp:
            type: object
            required:
                - passkeyData
            properties:
                passkeyData:
                    $ref: "#/components/schemas/passkeyData"
                signedPasskeyData:
                    type: string
                error:
                    oneOf:
                        - $ref: "#/components/schemas/passkeyMediationFinishErrorCredentialDeleted"
                        - $ref: "#/components/schemas/passkeyMediationFinishErrorAlternativeProject"
                    discriminator:
                        propertyName: type
                        mapping:
                            credentialDeleted: "#/components/schemas/passkeyMediationFinishErrorCredentialDeleted"
                            alternativeProjectID: "#/components/schemas/passkeyMediationFinishErrorAlternativeProject"
        passkeyMediationFinishErrorCredentialDeleted:
            type: object
            required:
                - type
            properties:
                type:
                    type: string
                    enum:
                        - "credentialDeleted"
        passkeyMediationFinishErrorAlternativeProject:
            type: object
            required:
                - type
                - alternativeProjectName
            properties:
                type:
                    type: string
                    enum:
                        - "alternativeProjectID"
                alternativeProjectName:
                    type: string
        connectTokenCreateReq:
            type: object
            required:
                - type
                - data
            properties:
                type:
                    $ref: "#/components/schemas/connectTokenType"
                data:
                    $ref: "#/components/schemas/connectTokenData"
                maxLifetimeInSeconds:
                    type: integer
                    description: Maximum lifetime of the connectToken in seconds.
                    example: 3600
        connectTokenUpdateReq:
            type: object
            required:
                - status
            properties:
                status:
                    $ref: "#/components/schemas/connectTokenStatus"
        webhookEndpointCreateReq:
            type: object
            required:
                - url
                - subscribedEvents
                - customHeaders
            properties:
                url:
                    type: string
                basicAuthUsername:
                    type: string
                basicAuthPassword:
                    type: string
                subscribedEvents:
                    type: array
                    items:
                        $ref: "#/components/schemas/webhookEventType"
                customHeaders:
                    type: object
        webhookEndpointUpdateReq:
            type: object
            properties:
                url:
                    type: string
                basicAuthUsername:
                    type: string
                basicAuthPassword:
                    type: string
                subscribedEvents:
                    type: array
                    items:
                        $ref: "#/components/schemas/webhookEventType"
                customHeaders:
                    type: object
        passkeyData:
            type: object
            required:
                - id
                - userID
                - username
                - ceremonyType
                - challengeID
                - aaguidDetails
            properties:
                id:
                    type: string
                userID:
                    type: string
                username:
                    type: string
                ceremonyType:
                    type: string
                    enum:
                        - "local"
                        - "cda"
                        - "security-key"
                challengeID:
                    type: string
                aaguidDetails:
                    $ref: "#/components/schemas/aaguidDetails"
                userVerified:
                    type: boolean
                userPresent:
                    type: boolean
        user:
            type: object
            required:
                - userID
                - status
                - updated
                - updatedMs
            properties:
                userID:
                    type: string
                    example: "usr-4693224802260150919"
                fullName:
                    type: string
                    example: "Jane Doe"
                status:
                    $ref: "#/components/schemas/userStatus"
                explicitWebauthnID:
                    type: string
                updated:
                    type: string
                updatedMs:
                    type: integer
                    format: int64
        userAggregate:
            type: object
            required:
                - userID
                - status
                - emailIdentifiers
                - phoneNumberIdentifiers
                - usernameIdentifiers
                - socialAccounts
                - created
                - createdMS
                - updated
                - updatedMs
            properties:
                userID:
                    type: string
                    example: "usr-4693224802260150919"
                fullName:
                    type: string
                    example: "Jane Doe"
                status:
                    $ref: "#/components/schemas/userStatus"
                explicitWebauthnID:
                    type: string
                emailIdentifiers:
                    type: array
                    items:
                        $ref: '#/components/schemas/identifier'
                phoneNumberIdentifiers:
                    type: array
                    items:
                        $ref: '#/components/schemas/identifier'
                usernameIdentifiers:
                    type: array
                    items:
                        $ref: '#/components/schemas/identifier'
                socialAccounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/socialAccount'
                created:
                    type: string
                createdMS:
                    type: integer
                    format: int64
                updated:
                    type: string
                updatedMs:
                    type: integer
                    format: int64
        userList:
            type: object
            required:
                - users
                - paging
            properties:
                users:
                    type: array
                    items:
                        $ref: "#/components/schemas/userAggregate"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        sessionList:
            type: object
            required:
                - sessions
                - paging
            properties:
                sessions:
                    type: array
                    items:
                        type: object
                        required:
                            - sessionID
                            - userID
                            - identifierValue
                            - createdMs
                            - lastActionMs
                            - expiresMs
                            - status
                        properties:
                            sessionID:
                                type: string
                                description: Unique identifier of the session.
                                example: "V4Gy2mCXekKuvKwbG81ysvegY9dB01"
                            userID:
                                type: string
                                description: Unique identifier of the user.
                                example: "usr-4693224802260150919"
                            identifierValue:
                                type: string
                                description: Login identifier of the user (here email address).
                                example: "jane@doe.com"
                            createdMs:
                                type: integer
                                format: int64
                                description: Unix time of when the session was created (in milliseconds elapsed since January 1, 1970, 00:00:00 UTC).
                                example: 1752738240000
                            lastActionMs:
                                type: integer
                                format: int64
                                description: Unix time of when last action (e.g., refresh) on session occurred (in milliseconds elapsed since January 1, 1970, 00:00:00 UTC).
                                example: 1752738240000
                            expiresMs:
                                type: integer
                                format: int64
                                description: Unix time of when the session expires (in milliseconds elapsed since January 1, 1970, 00:00:00 UTC).
                                example: 1755330240000
                            status:
                                type: string
                                enum:
                                    - 'active'
                                    - 'logged_out'
                                    - 'expired'
                                    - 'inactivity_reached'
                                    - 'revoked'
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        identifier:
            type: object
            required:
                - identifierID
                - type
                - value
                - status
                - userID
            properties:
                identifierID:
                    type: string
                    description: Unique identifier of the login identifier.
                    example: "ide-4693224802260150919"
                type:
                    $ref: "#/components/schemas/identifierType"
                value:
                    type: string
                    description: Value of the identifier (here email address).
                    example: "jane@doe.com"
                status:
                    $ref: "#/components/schemas/identifierStatus"
                userID:
                    type: string
                    description: Unique identifier of the user.
                    example: "usr-4693224802260150919"
        identifierList:
            type: object
            required:
                - identifiers
                - paging
            properties:
                identifiers:
                    type: array
                    items:
                        $ref: "#/components/schemas/identifier"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        socialAccountCreateReq:
            type: object
            required:
                - providerType
                - identifierValue
                - foreignID
                - avatarURL
                - fullName
            properties:
                providerType:
                    type: string
                    description: Type of the social provider.
                    enum:
                        - 'google'
                        - 'microsoft'
                        - 'github'
                identifierValue:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
                foreignID:
                    type: string
                    description: Unique identifier of the user in the social provider.
                    example: "53150919"
                avatarURL:
                    type: string
                    description: URL of the avatar of the user in the social provider.
                    example: "https://avatars.githubusercontent.com/u/53150919?v=4"
                fullName:
                    type: string
                    description: Full name of the user in the social provider.
                    example: "Jane Doe"
        socialAccount:
            type: object
            required:
                - socialAccountID
                - providerType
                - identifierValue
                - userID
                - foreignID
                - avatarURL
                - fullName
            properties:
                socialAccountID:
                    type: string
                    description: Unique identifier of the social account.
                    example: "soc-6060375336139150919"
                providerType:
                    type: string
                    description: Type of the social provider.
                    example: "github"
                identifierValue:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
                userID:
                    type: string
                    description: Unique identifier of the user.
                    example: "usr-4693224802260150919"
                foreignID:
                    type: string
                    description: Unique identifier of the user in the social provider.
                    example: "53150919"
                avatarURL:
                    type: string
                    description: URL of the avatar of the user in the social provider.
                    example: "https://avatars.githubusercontent.com/u/53150919?v=4"
                fullName:
                    type: string
                    description: Full name of the user in the social provider.
                    example: "Jane Doe"
        socialAccountList:
            type: object
            required:
                - socialAccounts
                - paging
            properties:
                socialAccounts:
                    type: array
                    items:
                        $ref: "#/components/schemas/socialAccount"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        credential:
            type: object
            required:
                - id
                - credentialID
                - attestationType
                - transport
                - backupEligible
                - backupState
                - authenticatorAAGUID
                - aaguidDetails
                - sourceOS
                - sourceBrowser
                - lastUsed
                - lastUsedMs
                - created
                - createdMs
                - status
                - tags
            properties:
                id:
                    type: string
                    example: "cre-12345"
                credentialID:
                    type: string
                attestationType:
                    type: string
                transport:
                    type: array
                    items:
                        type: string
                        enum:
                            - "usb"
                            - "nfc"
                            - "ble"
                            - "internal"
                            - "hybrid"
                            - "smart-card"
                backupEligible:
                    type: boolean
                backupState:
                    type: boolean
                authenticatorAAGUID:
                    type: string
                sourceOS:
                    type: string
                sourceBrowser:
                    type: string
                lastUsed:
                    type: string
                    description: Timestamp of when the passkey was last used in yyyy-MM-dd'T'HH:mm:ss format
                lastUsedMs:
                    type: integer
                    format: int64
                created:
                    description: Timestamp of when the entity was created in yyyy-MM-dd'T'HH:mm:ss format
                    type: string
                createdMs:
                    type: integer
                    format: int64
                status:
                    type: string
                    enum:
                        - "pending"
                        - "active"
                    description: "Status"
                aaguidDetails:
                    $ref: "#/components/schemas/aaguidDetails"
                tags:
                    type: array
                    items:
                        type: string
        aaguidDetails:
            type: object
            required:
                - aaguid
                - name
                - iconLight
                - iconDark
            properties:
                aaguid:
                    type: string
                name:
                    type: string
                iconLight:
                    type: string
                iconDark:
                    type: string
        credentialList:
            type: object
            required:
                - credentials
                - paging
            properties:
                credentials:
                    type: array
                    items:
                        $ref: "#/components/schemas/credential"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        challenge:
            type: object
            required:
                - challengeID
                - type
                - identifierValue
                - value
                - expires
                - status
            properties:
                challengeID:
                    type: string
                type:
                    $ref: "#/components/schemas/challengeType"
                identifierValue:
                    type: string
                value:
                    type: string
                expires:
                    type: integer
                    format: int64
                status:
                    $ref: "#/components/schemas/challengeStatus"
        authEventCreateReq:
            type: object
            required:
                - username
                - eventType
                - method
                - status
                - clientInformation
            properties:
                username:
                    type: string
                eventType:
                    $ref: "#/components/schemas/authEventType"
                method:
                    $ref: "#/components/schemas/authEventMethod"
                status:
                    $ref: "#/components/schemas/authEventStatus"
                clientInformation:
                    $ref: "#/components/schemas/clientInformation"
        authEvent:
            type: object
            required:
                - authEventID
                - userID
                - username
                - eventType
                - method
                - created
                - createdMs
                - status
            properties:
                authEventID:
                    type: string
                userID:
                    description: ID of the user
                    type: string
                username:
                    type: string
                eventType:
                    $ref: "#/components/schemas/authEventType"
                method:
                    $ref: "#/components/schemas/authEventMethod"
                created:
                    description: Timestamp of when the entity was created in yyyy-MM-dd'T'HH:mm:ss format
                    type: string
                createdMs:
                    type: integer
                    format: int64
                status:
                    $ref: "#/components/schemas/authEventStatus"
        passkeyEventCreateReq:
            type: object
            required:
                - eventType
            properties:
                eventType:
                    $ref: "#/components/schemas/passkeyEventType"
                expires:
                    type: integer
                processID:
                    type: string
                clientEnvID:
                    type: string
                credentialID:
                    type: string
                challenge:
                    type: string
        passkeyEvent:
            type: object
            required:
                - passkeyEventID
                - userID
                - eventType
                - created
                - createdMs
            properties:
                passkeyEventID:
                    type: string
                userID:
                    description: ID of the user
                    type: string
                eventType:
                    $ref: "#/components/schemas/passkeyEventType"
                clientEnvID:
                    type: string
                processID:
                    type: string
                credentialID:
                    type: string
                expires:
                    type: integer
                created:
                    description: Timestamp of when the entity was created in yyyy-MM-dd'T'HH:mm:ss format
                    type: string
                createdMs:
                    type: integer
                    format: int64
        passkeyEventList:
            type: object
            required:
                - passkeyEvents
                - paging
            properties:
                passkeyEvents:
                    type: array
                    items:
                        $ref: "#/components/schemas/passkeyEvent"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        projectConfigUpdateCnameReq:
            type: object
            required:
                - cname
            properties:
                cname:
                    type: string
        detectionTag:
            type: object
            required:
                - category
                - name
            properties:
                category:
                    type: string
                    enum:
                        - "support"
                        - "clientEnv"
                        - "history"
                        - "passkey"
                name:
                    type: string
        decisionTag:
            type: string
            enum:
                - env-no-platform-pk-support
                - env-no-pk-support
                - user-no-pks
                - user-login-blacklisted
                - user-security-key
                - user-positive-env-history
                - user-negative-env-history
                - env-blacklisted
                - user-platform-pk-high-confidence
                - user-cross-platform-pk-high-confidence
                - user-env-no-pks
                - default-deny
                - passkey-list-initiated-process
                - user-append-blacklisted
                - process-pk-login-sk-completed
                - process-pk-login-platform-completed
                - process-pk-login-not-offered
                - process-pk-login-incomplete
                - process-pk-login-cross-platform-completed
                - device-local-platform-passkey-experiment
                - env-broken
                - process-pk-login-aborted
                - env-password-manager-pk-experiment
        clientInformation:
            type: object
            required:
                - remoteAddress
                - userAgent
                - userVerifyingPlatformAuthenticatorAvailable
                - conditionalMediationAvailable
                - clientCapabilities
                - parsedDeviceInfo
            properties:
                remoteAddress:
                    description: Client's IP address
                    type: string
                    example: "::ffff:172.18.0.1"
                userAgent:
                    description: Client's user agent
                    type: string
                    example: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
                clientEnvHandle:
                    description: Client's environment handle
                    type: string
                javascriptFingerprint:
                    description: Client's fingerprint
                    type: string
                javaScriptHighEntropy:
                    $ref: "#/components/schemas/javaScriptHighEntropy"
                bluetoothAvailable:
                    description: Client's Bluetooth availability
                    type: boolean
                passwordManagerAvailable:
                    description: Client's password manager availability
                    type: boolean
                userVerifyingPlatformAuthenticatorAvailable:
                    type: boolean
                conditionalMediationAvailable:
                    type: boolean
                clientCapabilities:
                    $ref: "#/components/schemas/clientCapabilities"
                privateMode:
                    type: boolean
                parsedDeviceInfo:
                    $ref: "#/components/schemas/parsedDeviceInfo"
                nativeMeta:
                    $ref: "#/components/schemas/nativeMeta"
        clientCapabilities:
            type: object
            properties:
                conditionalCreate:
                    type: boolean
                conditionalMediation:
                    type: boolean
                hybridTransport:
                    type: boolean
                passkeyPlatformAuthenticator:
                    type: boolean
                userVerifyingPlatformAuthenticator:
                    type: boolean
        parsedDeviceInfo:
            type: object
            required:
                - browserName
                - browserVersion
                - osName
                - osVersion
            properties:
                browserName:
                    type: string
                browserVersion:
                    type: string
                osName:
                    type: string
                osVersion:
                    type: string
        nativeMeta:
            type: object
            required:
                - build
            properties:
                build:
                    type: string
                deviceOwnerAuth:
                    type: string
                isPlatformAuthenticatorAPISupported:
                    type: boolean
                isBluetoothAvailable:
                    type: boolean
                isBluetoothOn:
                    type: boolean
                googlePlayServices:
                    type: boolean
                deviceSecure:
                    type: boolean
                brand:
                    type: string
                model:
                    type: string
        passkeyIntelFlags:
            type: object
            required:
                - forcePasskeyAppend
            properties:
                forcePasskeyAppend:
                    type: boolean
                askForAutoAppend:
                    type: boolean
                askForConditionalCreate:
                    type: boolean
                askForInAppAppend:
                    type: string
        javaScriptHighEntropy:
            type: object
            required:
                - platform
                - platformVersion
                - mobile
            properties:
                platform:
                    type: string
                platformVersion:
                    type: string
                mobile:
                    type: boolean
        passkeyChallengeUpdateReq:
            type: object
            required:
                - status
            properties:
                status:
                    $ref: "#/components/schemas/passkeyChallengeStatus"
        passkeyChallengeList:
            type: object
            required:
                - passkeyChallenges
                - paging
            properties:
                passkeyChallenges:
                    type: array
                    items:
                        $ref: "#/components/schemas/passkeyChallenge"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        passkeyChallenge:
            type: object
            required:
                - challengeID
                - type
                - value
                - status
                - created
                - createdMs
                - expires
            properties:
                challengeID:
                    type: string
                type:
                    $ref: "#/components/schemas/passkeyChallengeType"
                value:
                    type: string
                status:
                    $ref: "#/components/schemas/passkeyChallengeStatus"
                created:
                    type: integer
                    format: int64
                createdMs:
                    type: integer
                    format: int64
                expires:
                    type: integer
                    format: int64
        passkeyChallengeType:
            type: string
            enum:
                - "register"
                - "authenticate"
        passkeyChallengeStatus:
            type: string
            enum:
                - "pending"
                - "completed"
                - "consumed"
        userStatus:
            type: string
            enum:
                - "pending"
                - "active"
                - "disabled"
                - "deleted"
        challengeType:
            type: string
            enum:
                - "email_otp"
                - "email_link"
                - "sms_otp"
        challengeStatus:
            type: string
            enum:
                - "pending"
                - "completed"
                - "expired"
        identifierType:
            type: string
            enum:
                - "email"
                - "phone"
                - "username"
        identifierStatus:
            type: string
            enum:
                - "pending"
                - "primary"
                - "verified"
        crossDeviceAuthenticationStrategy:
            type: string
            enum:
                - "standard"
                - "minimize"
                - "maximize"
        connectTokenStatus:
            type: string
            enum:
                - "initial"
                - "consumed"
        connectTokenType:
            type: string
            enum:
                - "passkey-append"
                - "passkey-delete"
                - "passkey-list"
                - "passkey-login"
        authEventMethod:
            type: string
            enum:
                - "password"
                - "email_otp"
                - "email_link"
                - "phone_otp"
                - "passkey"
                - "social_github"
                - "social_google"
                - "social_microsoft"
        authEventType:
            type: string
            enum:
                - "sign_up"
                - "login"
                - "new_passkey_added"
        authEventStatus:
            type: string
            enum:
                - "success"
                - "failure"
        webhookEventType:
            type: string
            enum:
                - "passkey-login.completed"
                - "passkey.created"
                - "passkey.deleted"
                - "user.created"
                - "user.updated"
                - "user.deleted"
        passkeyEventType:
            type: string
            enum:
                - user-login-blacklisted
                - login-explicit-abort
                - login-error
                - login-error-untyped
                - login-one-tap-switch
                - user-append-after-cross-platform-blacklisted
                - user-append-after-login-error-blacklisted
                - append-credential-exists
                - append-explicit-abort
                - append-error
                - login-no-credentials
                - manage-error
                - manage-credential-exists
        connectToken:
            type: object
            required:
                - id
                - tokenType
                - data
                - connectTokenStatus
                - expires
            properties:
                id:
                    type: string
                    description: Unique identifier of the connectToken.
                    example: "ctk-940364795071150919"
                tokenType:
                    $ref: "#/components/schemas/connectTokenType"
                data:
                    $ref: "#/components/schemas/connectTokenData"
                connectTokenStatus:
                    $ref: "#/components/schemas/connectTokenStatus"
                secret:
                    type: string
                    description: Secret of the connectToken.
                    example: "ctk1_sxmexzS7RFBaJSA4V4kBFPs45bkxMK"
                expires:
                    type: integer
                    description: Unix time of when the connectToken expires (in seconds elapsed since January 1, 1970, 00:00:00 UTC).
                    example: 1752749184
        connectTokenDataPasskeyAppend:
            type: object
            description: Data for `passkey-append`.
            required:
                - displayName
                - identifier
            properties:
                displayName:
                    type: string
                    description: Display name of the user.
                    example: "Jane Doe"
                identifier:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
        connectTokenDataPasskeyDelete:
            type: object
            description: Data for `passkey-delete`.
            required:
                - identifier
            properties:
                identifier:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
        connectTokenDataPasskeyList:
            type: object
            description: Data for `passkey-list`.
            required:
                - identifier
            properties:
                identifier:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
        connectTokenDataPasskeyLogin:
            type: object
            description: Data for `passkey-login`.
            required:
                - identifier
            properties:
                identifier:
                    type: string
                    description: Login identifier of the user (here email address).
                    example: "jane@doe.com"
        connectTokenData:
            type: object
            oneOf:
                - $ref: "#/components/schemas/connectTokenDataPasskeyAppend"
                - $ref: "#/components/schemas/connectTokenDataPasskeyDelete"
                - $ref: "#/components/schemas/connectTokenDataPasskeyList"
                - $ref: "#/components/schemas/connectTokenDataPasskeyLogin"
        connectTokenList:
            type: object
            required:
                - connectTokens
                - paging
            properties:
                connectTokens:
                    type: array
                    items:
                        $ref: "#/components/schemas/connectToken"
                paging:
                    type: object
                    required:
                        - page
                        - totalPages
                        - totalItems
                    properties:
                        page:
                            description: current page returned in response
                            type: integer
                            default: 1
                        totalPages:
                            description: total number of pages available
                            type: integer
                        totalItems:
                            description: total number of items available
                            type: integer
        webhookEndpointList:
            type: object
            required:
                - webhookEndpoints
            properties:
                webhookEndpoints:
                    type: array
                    items:
                        $ref: "#/components/schemas/webhookEndpoint"
        webhookEndpoint:
            type: object
            required:
                - id
                - url
                - basicAuthUsername
                - basicAuthPassword
                - customHeaders
                - subscribedEvents
                - created
                - createdMs
                - updated
                - updatedMs
            properties:
                id:
                    type: string
                url:
                    type: string
                basicAuthUsername:
                    type: string
                basicAuthPassword:
                    type: string
                customHeaders:
                    type: object
                subscribedEvents:
                    type: array
                    items:
                        $ref: "#/components/schemas/webhookEventType"
                created:
                    type: string
                createdMs:
                    type: integer
                    format: int64
                updated:
                    type: string
                updatedMs:
                    type: integer
                    format: int64
        detectionInsights:
            type: object
            required:
                - tags
                - credentialIds
                - clientEnvIds
                - isCDACandidate
                - passwordManagerIds
                - historyData
            properties:
                tags:
                    type: array
                    items:
                        $ref: "#/components/schemas/detectionTag"
                credentialIds:
                    type: array
                    items:
                        type: string
                clientEnvIds:
                    type: array
                    items:
                        type: string
                passwordManagerIds:
                    type: array
                    items:
                        type: string
                historyData:
                    $ref: "#/components/schemas/appendHistoryData"
        appendHistoryData:
            type: object
            required:
                - defaultCount
                - afterErrorCount
                - afterHybridCount
                - autoCount
                - defaultCooldown
                - afterErrorCooldown
                - afterHybridCooldown
                - autoCooldown
                - conditionalCreateCooldown
                - inAppCooldown
            properties:
                defaultCount:
                    type: integer
                afterErrorCount:
                    type: integer
                afterHybridCount:
                    type: integer
                autoCount:
                    type: integer
                defaultCooldown:
                    type: boolean
                afterErrorCooldown:
                    type: boolean
                afterHybridCooldown:
                    type: boolean
                autoCooldown:
                    type: boolean
                conditionalCreateCooldown:
                    type: boolean
                inAppCooldown:
                    type: boolean
        decisionInsights:
            type: object
            required:
                - tag
                - isCDACandidate
                - experiments
            properties:
                tag:
                    $ref: "#/components/schemas/decisionTag"
                isCDACandidate:
                    type: boolean
                experiments:
                    type: array
                    items:
                        type: string
                preferImmediatelyAvailable:
                    type: boolean
        decisionInsightsAppend:
            type: object
            required:
                - tag
                - isRestrictedBrowser
                - variant
                - auto
                - conditional
            properties:
                tag:
                    $ref: "#/components/schemas/decisionTag"
                isRestrictedBrowser:
                    type: boolean
                variant:
                    type: string
                    enum:
                        - "default"
                        - "after-error"
                        - "after-hybrid"
                        - "passkey-list"
                        - "after-no-credential"
                        - "in-app"
                auto:
                    type: boolean
                conditional:
                    type: boolean
                customData:
                    type: object
                    additionalProperties:
                        type: string
        passwordManagerList:
            type: object
            required:
                - passwordManagers
            properties:
                passwordManagers:
                    type: array
                    items:
                        $ref: "#/components/schemas/passwordManager"
        passwordManager:
            type: object
            required:
                - id
                - userID
                - clientEnvID
                - credentialID
                - aaguid
                - status
                - score
                - createdMs
            properties:
                id:
                    type: string
                userID:
                    type: string
                clientEnvID:
                    type: string
                credentialID:
                    type: string
                aaguid:
                    type: string
                status:
                    type: string
                score:
                    type: integer
                createdMs:
                    type: integer
                    format: int64
        clientEnvList:
            type: object
            required:
                - clientEnvs
            properties:
                clientEnvs:
                    type: array
                    items:
                        $ref: "#/components/schemas/clientEnv"
        clientEnv:
            type: object
            required:
                - id
                - handle
                - browserName
                - browserVersion
                - osName
                - osVersion
                - userAgent
                - jsFingerprint
                - createdMs
                - clientType
            properties:
                id:
                    type: string
                handle:
                    type: string
                browserName:
                    type: string
                browserVersion:
                    type: string
                osName:
                    type: string
                osVersion:
                    type: string
                userAgent:
                    type: string
                jsFingerprint:
                    type: string
                createdMs:
                    type: integer
                    format: int64
                deviceId:
                    type: string
                clientType:
                    type: string
                    enum:
                        - "web"
                        - "app"
                    description: Type of client (web or app)
        exportType:
            type: string
            enum:
                - credentials
                - connect-timeseries
        exportList:
            type: object
            required:
                - exports
            properties:
                exports:
                    type: array
                    items:
                        $ref: "#/components/schemas/exportItem"
        exportItem:
            type: object
            required:
                - filename
                - size
                - checksum
                - created
                - createdMs
            properties:
                filename:
                    type: string
                size:
                    type: integer
                    format: int64
                    description: File size in bytes
                checksum:
                    type: string
                    description: Checksum of the file
                created:
                    type: string
                createdMs:
                    type: integer
                    format: int64
        exportDownloadLink:
            type: object
            required:
                - link
            properties:
                link:
                    type: string
    responses:
        error:
            description: Error
            content:
                application/json:
                    schema:
                        allOf:
                            - type: object
                              required:
                                - httpStatusCode
                                - message
                                - requestData
                                - runtime
                              properties:
                                httpStatusCode:
                                    description: HTTP status code of operation
                                    type: integer
                                    format: int32
                                message:
                                    type: string
                                    example: 'OK'
                                requestData:
                                    description: Data about the request itself, can be used for debugging
                                    type: object
                                    required:
                                        - requestID
                                    properties:
                                        requestID:
                                            description: Unique ID of request, you can provide your own while making the request, if not the ID will be randomly generated on server side
                                            type: string
                                            example: 'req-557...663'
                                        link:
                                            description: Link to dashboard with details about request
                                            type: string
                                            example: 'https://my.corbado.com/requests/req-xxxxxxxxxxxxxxxxxxx'
                                runtime:
                                    description: Runtime in seconds for this request
                                    type: number
                                    format: float
                                    example: 0.06167686
                            - type: object
                              required:
                                - error
                              properties:
                                data:
                                    type: object
                                error:
                                    type: object
                                    required:
                                        - type
                                    properties:
                                        type:
                                            description: Type of error
                                            type: string
                                        details:
                                            description: Details of error
                                            type: string
                                        validation:
                                            description: Validation errors per field
                                            type: array
                                            items:
                                                type: object
                                                required:
                                                    - field
                                                    - message
                                                properties:
                                                    field:
                                                        type: string
                                                    message:
                                                        type: string
                                        links:
                                            description: Additional links to help understand the error
                                            type: array
                                            items:
                                                type: string
        "200":
            description: Operation succeeded.
            content:
                application/json:
                    schema:
                        type: object
                        required:
                            - httpStatusCode
                            - message
                            - requestData
                            - runtime
                        properties:
                            httpStatusCode:
                                description: HTTP status code of operation
                                type: integer
                                format: int32
                            message:
                                type: string
                                example: 'OK'
                            requestData:
                                description: Data about the request itself, can be used for debugging
                                type: object
                                required:
                                    - requestID
                                properties:
                                    requestID:
                                        description: Unique ID of request, you can provide your own while making the request, if not the ID will be randomly generated on server side
                                        type: string
                                        example: 'req-557...663'
                                    link:
                                        description: Link to dashboard with details about request
                                        type: string
                                        example: 'https://my.corbado.com/requests/req-xxxxxxxxxxxxxxxxxxx'
                            runtime:
                                description: Runtime in seconds for this request
                                type: number
                                format: float
                                example: 0.06167686
security:
    - basicAuth: []
