openapi: 3.0.0
info:
  description: >
    # Overview {% #overview %}


    * **Version:** 1.0.0

    * **Servers**: `https://login.xsolla.com/api`

    * **Protocols**: https

    * **Accepts**: application/json

    * **Responds with**: application/json

    * **[Contact us by email](mailto:integration@xsolla.com)**

    * **Contact URL:** https://xsolla.com/


    This section describes API calls for working with
    [Login](https://developers.xsolla.com/doc/login). [Set
    up](/doc/login/integration-guide/integrate-solution/#login_guide_integration_api)
    your Login project in [Publisher Account](https://publisher.xsolla.com/)
    before sending requests.


    # IP addresses {% #ip-addresses %}

    The full list of IP addresses that login.xsolla.com may use:

    * 34.94.0.85

    * 34.94.14.95

    * 34.94.25.33

    * 34.94.115.185

    * 34.94.154.26

    * 34.94.173.132

    * 34.102.48.30

    * 35.235.99.248

    * 35.236.32.131

    * 35.236.35.100

    * 35.236.117.164


    # Glossary {% #glossary %}

    You have access to the following Login project types in Publisher Account:

    * Standard Login project

    * Shadow Login project


    To find more information on it, see [Cross-platform
    account](https://developers.xsolla.com/doc/login/features/cross-platform-account/)
    feature.


    ## Rate limits {% #glossary-rate-limits %}

    Are the restrictions applied by Xsolla API on the frequency of access by a
    user within a defined timeframe.


    ## Standard Login project {% #glossary-standard-login-project %}

    Is a Login project that is used to store main accounts.


    ## Shadow Login project {% #glossary-shadow-login-project %}

    Is a Login project that is used to store platform accounts.


    ## Main account {% #glossary-main-account %}

    Is an account type that is created in a standard Login project and linked to
    platform accounts. The main account is used to identify the player on
    different platforms.


    ## Platform account {% #glossary-platform-account %}

    Is an account type that is created in a shadow Login project and connected
    to a definite publishing platform. The platform account can't be linked to
    another platform account. Also, you can't unlink the accounts from a main
    account.


    ## Publishing platform {% #glossary-publishing-platform %}

    Is a game platform that is used for game distribution (e.g. Steam,
    PlayStation, Xbox, etc.).


    # Authentication {% #authentication %}

    Login API supports the following token types:

    * User token. It is used for sending requests to the following user
    resources:
        * profile
        * friends
        * attributes
    * Server token. It is used for sending requests to application resources
    such as settings or user data. The following requests are available:
        * [Create platform accounts](https://developers.xsolla.com/api/login/operation/auth-by-custom-id)
        * [Get user data](https://developers.xsolla.com/api/login/operation/get-users-ids-by-social-id-and-platform)
        * [Link accounts](https://developers.xsolla.com/api/login/operation/link-accounts-by-code)
        * [Link user accounts via external ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)

    ## Authentication schemes {% #authentication-schemes %}

    You can determine whether an API call is client or server-side by the scheme
    of authentication:


    - Client-side — are called without authentication or with the
    `Authorization` header: `Bearer <user_JWT>` header, where `<user_JWT>` — is
    the user token.

    - Server-side API calls for implementing the user flow — are called with the
    header: `X-SERVER-AUTHORIZATION: <server_JWT>`, where `<server_JWT>` — is
    the server token.


    ## Getting a user token {% #getting-user-token %}

    To get the token, send one of the following requests:

    * user registration
    ([JWT](https://developers.xsolla.com/api/login/operation/jwt-register-new-user)
    or [OAuth
    2.0](https://developers.xsolla.com/api/login/operation/oauth-20-register-new-user))

    * authentication by username and password
    ([JWT](https://developers.xsolla.com/api/login/operation/auth-by-username-and-password),
    [OAuth
    2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-by-username-and-password),
    or [JWT auth by username and
    password](https://developers.xsolla.com/api/login/operation/jwt-auth-by-username-and-password))

    * authentication via social networks
    ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-social-network)
    or [OAuth
    2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network))

    * silent authentication
    ([JWT](https://developers.xsolla.com/api/login/operation/jwt-silent-authentication)
    or [OAuth
    2.0](https://developers.xsolla.com/api/login/operation/oauth-20-silent-authentication))

    * [authentication via a social network access
    token](https://developers.xsolla.com/api/login/operation/jwt-auth-via-access-token-of-social-network)

    * [authentication via a publishing
    platform](https://developers.xsolla.com/api/login/operation/auth-by-custom-id)


    After JWT authentication, the user is redirected to the Callback URL with a
    token in a query-parameter: `<Callback URL>?token=<User token (JWT)>`.


    After OAuth 2.0 protocol-based authentication, send the [Generate
    JWT](https://developers.xsolla.com/api/login/operation/generate-jwt) `POST`
    request to the Xsolla Login server to exchange the received `code` parameter
    for a user token (`access_token`).


    When the access token expires, the client sends [Generate
    JWT](https://developers.xsolla.com/api/login/operation/generate-jwt) `POST`
    request endpoint on the Xsolla Login server. The request body must include
    the following parameters:

    - `grant_type` — JWT grant type, pass the `refresh_token` value.

    - `client_id` — OAuth 2.0 client ID.

    - `refresh_token` — refresh token received in response to the user
    authorization request.


    ## Getting a server token {% #getting-server-token %}


    To get a server token:

    1. [Set up server OAuth 2.0 client](#set-up-server-oauth-20-client).

    2. [Generate server JWT](#generate-server-jwt).


    ### Set up server OAuth 2.0 client {% #set-up-server-oauth-20-client %}

    1. Open your project in [Publisher Account](https://publisher.xsolla.com/)
    and go to the **Login section**.

    2. Click **Configure** in the panel of a **Login** project.

    3. Go to the **Security** block and select the **OAuth 2.0** section.

    4. Click **Add OAuth 2.0 Client**.

    5. Check the **Server (server-to-server connection)** box.

    6. Specify **Token lifetime**.

    7. Click **Connect**.

    8. Copy and save the client ID and secret key.


    ### Generate server JWT {% #generate-server-jwt %}

    On the back end of your application, implement a method to get the server
    JWT using the [Generate JWT
    API](https://developers.xsolla.com/api/login/operation/generate-jwt/) call.
    The request must contain the following parameters:

    * `grant_type` is the type of getting JWT, pass the `client_credentials`
    value.

    * `client_secret` is the secret key that is received when you set up the
    server OAuth 2.0 client.

    * `client_id` is the client ID received when you set up the server OAuth 2.0
    client.


    When the server token expires, generate a new token using the [Generate JWT
    API](https://developers.xsolla.com/api/login/operation/generate-jwt/) call.
    The request body must include the following parameters:

    - `grant_type` — JWT grant type, pass the `client_credentials` value.

    - `client_id` — OAuth 2.0 client ID.

    - `client_secret` — OAuth 2.0 client secret key.


    # Rate limits {% #rate-limits %}

    To prevent Xsolla system overloads and protect against sudden spikes in
    incoming traffic, Xsolla limits the number of requests received by the
    Xsolla API within a specified period of time. If the limit is exceeded, the
    Xsolla API returns an HTTP response with the `429` status code.


    Rate limits vary by method, IP-address, authentication scheme, and other
    factors.


    Rate limits for server-side methods are applied to methods with server-side
    authentication — methods that are called with the `X-SERVER-AUTHORIZATION:
    <server_JWT>` header, where `<server_JWT>` is the server token.


    Rate limits for client-side methods are applied to methods without
    authentication or with client-side authentication — methods that are called
    with the `Authorization: Bearer <user_JWT>` header, where `<user_JWT>` is
    the user token.


    **Example of a method with server-side authentication:**

    ![Example of a method with server-side
    authentication](https://cdn.xsolla.net/developers/current/images/api_docs/login-rate-limits-1.png)

    **Example of a method with client-side authentication:**

    ![Example of a method with server-side
    authentication](https://cdn.xsolla.net/developers/current/images/api_docs/login-rate-limits-2.png)


    Rate limits for client-side methods do not change and are necessary to
    prevent brute-force attacks. The maximum request rate for server-side
    methods is higher than for client-side methods.

    You can refer to the recommendations on how to manage rate limits in the
    [documentation](https://developers.xsolla.com/api/getting-started/#api_rate_limits).


    {% html name="div" attrs={"class": "note"} %}

    **Note**


    In certain cases, it is possible to adjust the rate limits by request. To
    request the rate limits adjustment, contact your Customer Success Manager or
    email [csm@xsolla.com](mailto:csm@xsolla.com).

    {% /html %}


    # JWT structure {% #jwt-structure %}

    Every token has a [JWT](https://jwt.io/) format and contains a definite
    information in a payload.


    ## User JWT {% #user-jwt %}

    User JWT is a token received as a result of authentication or registration.
    A token payload contains information about the user and authentication call.


    Getting a user token via the OAuth 2.0 protocol requires an OAuth 2.0
    client. The user token is passed in the `Authorization: Bearer <JWT>`
    header.


    ## Main claims {% #jwt-main-claims %}

    A token will contain the main claims after authentication or email address
    confirmation. Presence of these claims does not depend on the user database
    and authentication call.


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `exp` | [Unix Timestamp](https://www.unixtimestamp.com/) | Yes | Date and
    time of token expiration. Default expiration time is 24 hours. You can
    change expiration time for every Login project. |

    | `iss` | string | Yes | Service that signed the token:
    `https://login.xsolla.com`. |

    | `iat` | [Unix Timestamp](https://www.unixtimestamp.com/) | Yes | Date and
    time of giving the token. |

    | `sub` | string (UUID) | Yes | User ID written on the Xsolla Login server
    side. |

    | `groups` | array | Yes | List of groups the user is in. Each group: `id` —
    group ID; `name` — group name; `is_default` — whether the group is default
    (`true` or `false`). There can be only one default group, which initially
    includes all users before they are distributed into different groups. |

    | `xsolla_login_project_id` | string (UUID) | Yes | Login project ID. |

    | `type` | string | | Authentication option: `xsolla_login` — login via
    username/email and password; `social` — social login; `email` — passwordless
    login via one-time code by email; `phone` — by SMS; `firebase` — Firebase
    storage; `playfab` — PlayFab storage; `proxy` — custom storage; `device` —
    device ID; `server_custom_id` — custom ID. |

    | `avatar` | string | | User avatar URL. |

    | `username` | string | | Username. |

    | `publisher_id` | integer | | ID of a merchant who owns a Login project. |

    | `email` | string | | User email address. |

    | `payload` | string | | Additional information that is passed in the
    payload parameter during authentication. |

    | `promo_email_agreement` | boolean | | `true` if the user agrees to receive
    a newsletter, `false` otherwise. Default: `true`. To add to the [Login
    widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget)
    registration form: contact your Account Manager (Widget 2.0) or add the
    `fields` parameter with the `promo_email_agreement` value to the
    [initialization
    code](https://github.com/xsolla/xsolla-login-js-sdk#step-2-initializing-widget)
    (previous widget version). |

    | `connection_information` | string | | Shows whether the user confirmed
    their birth date or not. Confirmation is made via the
    [okname](https://www.ok-name.co.kr/) service. |


    ## PlayFab storage {% #playfab-storage %}

    Claims that are contained in the token after authentication if you use
    [PlayFab
    storage](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/).


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `external_account_id` | string | Yes | User PlayFab ID. |

    | `session_ticket` | string | Yes | A **SessionTicket** parameter received
    during an authentication request or requests to the [PlayFab
    API](https://api.playfab.com/documentation/client). A token contains the
    claim if you authenticate users via the OAuth 2.0 protocol and pass the
    `playfab` value to the `scope` parameter. |

    | `entity_token` | string | Yes | An **EntityToken.EntityToken** parameter.
    |

    | `entity_type` | string | Yes | An **EntityToken.Entity.Type** parameter.
    Can have only the `title_player_account` value. |

    | `entity_id` | string | Yes | An **EntityToken.Entity.Id** parameter. |


    ## Custom storage {% #custom-storage %}

    Claims that are contained in the token after authentication if you use
    [custom
    storage](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/).


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `provider` | string | Yes | Name of a social network used for
    authentication. If the user authenticates via username and password, the
    claim has the `xsolla` value. |

    | `external_account_id` | string | | User ID on your server side. |

    | `partner_data` | | | Data of any type returned by your server in the
    response body during authentication. To enable the transmission of this
    claim, contact your Customer Success Manager or email
    [csm@xsolla.com](mailto:csm@xsolla.com). |

    | `social_access_token` | | | Access token of the social network through
    which the user was authenticated. To enable the transmission of this claim,
    contact your Customer Success Manager or email
    [csm@xsolla.com](mailto:csm@xsolla.com). |


    ## Social authentication {% #social-authentication %}

    Claims that are contained in the token after authentication via a social
    network.

    Presence of these claims does not depend on the user database.


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `provider` | string | Yes | Name of a social network used for
    authentication. |

    | `id` | string | Yes | User ID in a social network. |

    | `is_cross_auth` | boolean | | Shows that the silent authentication request
    is in progress. |

    | `social_access_token` | string | | Social network account `access_token`
    parameter used for authentication. Contact your Account Manager to set up
    the feature. |

    | `picture` | string (URL) | | Link to the user profile picture in a social
    network. |

    | `birthday` | date ([RFC3339](https://www.ietf.org/rfc/rfc3339.txt)) | |
    User birth date in a social network. |

    | `gender` | string | | User gender in a social network. |

    | `name` | string | | User nickname in a social network. |


    ## Authentication via the OAuth 2.0 protocol {%
    #authentication-via-oauth-protocol %}

    Claims that are contained in the token after OAuth 2.0 authentication.


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `jti` | string | Yes | Unique token ID. |


    ## Authentication via a phone number {% #authentication-via-phone-number %}

    Claim which is contained in the token after authentication via a phone
    number.


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `phone_number` | string | Yes | User's phone number used for
    authentication. The phone number format based on the country code, area
    code, and line number without any dividers. |


    ## Server JWT {% #server-jwt %}

    The server token is passed in the `X-SERVER-AUTHORIZATION` header.


    The token payload contains information about resources owned by the OAuth
    2.0 client. The token has access to calls with server-based authentication
    for these resources.


    | Claim | Type | Required | Description |

    |---|---|---|---|

    | `xsolla_login_project_id` | string (UUID) | Yes | ID of a Login project
    that owns the OAuth 2.0 client. |

    | `resources` | array | Yes | List of resources owned by an OAuth 2.0
    client. Possible types: `publisher_id` — resources of a merchant who owns
    the Login project; `publisher_project_id` — resources of a project in
    [Publisher Account](https://publisher.xsolla.com/). Each resource: `name` —
    resource type; `value` — resource ID. |

    | `jti` | string | Yes | Unique token ID. |


    # JWT validation {% #jwt-validation %}

    To validate the JWT, use the following Login API calls:
     - [User JWT validate](/api/login/operation/validate-jwt) — for a user token.
     - [Server JWT validate](/api/login/operation/validate-server-jwt) — for a server token.



    {% html name="div" attrs={"class": "notice"} %}

    **Notice**


    Do not reveal your secret key to anyone. If it was compromised, please
    update it.

    {% /html %}


    # Errors {% #errors %}


    Refer to the [documentation](/doc/login/references/errors/) for information
    about Xsolla Login API errors.
  title: Login API
  version: v1
tags:
  - name: product-configuration-age-restrictions
    x-displayName: Age restrictions
  - name: custom-email-templates
    x-displayName: Custom email templates
  - name: product-configuration-rsa
    x-displayName: RSA keys
  - name: product-configuration-social
    x-displayName: Social
  - name: product-configuration-groups
    x-displayName: User groups
  - name: product-configuration-mfa
    x-displayName: Multi-factor authentication
  - name: webhooks
    x-displayName: Webhooks
  - name: user-profile
    x-displayName: User profile
  - name: account-linking
    x-displayName: Account linking
  - name: password-reset
    x-displayName: Password reset
  - name: search
    x-displayName: User search
  - name: social-networks
    x-displayName: Social networks
  - name: user-friends
    x-displayName: User friends
  - name: user-management-groups
    x-displayName: User groups
  - name: bulk-user-management
    x-displayName: Export/Import
  - name: attributes-client
    x-displayName: Client-side
  - name: attributes-schema
    x-displayName: Validation schema
  - name: attributes-server
    x-displayName: Server-side
  - name: passwordless
    x-displayName: Passwordless
  - name: cross-platform
    x-displayName: Cross-platform
  - name: server-custom-id
    x-displayName: Via server custom ID
  - name: device-id
    x-displayName: Via device ID
  - name: login-and-password
    x-displayName: Classic (with password)
  - name: social-login
    x-displayName: Via social networks
  - name: token-management
    x-displayName: User and server token management
  - name: consent-management
    x-displayName: OAuth 2.0 consent management
  - name: sso
    x-displayName: SSO
paths:
  /attributes/custom_id/get:
    post:
      description: >-
        Gets a list of particular user’s attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-attributes-by-server-custom-id
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                It is necessary to specify your login project ID and list of
                server_custom_ids
              properties:
                keys:
                  description: >-
                    List of attributes’ keys which you want to get. If you do
                    not specify them, the method returns all user’s attributes.
                  items:
                    type: string
                  type: array
                server_custom_ids:
                  description: Array of server_custom_ids
                  items:
                    type: string
                  maxItems: 250
                  minItems: 1
                  type: array
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    attributes:
                      description: List of attributes of the specified user.
                      items:
                        properties:
                          attr_type:
                            default: client
                            description: >-
                              Definition of user’s access level to service
                              attributes.
                            enum:
                              - client
                              - server
                            type: string
                            nullable: false
                          data_type:
                            description: Data type of attribute
                            enum:
                              - string
                              - number
                              - integer
                              - boolean
                            type: string
                            nullable: true
                          description:
                            description: Description of attribute from JSON Schema.
                            type: string
                            nullable: true
                          format:
                            description: >-
                              Format of attribute from JSON Schema. Can be
                              `date-time`, `date`, `time`, `duration`, `email`,
                              `uri`, `uuid` or other from JSON Schema
                              [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                            type: string
                            nullable: true
                          key:
                            description: >-
                              Name of attribute that is used to identify user’s
                              attribute.
                            maxLength: 256
                            pattern: '[A-Za-z0-9_]+'
                            type: string
                            nullable: false
                          permission:
                            description: >-
                              Definition of user’s access level to other users’
                              attributes.
                            enum:
                              - public
                              - private
                            type: string
                            nullable: true
                          readonly:
                            description: The attribute is read-only
                            type: boolean
                            nullable: false
                          value:
                            description: Value of user’s attribute.
                            maxLength: 256
                            type: string
                            nullable: false
                        required:
                          - key
                          - value
                          - readonly
                        type: object
                      type: array
                    server_custom_id:
                      description: Game ID. Used for server Auth by partner identity
                      type: string
                    user_id:
                      description: >-
                        User ID. You can find it in **Publisher Account** >
                        Login settings > **Users** > **Username/ID**.
                      type: string
                      nullable: false
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get attributes by server custom IDs
      tags:
        - attributes-client
      x-server: true
      x-tags:
        - attributes-client
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/custom_id/get \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"keys":["string"],"server_custom_ids":["string"]}'
  /attributes/users/get:
    post:
      description: >-
        Gets a list of users by an attribute. Returns a list of the users’ IDs,
        their emails, and the attributes that were specified in the ‘key’ object
        of the request.<div class="notice"><strong>Notice</strong><br>[Rate
        limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-users-by-attribute-from-server
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                It is necessary to specify your merchant ID or login ID from
                Publisher Account
              properties:
                after:
                  description: >
                    Update date of user’s attribute and ID of the latest
                    attribute in the `keys` list. Do not set it at the first
                    time.

                    When you get users by attribute, they are sorted by their
                    update date. If several attributes have the same update
                    date, they are sorted by attribute ID.

                    It is used for API pagination.
                  type: string
                  nullable: true
                attr_type:
                  default: client
                  description: Definition of user’s access level to service attributes.
                  enum:
                    - client
                    - server
                  type: string
                  nullable: false
                attribute:
                  description: Attribute is used to get users’ list.
                  properties:
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute. Must be unique per user.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    value:
                      description: >-
                        Value of user’s attribute. Needed for getting users with
                        the `key` parameter with this value. If you do not
                        specify it, it returns all users with any value for this
                        key.
                      type: string
                      nullable: true
                  required:
                    - key
                  type: object
                keys:
                  description: >-
                    List of attributes’ keys which you want to get. If you do
                    not specify them, the method returns all user’s attributes.
                  items:
                    type: string
                  maxItems: 5
                  type: array
                limit:
                  default: 20
                  description: >-
                    Number of users that is returned when searching by
                    attribute.
                  maximum: 20
                  minimum: 0
                  type: integer
                  nullable: false
                login_project_id:
                  description: >-
                    Login ID from Publisher Account which you want to get user’s
                    attributes for. If you do specify it, it is use instead your
                    merchant ID and project ID from Publisher Account.
                  type: string
                publisher_id:
                  description: >-
                    Your merchant ID the request is made for. Needed for request
                    authorizing.
                  type: integer
                  nullable: true
                publisher_project_id:
                  description: >-
                    Project ID from Publisher Account which you want to get
                    users for. If you do not specify it, it returns users
                    without the value of this parameter.
                  type: integer
                search_type:
                  default: equal
                  description: Сomparison condition that defines search criteria.
                  enum:
                    - equal
                    - like
                  type: string
                  nullable: false
              required:
                - attribute
              type: object
        required: true
      responses:
        '200':
          description: OK
          headers:
            X-XL-AFTER:
              description: >-
                Date and ID of the latest attribute in the `keys` list that are
                used for API pagination. You should set this value to the
                `after` parameter to get the next part of users.
              schema:
                type: string
          content:
            application/json:
              schema:
                items:
                  properties:
                    attributes:
                      description: List of attributes of the specified user.
                      items:
                        properties:
                          attr_type:
                            default: client
                            description: >-
                              Definition of user’s access level to service
                              attributes.
                            enum:
                              - client
                              - server
                            type: string
                            nullable: false
                          data_type:
                            description: Data type of attribute
                            enum:
                              - string
                              - number
                              - integer
                              - boolean
                            type: string
                            nullable: true
                          description:
                            description: Description of attribute from JSON Schema.
                            type: string
                            nullable: true
                          format:
                            description: >-
                              Format of attribute from JSON Schema. Can be
                              `date-time`, `date`, `time`, `duration`, `email`,
                              `uri`, `uuid` or other from JSON Schema
                              [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                            type: string
                            nullable: true
                          key:
                            description: >-
                              Name of attribute that is used to identify user’s
                              attribute.
                            maxLength: 256
                            pattern: '[A-Za-z0-9_]+'
                            type: string
                            nullable: false
                          permission:
                            description: >-
                              Definition of user’s access level to other users’
                              attributes.
                            enum:
                              - public
                              - private
                            type: string
                            nullable: true
                          readonly:
                            description: The attribute is read-only
                            type: boolean
                            nullable: false
                          value:
                            description: Value of user’s attribute.
                            maxLength: 256
                            type: string
                            nullable: false
                        required:
                          - key
                          - value
                          - readonly
                        type: object
                      type: array
                    email:
                      description: User's email.
                      type: string
                    user_id:
                      description: >-
                        User ID. You can find it in **Publisher Account** >
                        Login settings > **Users** > **Username/ID**.
                      type: string
                      nullable: false
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get users by attribute from server
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/get \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"after":"string","attr_type":"client","attribute":{"key":"string","value":"string"},"keys":["string"],"limit":20,"login_project_id":"string","publisher_id":0,"publisher_project_id":0,"search_type":"equal"}'
  /attributes/users/me/get:
    post:
      description: >-
        Gets a list of particular user’s attributes. Returns only attributes
        with the `client` value of `attr_type` parameter.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for client-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-users-attributes-from-client
      requestBody:
        $ref: '#/components/requestBodies/get-users-attributes-from-clientBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesBearer: []
      summary: Get user attributes from client
      tags:
        - attributes-client
      x-client: true
      x-tags:
        - attributes-client
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/me/get \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"keys":["string"],"publisher_project_id":0,"user_id":"a169451c-8525-4352-b8ca-070dd449a1a5"}'
  /attributes/users/me/get_read_only:
    post:
      description: >-
        Gets a list of particular user’s read-only attributes. Returns only
        attributes with the `server` value of the `attr_type` parameter, which
        was set only for reading.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for client-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-users-read-only-attributes-from-client
      requestBody:
        $ref: '#/components/requestBodies/get-users-attributes-from-clientBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesBearer: []
      summary: Get read-only user attributes from client
      tags:
        - attributes-client
      x-client: true
      x-tags:
        - attributes-client
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/me/get_read_only \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"keys":["string"],"publisher_project_id":0,"user_id":"a169451c-8525-4352-b8ca-070dd449a1a5"}'
  /attributes/users/me/update:
    post:
      description: >-
        Updates and creates particular user’s attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for client-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: update-users-attributes-from-client
      requestBody:
        content:
          application/json:
            schema:
              properties:
                attributes:
                  description: >
                    List of attributes of the specified game.

                    To add attribute which does not exist, set this attribute to
                    the `key` parameter.

                    To update `value` of the attribute, specify its `key`
                    parameter and set the new `value`. You can change several
                    attributes at a time.
                  items:
                    properties:
                      key:
                        description: >-
                          Name of attribute that is used to identify user’s
                          attribute. Must be unique per user.
                        maxLength: 256
                        pattern: '[A-Za-z0-9_]+'
                        type: string
                        nullable: false
                      permission:
                        description: >-
                          Definition of user’s access level to other users’
                          attributes.
                        enum:
                          - public
                          - private
                        type: string
                        nullable: true
                      value:
                        description: Value of user’s attribute.
                        maxLength: 256
                        type: string
                        nullable: false
                    required:
                      - key
                      - value
                    type: object
                  type: array
                publisher_project_id:
                  description: >-
                    Project ID from Publisher Account which you want to update
                    the value of specified attributes for. If you do not specify
                    it, the method updates attributes that are general to all
                    games only.
                  type: integer
                removing_keys:
                  description: >-
                    List of attributes which you want to delete. If you specify
                    the same attribute in `attributes` parameter, it will not be
                    deleted.
                  items:
                    type: string
                  type: array
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesBearer: []
      summary: Update user attributes from client
      tags:
        - attributes-client
      x-client: true
      x-tags:
        - attributes-client
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/me/update \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"attributes":[{"key":"string","permission":"public","value":"string"}],"publisher_project_id":0,"removing_keys":["string"]}'
  /attributes/users/{user_id}/get:
    post:
      description: >-
        Gets user’s attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-users-attributes-from-server
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/get-users-attributes-from-serverBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    attr_type:
                      default: client
                      description: Definition of user’s access level to service attributes.
                      enum:
                        - client
                        - server
                      type: string
                      nullable: false
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    readonly:
                      description: The attribute is read-only
                      type: boolean
                      nullable: false
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                    - readonly
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get user attributes from server
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/{user_id}/get \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"keys":["string"],"publisher_id":0,"publisher_project_id":0}'
  /attributes/users/{user_id}/get_read_only:
    post:
      description: >-
        Gets a list of user’s read-only attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-users-read-only-attributes-from-server
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/get-users-attributes-from-serverBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get read-only user attributes from server
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/{user_id}/get_read_only \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"keys":["string"],"publisher_id":0,"publisher_project_id":0}'
  /attributes/users/{user_id}/update:
    post:
      description: >-
        Updates and creates user’s attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: update-users-attributes-from-server
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/update-users-attributes-from-serverBody'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Update user attributes from server
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/{user_id}/update \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"attributes":[{"attr_type":"client","data_type":"string","description":"string","format":"string","key":"string","permission":"public","value":"string"}],"publisher_id":0,"publisher_project_id":0,"removing_keys":["string"]}'
  /attributes/users/{user_id}/update_read_only:
    post:
      description: >-
        Updates and creates user’s read-only attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: update-users-read-only-attributes-from-server
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                attributes:
                  description: >
                    List of attributes of the specified game.

                    To add attribute which does not exist, set this attribute to
                    the `key` parameter.

                    To update `value` of the attribute, specify its `key`
                    parameter and set new `value`. You can change several
                    attributes at a time.
                  items:
                    properties:
                      key:
                        description: >-
                          Name of attribute that is used to identify user’s
                          attribute. Must be unique per user.
                        maxLength: 256
                        pattern: '[A-Za-z0-9_]+'
                        type: string
                        nullable: false
                      permission:
                        description: >-
                          Definition of user’s access level to other users’
                          attributes.
                        enum:
                          - public
                          - private
                        type: string
                        nullable: true
                      value:
                        description: Value of user’s attribute.
                        maxLength: 256
                        type: string
                        nullable: false
                    required:
                      - key
                      - value
                    type: object
                  type: array
                publisher_id:
                  description: >-
                    Your merchant ID the request is made for. Need for request
                    authorizing.
                  type: integer
                  nullable: true
                publisher_project_id:
                  description: >-
                    Project ID from Publisher Account which you want to update
                    the value of specified attributes for. If you do not specify
                    it, the method updates attributes that are general to all
                    games only.
                  type: integer
                removing_keys:
                  description: >-
                    List of attributes which you want to delete. If you specify
                    the same attribute in `attributes` parameter, it will not be
                    deleted.
                  items:
                    type: string
                  type: array
              required:
                - publisher_id
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Update user read-only attributes from server
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/attributes/users/{user_id}/update_read_only \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"attributes":[{"key":"string","permission":"public","value":"string"}],"publisher_id":0,"publisher_project_id":0,"removing_keys":["string"]}'
  /blank:
    head:
      description: Show token, error and description if exists
      operationId: head-blank
      parameters:
        - in: query
          name: token
          schema:
            type: string
        - in: query
          name: error_code
          schema:
            type: string
        - in: query
          name: error_description
          schema:
            type: string
      responses:
        '200':
          description: OK
      summary: Blank page for default redirect URL
      tags:
        - general
      x-secret: true
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request HEAD \
              --url 'https://login.xsolla.com/api/blank?token=SOME_STRING_VALUE&error_code=SOME_STRING_VALUE&error_description=SOME_STRING_VALUE' \
              --header 'content-type: text/html'
  /login:
    post:
      description: Authenticates the user by the username/email and password specified.
      operationId: auth-by-username-and-password
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
      requestBody:
        content:
          application/json:
            schema:
              description: User details.
              example:
                password: password123
                remember_me: false
                username: John
              properties:
                password:
                  description: User password.
                  type: string
                  x-isnullable: false
                remember_me:
                  description: >-
                    Whether the user agrees to save the authentication data.
                    Default is `false`.
                  type: boolean
                  x-isnullable: false
                username:
                  description: Username or email address.
                  type: string
                  x-isnullable: false
              required:
                - username
                - password
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL with the `token` and `remember_me` parameters to
                      redirect the user to after successful authentication. The
                      `token` value is the user JWT.
                    type: string
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Wrong username or password.
        '404':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            OAuthSocialRequestFailed:
              examples:
                response:
                  value:
                    error:
                      code: 0
                      description: path /api/login123/ was not found
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnavailableProjectMethod:
              examples:
                response:
                  value:
                    error:
                      code: 0
                      description: projectId in query is required
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 300-003
                      description: rate limit error
      summary: |
        [JWT] Auth by username and password
      tags:
        - login-and-password
      x-client: true
      x-tags:
        - login-and-password
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \
              --data '{"password":"password123","remember_me":false,"username":"John"}'
  /login/device/{device_type}:
    post:
      description: >-
        Authenticates a user via a particular device ID. To enable silent
        authentication, use the
        [instruction](/doc/login/authentication-options/device-id/#login_features_device_id_presettings).
      operationId: jwt-auth-via-device-id
      parameters:
        - description: Type of the device.
          in: path
          name: device_type
          required: true
          schema:
            type: string
            enum:
              - android
              - ios
              - macos
              - windows
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
      requestBody:
        $ref: '#/components/requestBodies/jwt-auth-via-device-idBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  token:
                    description: Xsolla Login user JWT.
                    type: string
                    x-isnullable: false
                required:
                  - token
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            DependencyService:
              examples:
                response:
                  value:
                    error:
                      code: 010-035
                      description: 'Dependency service unavailable: playfab.'
            InvalidParam:
              examples:
                response:
                  value:
                    error:
                      code: 002-027
                      description: Invalid device_id parameter.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Auth via device ID
      tags:
        - device-id
      x-client: true
      x-tags:
        - device-id
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login/device/{device_type}?projectId=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \
              --data '{"device":"ONEPLUS A6003","device_id":"1AF516EFACD646F6"}'
  /login/email/confirm:
    post:
      description: >
        Completes authentication by the user email address and a confirmation
        code. The code lifetime is 3 minutes.


        This call is used only with the [Start auth by
        email](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-email)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their email address.

        2. The user enters their email address.

        3. The application sends the [Start auth by
        email](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-email)
        request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make email contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.
        4. The Xsolla Login server sends the email and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends this request to the Xsolla Login server with
        the received ID.

        8. The user is considered as authorized.
      operationId: jwt-complete-auth-by-email
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/jwt-complete-auth-by-emailBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL with the `token` and `remember_me` parameters to
                      redirect the user to after successful authentication. The
                      `token` parameter has the user JWT format.
                    type: string
                required:
                  - login_url
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AttemptsToSendAuthCodeHaveBeenSpent:
              examples:
                response:
                  value:
                    error:
                      code: 003-049
                      description: >-
                        You exceeded limited number of attempts to use
                        authorization code.
            ExternalAccountIDIsNotReturnedForLoginWithCustomStorage:
              examples:
                response:
                  value:
                    error:
                      code: 003-048
                      description: >-
                        Invalid response from your API. It must contain user ID
                        as account_id response body parameter.
            WrongAuthorizationCode:
              examples:
                response:
                  value:
                    error:
                      code: 003-039
                      description: Wrong authorization code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Complete auth by email
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login/email/confirm?projectId=SOME_STRING_VALUE' \
              --data '{"code":"string","email":"string","operation_id":"string"}'
  /login/email/request:
    post:
      description: >
        Starts authentication by the user email address and sends a confirmation
        code to their email address. The code lifetime is 3 minutes.


        This call is used only with the [Complete auth by
        email](https://developers.xsolla.com/api/login/operation/jwt-complete-auth-by-email)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their email address.

        2. The user enters their email address.

        3. The application sends this request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make email contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.
        4. The Xsolla Login server sends the email and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the linke.

        7. The application sends the [Complete auth by
        email](https://developers.xsolla.com/api/login/operation/jwt-complete-auth-by-email)
        request with the received ID to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: jwt-start-auth-by-email
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
      requestBody:
        $ref: '#/components/requestBodies/jwt-start-auth-by-emailBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  operation_id:
                    description: ID of the confirmation code.
                    type: string
                required:
                  - operation_id
                type: object
        '400':
          description: bad request
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessEmailAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-056
                      description: >-
                        Passwordless authentication via email address disabled
                        for this Login project.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Start auth by email
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login/email/request?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \
              --data '{"email":"string","link_url":"http://example.com","send_link":true}'
  /login/phone/confirm:
    post:
      description: >
        Completes authentication by the user phone number and a confirmation
        code. The code lifetime is 3 minutes.


        This call is used only with the [Start auth by phone
        number](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-phone-number)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their phone number.

        2. The user enters their phone number.

        3. The application sends the [Start auth by phone
        number](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-phone-number)
        request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make SMS contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.
        4. The Xsolla Login server sends the SMS and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends this request to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: jwt-complete-auth-by-phone-number
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/jwt-complete-auth-by-phone-numberBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL with the `token` and `remember_me` parameters to
                      redirect the user to after successful authentication. The
                      `token` parameter has the user JWT format.
                    type: string
                required:
                  - login_url
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AttemptsToSendAuthCodeHaveBeenSpent:
              examples:
                response:
                  value:
                    error:
                      code: 003-049
                      description: >-
                        You exceeded limited number of attempts to use
                        authorization code.
            ExternalAccountIDIsNotReturnedForLoginWithCustomStorage:
              examples:
                response:
                  value:
                    error:
                      code: 003-048
                      description: >-
                        Invalid response from your API. It must contain user ID
                        as account_id response body parameter.
            WrongAuthorizationCode:
              examples:
                response:
                  value:
                    error:
                      code: 003-039
                      description: Wrong authorization code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Complete auth by phone number
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login/phone/confirm?projectId=SOME_STRING_VALUE' \
              --data '{"code":"string","operation_id":"string","phone_number":"string"}'
  /login/phone/request:
    post:
      description: >
        Starts authentication by the user phone number and sends a confirmation
        code to their phone number. The code lifetime is 3 minutes.


        This call is used only with the [Complete auth by phone
        number](https://developers.xsolla.com/api/login/operation/jwt-complete-auth-by-phone-number)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their phone number.

        2. The user enters their phone number.

        3. The application sends this request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make SMS contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.
        4. The Xsolla Login server sends the SMS and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends the [Complete auth by phone
        number](https://developers.xsolla.com/api/login/operation/jwt-complete-auth-by-phone-number)
        request with the received ID to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: jwt-start-auth-by-phone-number
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
      requestBody:
        $ref: '#/components/requestBodies/jwt-start-auth-by-phone-numberBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  operation_id:
                    description: ID of the confirmation code.
                    type: string
                required:
                  - operation_id
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessPhoneAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-050
                      description: >-
                        Passwordless authentication via phone number disabled
                        for this Login project.
            RateLimitPhoneAuthorization:
              examples:
                response:
                  value:
                    error:
                      code: 003-038
                      description: You exceeded limited number of attempts to send SMS.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012,
                      description: User with specified phone number already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Start auth by phone number
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/login/phone/request?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \
              --data '{"link_url":"http://example.com","phone_number":"string","send_link":true,"source":"xsolla_link"}'
  /oauth2/auth:
    get:
      description: >-
        Checks the presence of a valid SSO session. Redirects to the URL passed
        in the `redirect_url` parameter with an authorization code.
      operationId: oauth2-authorize
      parameters:
        - description: >-
            Will be set to code, indicating that the application expects to
            receive an authorization code if successful.
          in: query
          name: response_type
          required: true
          schema:
            type: string
            enum:
              - code
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >-
            This URL must match one of the URLs the developer registered when
            creating the application, and the authorization server should reject
            the request if it does not match. To set up this parameter, contact
            your Customer Success Manager.
          in: query
          name: redirect_uri
          required: true
          schema:
            type: string
        - description: >-
            The request may have one or more scope values indicating additional
            access requested by the application. The authorization server will
            need to display the requested scopes to the user.
          in: query
          name: scope
          required: true
          schema:
            type: string
        - description: >-
            The state parameter is used by the application to store
            request-specific data and/or prevent CSRF attacks. The authorization
            server must return the unmodified state value back to the
            application. This is the recommended parameter.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >-
            The audience parameter may contain multiple strings separated by a
            url-encoded space (+ or %20). The audience values themselves must
            also be url encoded.
          in: query
          name: audience
          required: true
          schema:
            type: string
        - description: >-
            If true is passed method will redirect to widget at first and then
            to partner's callback. If false, method will redirect straight to
            partner's callback.
          in: query
          name: popup
          schema:
            type: boolean
            default: false
        - description: >-
            Generated challenge from the `code_verifier`
            (https://datatracker.ietf.org/doc/html/rfc7636#section-4-2).
          in: query
          name: code_challenge
          schema:
            type: string
        - description: >-
            Method used to generate the challenge. For now, you can only use the
            method `S256` to generate `code_challenge`.
          in: query
          name: code_challenge_method
          schema:
            type: string
            enum:
              - S256
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: widget_only
          schema:
            type: boolean
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: enable_post_message_login
          schema:
            type: boolean
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: disable_socials
          schema:
            type: boolean
        - description: >-
            If passed then method will redirect on this URL in case of a missing
            session for authentication and obtaining new session.
          in: query
          name: fail_auth_url
          schema:
            type: string
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: disable_passwordless_email
          schema:
            type: boolean
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: disable_passwordless_phone
          schema:
            type: boolean
        - description: Service parameter for pop up flow. Does not affect API behaviour.
          in: query
          name: is_xsolla_link
          schema:
            type: boolean
      responses:
        '302':
          description: Redirection
          headers:
            Location:
              description: >-
                URL generated from the `redirect_uri` with `code` parameter. The
                `code` parameter is the user authentication code which must be
                exchanged to a JWT. If the request contained a `state`
                parameter, the URL will also include the exact value from the
                request.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '418':
          description: I’m a teapot
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 004-001
                      description: Something went wrong.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: OAuth 2.0 authorize
      tags:
        - sso
      x-client: true
      x-tags:
        - sso
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/auth?response_type=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&redirect_uri=SOME_STRING_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&audience=SOME_STRING_VALUE&popup=false&code_challenge=SOME_STRING_VALUE&code_challenge_method=SOME_STRING_VALUE&widget_only=SOME_BOOLEAN_VALUE&enable_post_message_login=SOME_BOOLEAN_VALUE&disable_socials=SOME_BOOLEAN_VALUE&fail_auth_url=SOME_STRING_VALUE&disable_passwordless_email=SOME_BOOLEAN_VALUE&disable_passwordless_phone=SOME_BOOLEAN_VALUE&is_xsolla_link=SOME_BOOLEAN_VALUE' \
              --header 'accept: application/x-www-form-urlencoded'
  /oauth2/clear_sso:
    get:
      description: Deletes user's SSO cookie for given project.
      operationId: clear-sso-cookie
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: No Content
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Clear SSO
      tags:
        - sso
      x-client: true
      x-tags:
        - sso
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/clear_sso?projectId=SOME_STRING_VALUE'
  /oauth2/consent:
    post:
      description: >-
        Saves the user's consent to the application of certain scopes for a
        specific OAuth 2.0 client.
      operationId: oauth2-save-consent
      requestBody:
        content:
          application/json:
            schema:
              properties:
                approval:
                  type: boolean
                  nullable: false
                client_id:
                  description: Your application ID.
                  type: string
                  nullable: false
                redirect_uri:
                  description: >-
                    This URL must match one of the URLs the developer registered
                    when creating the application, and the authorization server
                    should reject the request if it does not match. To set up
                    this parameter, contact your Customer Success Manager.
                  type: string
                  nullable: false
                scope:
                  description: >-
                    The request may have one or more scope values indicating
                    additional access requested by the application. The
                    authorization server will need to display the requested
                    scopes to the user. If there is more than one scope value,
                    then they are separated by a space.
                  type: string
                state:
                  description: >-
                    The state parameter is used by the application to store
                    request-specific data and/or prevent CSRF attacks. The
                    authorization server must return the unmodified state value
                    back to the application. This is the recommended parameter.
                  type: string
                  nullable: false
              required:
                - client_id
                - redirect_uri
                - state
              type: object
        required: true
      responses:
        '200':
          description: OK
        '302':
          description: Redirection
          headers:
            Location:
              description: >-
                URL generated from the `redirect_uri`. If the request contained
                a `state` parameter, the URL will also include the exact value
                from the request.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: |
        [OAuth 2.0] Save consent for OAuth 2.0
      tags:
        - consent-management
      x-client: true
      x-tags:
        - consent-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/oauth2/consent \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"approval":true,"client_id":"string","redirect_uri":"string","scope":"string","state":"string"}'
  /oauth2/consent/validate:
    post:
      description: >-
        Checks if the user gave consent to the application of the user data
        collection scope for a specific OAuth 2.0 client.
      operationId: oauth2-check-consent
      requestBody:
        content:
          application/json:
            schema:
              properties:
                client_id:
                  description: Your application ID.
                  type: string
                  nullable: false
                scope:
                  description: >-
                    The request may have one or more scope values indicating
                    additional access requested by the application. The
                    authorization server will need to display the requested
                    scopes to the user. If there is more than one scope value,
                    then they are separated by a space.
                  type: string
                  nullable: false
              required:
                - client_id
                - scope
              type: object
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  approval:
                    type: boolean
                    nullable: false
                  refused_scopes:
                    items:
                      type: string
                    type: array
                    nullable: true
                required:
                  - approval
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: |
        [OAuth 2.0]Check consent for OAuth 2.0
      tags:
        - consent-management
      x-client: true
      x-tags:
        - consent-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/oauth2/consent/validate \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"client_id":"string","scope":"string"}'
  /oauth2/login:
    post:
      description: >-
        Authenticates the user by the username/email and password specified. To
        finish user authentication, get the user JWT by sending the [Generate
        JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
        request.
      operationId: oauth-20-auth-by-username-and-password
      parameters:
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Identification parameter of the application the token was issued
            for. Parameter value will be passed in the `aud` JWT field.
          in: query
          name: audience
          schema:
            type: string
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/oauth-20-auth-by-username-and-passwordBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
            InvalidOAuth20State:
              examples:
                response:
                  value:
                    error:
                      code: 010-022
                      description: >-
                        Parameter state missing or too weak as it has less than
                        8 characters.
            InvalidRequest:
              examples:
                response:
                  value:
                    error:
                      code: 010-017
                      description: >-
                        Request is missing required parameter, includes invalid
                        parameter value, includes parameter more than once, or
                        is malformed.
            InvalidScope:
              examples:
                response:
                  value:
                    error:
                      code: 010-020
                      description: Requested scope is invalid, unknown, or malformed.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Wrong username or password.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            CaptchaRequired:
              examples:
                response:
                  value:
                    error:
                      code: 010-007
                      description: Incorrect CAPTCHA input.
            LoginAuthenticationNotAllowed:
              examples:
                response:
                  value:
                    error:
                      code: 003-021
                      description: Authentication disabled for this Login project.
            UnavailableProjectMethod:
              examples:
                response:
                  value:
                    error:
                      code: 003-020
                      description: Call unavailable for this Login project.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Auth by username and password
      tags:
        - login-and-password
      x-client: true
      x-tags:
        - login-and-password
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login?response_type=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&audience=SOME_STRING_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE' \
              --data '{"password":"password123","username":"John"}'
  /oauth2/login/device/{device_type}:
    post:
      description: Authenticates a user via a particular device ID.
      operationId: oauth-20-auth-via-device-id
      parameters:
        - description: Type of the device.
          in: path
          name: device_type
          required: true
          schema:
            type: string
            enum:
              - android
              - ios
              - macos
              - windows
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/jwt-auth-via-device-idBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
            InvalidOAuth20State:
              examples:
                response:
                  value:
                    error:
                      code: 010-022
                      description: >-
                        Parameter state missing or too weak as it has less than
                        8 characters.
            InvalidRequest:
              examples:
                response:
                  value:
                    error:
                      code: 010-017
                      description: >-
                        Request is missing required parameter, includes invalid
                        parameter value, includes parameter more than once, or
                        is malformed.
            InvalidScope:
              examples:
                response:
                  value:
                    error:
                      code: 010-020
                      description: Requested scope is invalid, unknown, or malformed.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            DependencyService:
              examples:
                response:
                  value:
                    error:
                      code: 010-035
                      description: 'Dependency service unavailable: playfab.'
            InvalidParam:
              examples:
                response:
                  value:
                    error:
                      code: 002-027
                      description: Invalid device_id parameter.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Auth via device ID
      tags:
        - device-id
      x-client: true
      x-tags:
        - device-id
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/device/{device_type}?client_id=SOME_INTEGER_VALUE&response_type=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&state=SOME_STRING_VALUE&scope=SOME_STRING_VALUE' \
              --data '{"device":"ONEPLUS A6003","device_id":"1AF516EFACD646F6"}'
  /oauth2/login/email/confirm:
    post:
      description: >
        Completes authentication by the user email address and a confirmation
        code. The code lifetime is 3 minutes.


        This call is used only with the [Start auth by
        email](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-email)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their email address.

        2. The user enters their email address.

        3. The application sends the [Start auth by
        email](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-email)
        request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make email contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.
        4. The Xsolla Login server sends the email and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends this request to the Xsolla Login server with
        the received ID.

        8. The user is considered as authorized.
      operationId: oauth-20-complete-auth-by-email
      parameters:
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
      requestBody:
        $ref: '#/components/requestBodies/jwt-complete-auth-by-emailBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AttemptsToSendAuthCodeHaveBeenSpent:
              examples:
                response:
                  value:
                    error:
                      code: 003-049
                      description: >-
                        You exceeded limited number of attempts to use
                        authorization code.
            ExternalAccountIDIsNotReturnedForLoginWithCustomStorage:
              examples:
                response:
                  value:
                    error:
                      code: 003-048
                      description: >-
                        Invalid response from your API. It must contain user ID
                        as account_id response body parameter.
            WrongAuthorizationCode:
              examples:
                response:
                  value:
                    error:
                      code: 003-039
                      description: Wrong authorization code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Complete auth by email
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/email/confirm?client_id=SOME_INTEGER_VALUE' \
              --data '{"code":"string","email":"string","operation_id":"string"}'
  /oauth2/login/email/request:
    post:
      description: >
        Starts authentication by the user email address and sends a confirmation
        code to their email address. The code lifetime is 3 minutes.


        This call is used only with the [Complete auth by
        email](https://developers.xsolla.com/api/login/operation/oauth-20-complete-auth-by-email)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their email address.

        2. The user enters their email address.

        3. The application sends this request to the Xsolla Login server:
           a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make email contain the confirmation code and link.
           b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.
        4. The Xsolla Login server sends the email and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends the [Complete auth by
        email](https://developers.xsolla.com/api/login/operation/oauth-20-complete-auth-by-email)
        request with the received ID to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: oauth-20-start-auth-by-email
      parameters:
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `offline` to use `refresh_token` from the [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/jwt-start-auth-by-emailBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  operation_id:
                    description: ID of the confirmation code.
                    type: string
                required:
                  - operation_id
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessEmailAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-056
                      description: >-
                        Passwordless authentication via email address disabled
                        for this Login project.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Start auth by email
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/email/request?response_type=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE' \
              --data '{"email":"string","link_url":"http://example.com","send_link":true}'
  /oauth2/login/phone/confirm:
    post:
      description: >
        Completes authentication by the user phone number and a confirmation
        code. The code lifetime is 3 minutes.


        This call is used only with the [Start auth by phone
        number](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-phone-number)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their phone number.

        2. The user enters their phone number.

        3. The application sends the [Start auth by phone
        number](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-phone-number)
        request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make SMS contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.
        4. The Xsolla Login server sends the SMS and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends this request to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: oauth-20-complete-auth-by-phone-number
      parameters:
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
      requestBody:
        $ref: '#/components/requestBodies/jwt-complete-auth-by-phone-numberBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnableToAuthorizeBannedUser:
              examples:
                response:
                  value:
                    error:
                      code: 002-040
                      description: Unable to authorize banned user.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AttemptsToSendAuthCodeHaveBeenSpent:
              examples:
                response:
                  value:
                    error:
                      code: 003-049
                      description: >-
                        You exceeded limited number of attempts to use
                        authorization code.
            ExternalAccountIDIsNotReturnedForLoginWithCustomStorage:
              examples:
                response:
                  value:
                    error:
                      code: 003-048
                      description: >-
                        Invalid response from your API. It must contain user ID
                        as account_id response body parameter.
            WrongAuthorizationCode:
              examples:
                response:
                  value:
                    error:
                      code: 003-039
                      description: Wrong authorization code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Complete auth by phone number
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/phone/confirm?client_id=SOME_INTEGER_VALUE' \
              --data '{"code":"string","operation_id":"string","phone_number":"string"}'
  /oauth2/login/phone/request:
    post:
      description: >
        Starts authentication by the user phone number and sends a confirmation
        code to their phone number. The code lifetime is 3 minutes.


        This call is used only with the [Complete auth by phone
        number](https://developers.xsolla.com/api/login/operation/oauth-20-complete-auth-by-phone-number)
        call.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their phone number.

        2. The user enters their phone number.

        3. The application sends this request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send the [Get confirmation code](https://developers.xsolla.com/api/login/operation/get-confirmation-code) request to make SMS contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.
        4. The Xsolla Login server sends the SMS and returns the ID of the
        confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends the [Complete auth by phone
        number](https://developers.xsolla.com/api/login/operation/oauth-20-complete-auth-by-phone-number)
        request with the received ID to the Xsolla Login server.

        8. The user is considered as authorized.
      operationId: oauth-20-start-auth-by-phone-number
      parameters:
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `offline` to use `refresh_token` from the [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/jwt-start-auth-by-phone-numberBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  operation_id:
                    description: ID of the confirmation code.
                    type: string
                  remaining_ttl:
                    description: Remaining time for resend. The value is in seconds.
                    type: integer
                required:
                  - operation_id
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessPhoneAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-050
                      description: >-
                        Passwordless authentication via phone number disabled
                        for this Login project.
            RateLimitPhoneAuthorization:
              examples:
                response:
                  value:
                    error:
                      code: 003-038
                      description: You exceeded limited number of attempts to send SMS.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012,
                      description: User with specified phone number already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Start auth by phone number
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/phone/request?response_type=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE' \
              --data '{"link_url":"http://example.com","phone_number":"string","send_link":true,"source":"xsolla_link"}'
  /oauth2/login/token:
    post:
      description: >-
        Authenticates the user by the username/email and password and returns a
        JWT. Exchanging the code to a JWT via the [Generate
        JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
        call is not needed.
      operationId: jwt-auth-by-username-and-password
      parameters:
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/oauth-20-auth-by-username-and-passwordBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  access_token:
                    description: User JWT.
                    type: string
                  expire_in:
                    description: >-
                      JWT expiration period in seconds. Default value is 3600
                      seconds.
                    type: integer
                  refresh_token:
                    description: Refresh token for updating the `access_token`.
                    type: string
                  token_type:
                    description: JWT type with `bearer` value.
                    type: string
                required:
                  - access_token
                  - token_type
                type: object
              examples:
                response:
                  value:
                    access_token: 2YotnFZFEjr1zCsicMWpAA
                    expires_in: 3600
                    refresh_token: tGzv3JOkF0XG5Qx2TlKWIA
                    token_type: bearer
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidGrant:
              examples:
                response:
                  value:
                    error:
                      code: 010-023
                      description: >-
                        Authorization grant or refresh token is invalid,
                        expired, revoked, doesn’t match the redirection URI used
                        in authorization request, or issued for another client.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Wrong username or password.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] JWT auth by username and password
      tags:
        - login-and-password
      x-client: true
      x-tags:
        - login-and-password
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/login/token?client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE' \
              --data '{"password":"password123","username":"John"}'
  /oauth2/logout:
    get:
      description: >-
        Logs the user out and deletes the user session according to the value of
        the `sessions` parameter. Call the [Check user
        authentication](https://developers.xsolla.com/api/login/operation/check-user-authentication)
        call to see if the user is logged in.
      operationId: log-user-out
      parameters:
        - description: >
            Shows how the user is logged out and how the user session is
            deleted. The parameter has the following values:

            * `sso` is used for deleting only the SSO user session.

            * `all` is used for deleting the SSO user session and invalidating
            all access and refresh tokens.
          in: query
          name: sessions
          required: true
          schema:
            type: string
            enum:
              - sso
              - all
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
        - ExternalBearer: []
      summary: |
        [OAuth 2.0] Log user out
      tags:
        - sso
      x-client: true
      x-tags:
        - sso
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/logout?sessions=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /oauth2/social/{oauth2_cross_social_provider_name}/cross_auth:
    get:
      description: >
        Exchanges a platform-specific authentication credential (a session
        ticket/exchange code/authorization token) from Epic Games, Steam, or
        Xbox for the JWT in your project (`projectId`).


        You will get the link to redirect the user to your project.


        To enable silent authentication, use the
        [instruction](https://developers.xsolla.com/doc/login/features/silent-authentication).
      operationId: oauth-20-silent-authentication
      parameters:
        - description: >
            Name of the platform the user authorized in. Can be `steam`, `xbox`,
            `epicgames`.
          in: path
          name: oauth2_cross_social_provider_name
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            **Required**. A credential received from a platform during user
            authentication, encoded according to the Base64 standard. Depending
            on the social provider, it can be:   - an exchange code for Epic
            Games   - a session ticket for Steam   - an Xbox authorization token
            in the following format: `<xid>-<uhs>;XSTSToken`
          in: query
          name: session_ticket
          schema:
            type: string
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >
            Identification parameter of the application the token was issued
            for. Parameter value will be passed in the `aud` JWT field.
          in: query
          name: audience
          schema:
            type: string
        - description: >-
            Your app ID on the platform. <b>Required</b> if the platform where
            the user is authorized is Steam.
          in: query
          name: app_id
          schema:
            type: string
        - description: Code received from the platform.
          in: query
          name: code
          schema:
            type: string
        - description: >
            Shows how the Xsolla Login server should respond. If you set:

            * `true` value, the Xsolla Login server returns the 302 response
            code. URL for user redirection with user JWT will be in the
            `Location` header.

            * `false` value, the Xsolla Login server returns the 200 response
            code. URL for user redirection with user JWT will be in the response
            body.
          in: query
          name: is_redirect
          schema:
            type: boolean
            default: true
        - description: >-
            Do not create new user if they not exist yet. Existing users will be
            authorized as usual
          in: query
          name: no_user_creation
          schema:
            type: boolean
            default: false
        - description: >
            The deployment ID that the client is trying to authenticate with.
            This will impact interactions with other services that require a
            deployment. If the deployment is not public, only users who have
            been entitled will be able to log in. For more information on
            deployments and deployment IDs see Product, Sandbox, and Deployment
            IDs.

            Note: You must use this unique identifier to use the Ecommerce APIs,
            and to request access tokens used by game clients.
          in: query
          name: deployment_id
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL with the `token` parameter to redirect the user to
                      your project.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '302':
          description: Redirection
          headers:
            Location:
              description: >-
                URL generated from the `redirect_uri` with additional
                parameters. The `code` parameter is the user authentication code
                which must be exchanged to a JWT.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 010-015
                      description: 'Social network authentication failed: steam.'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Silent authentication
      tags:
        - cross-platform
      x-client: true
      x-tags:
        - cross-platform
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/social/{oauth2_cross_social_provider_name}/cross_auth?client_id=SOME_INTEGER_VALUE&response_type=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&state=SOME_STRING_VALUE&session_ticket=SOME_STRING_VALUE&scope=SOME_STRING_VALUE&audience=SOME_STRING_VALUE&app_id=SOME_STRING_VALUE&code=SOME_STRING_VALUE&is_redirect=true&no_user_creation=false&deployment_id=SOME_STRING_VALUE'
  /oauth2/social/{provider_name}/login_redirect:
    get:
      description: >
        Redirects the user to the page for authentication via the specified
        social network.
      operationId: oauth-20-auth-via-social-network
      parameters:
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.


            When the `email` is requested and the social network did not respond
            with the `email` value:

            * the user will be asked to input an email in the corresponding form
            if you integrated [Login
            Widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget),

            * the user must be asked to input an email in the corresponding form
            of your own interface if you integrated [Login
            API](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_api).
            Please send the URL of this form to your Customer Success Manager.


            After the email is inputted, the user receives an email confirmation
            [message](https://developers.xsolla.com/doc/login/how-to/email-customization/).
            To disable email confirmation, please contact your Customer Success
            Manager.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: provider_name
          required: true
          schema:
            type: string
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of social networks will be sorted from most to least used,
            according to the variable value.
          in: query
          name: locale
          schema:
            type: string
            minLength: 2
        - description: |
            Arrange xsolla wallet form behaivior values:
            * `true` show only passwordless by phone,
            * `false` all auth methods.
          in: query
          name: phone_only
          x-isnullable: true
          schema:
            type: boolean
            default: false
      responses:
        '302':
          description: Redirection
          headers:
            Location:
              description: URL to authenticate the user via the social network.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
            InvalidOAuth20State:
              examples:
                response:
                  value:
                    error:
                      code: 010-022
                      description: >-
                        Parameter state missing or too weak as it has less than
                        8 characters.
            InvalidRequest:
              examples:
                response:
                  value:
                    error:
                      code: 010-017
                      description: >-
                        Request is missing required parameter, includes invalid
                        parameter value, includes parameter more than once, or
                        is malformed.
            InvalidScope:
              examples:
                response:
                  value:
                    error:
                      code: 010-020
                      description: Requested scope is invalid, unknown, or malformed.
        '401':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            GettingOAuth20TokenError:
              examples:
                response:
                  value:
                    error:
                      code: 003-025
                      description: Error occurred while getting OAuth 2.0 access token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Auth via social network
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/social/{provider_name}/login_redirect?redirect_uri=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&response_type=SOME_STRING_VALUE&locale=SOME_STRING_VALUE&phone_only=false'
  /oauth2/social/{provider_name}/login_url:
    get:
      description: >
        Gets the link for authentication via the social network. The link is
        valid for 10 minutes.


        You can get the link by this call and add it to your button for
        authentication via a social network.
      operationId: oauth-20-get-link-for-social-auth
      parameters:
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.


            When the `email` is requested and the social network did not respond
            with the `email` value:

            * the user will be asked to input an email in the corresponding form
            if you integrated [Login
            Widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget),

            * the user must be asked to input an email in the corresponding form
            of your own interface if you integrated [Login
            API](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_api).
            Please send the URL of this form to your Customer Success Manager.


            After the email is inputted, the user receives an email confirmation
            [message](https://developers.xsolla.com/doc/login/how-to/email-customization/).
            To disable email confirmation, please contact your Customer Success
            Manager.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: provider_name
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  url: http://someurl.com
                properties:
                  url:
                    description: URL for authentication via the social network.
                    type: string
                required:
                  - url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
            InvalidOAuth20State:
              examples:
                response:
                  value:
                    error:
                      code: 010-022
                      description: >-
                        Parameter state missing or too weak as it has less than
                        8 characters.
            InvalidRequest:
              examples:
                response:
                  value:
                    error:
                      code: 010-017
                      description: >-
                        Request is missing required parameter, includes invalid
                        parameter value, includes parameter more than once, or
                        is malformed.
            InvalidScope:
              examples:
                response:
                  value:
                    error:
                      code: 010-020
                      description: Requested scope is invalid, unknown, or malformed.
        '401':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            GettingOAuth20TokenError:
              examples:
                response:
                  value:
                    error:
                      code: 003-025
                      description: Error occurred while getting OAuth 2.0 access token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Get link for social auth
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/social/{provider_name}/login_url?redirect_uri=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&response_type=SOME_STRING_VALUE'
  /oauth2/social/{provider_name}/login_with_token:
    post:
      description: >-
        Authenticates the user with the access token using social network
        credentials.
      operationId: oauth-20-auth-via-access-token-of-social-network
      parameters:
        - description: >
            Name of the social network connected to the Login in Publisher
            Account.


            Can have the following values:
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`google`](https://developers.google.com/identity/protocols/oauth2),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`qq_mobile`](https://wiki.connect.qq.com/oauth2-0%E7%AE%80%E4%BB%8B).
          in: path
          name: provider_name
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/oauth-20-auth-via-access-token-of-social-networkBody
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Auth via access token of social network
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/social/{provider_name}/login_with_token?client_id=SOME_INTEGER_VALUE&response_type=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&state=SOME_STRING_VALUE&scope=SOME_STRING_VALUE' \
              --data '{"access_token":"string","access_token_secret":"string","openid":"string"}'
  /oauth2/sso:
    get:
      description: >-
        Checks if a user has already logged in via a service. If they have, you
        will receive an OAuth 2.0 authorization code without user participation.
        Used in [Single
        Sign-on](https://developers.xsolla.com/doc/login/features/single-sign-on).
      operationId: check-user-authentication
      parameters:
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with `code` and
                      `state` parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
            InvalidParameter:
              examples:
                response:
                  value:
                    error:
                      code: 0
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserIsUnauthorized:
              examples:
                response:
                  value:
                    error:
                      code: 003-040
                      description: Unauthorized user.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth 2.0] Check user authentication
      tags:
        - sso
      x-client: true
      x-tags:
        - sso
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/oauth2/sso?client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&state=SOME_STRING_VALUE&response_type=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE'
  /oauth2/token:
    post:
      description: >
        Use this call:

        * To get a <a
        href="/api/login/overview/#section/Authentication/Getting-a-user-token">user
        JWT</a>.

        * To refresh the JWT when it expires. Works only if `scope=offline` is
        passed in the registration or authentication call.

        * To get a [server
        JWT](/api/login/overview/#section/Authentication/Getting-a-server-token).
        The user participation isn’t needed.

        * To exchange user JWT for a new one with different scope.


        Usage of this call depends on the value of the `grant_type` parameter.
      operationId: generate-jwt
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                refresh_token:
                  description: >-
                    Value of this parameter received in the response to the last
                    request of this call with `authorization_code` or
                    `refresh_token` values in the `grant_type` parameter.
                    **Required** if `grant_type=refresh_token`.
                  type: string
                grant_type:
                  description: >
                    The type of getting the JWT. Can be:

                    * `authorization_code` to exchange the code received in the
                    authentication call to the JWT. The value of the `code`
                    parameter must be specified.

                    * `refresh_token` to get the refreshed JWT when the previous
                    value is expired. The value of the `refresh_token` parameter
                    must be specified.

                    * `client_credentials` to get the server JWT. The values of
                    the `client_id` and `client_secret` parameters must be
                    specified.

                    * `urn:ietf:params:oauth:grant-type:token_exchange` to
                    exchange existing user JWT with different scope.
                  type: string
                client_secret:
                  description: >
                    Your secret key. The value for this parameter depends on the
                    value of the `grant_type` parameter:

                    * If it’s `authorization_code`, [create an OAuth 2.0 client
                    and use its secret
                    key](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
                    **Required** if you created an OAuth 2.0 client with
                    confidential authentication type.

                    * If it’s `client_credentials`, contact your Customer
                    Success Manager to create a server OAuth 2.0 client and get
                    its secret key. **Required** for this client type.


                    Note that values for `client_secret` and `client_id`
                    parameters should be used from the same client.
                  type: string
                client_id:
                  description: >
                    Your application ID. The value for this parameter depends on
                    the value of the `grant_type` parameter:

                    * If it’s `authorization_code`, [create an OAuth 2.0 client
                    and use its client
                    ID](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).

                    * If it’s `client_credentials`, contact your Customer
                    Success Manager to create a server OAuth 2.0 client and get
                    its client ID.


                    Note that values for `client_secret` and `client_id`
                    parameters should be used from the same client.
                  type: string
                redirect_uri:
                  type: string
                code:
                  description: >-
                    Authentication code that is exchanged to a JWT. **Required**
                    if `grant_type=authorization_code`.
                  type: string
                code_verifier:
                  description: >-
                    The code verifier for the PKCE request, that the app
                    originally generated before the authorization request.
                  type: string
                audience:
                  description: List of domains for which token can be applied
                  type: string
                scope:
                  description: >
                    A list of space-delimited, case-sensitive strings, as
                    defined in Section 3.3 of [RFC6749], that allow the client
                    to specify the desired scope of the requested security token
                    in the context of the service or resource where the token
                    will be used. The values and associated semantics of scope
                    are service specific and expected to be described in the
                    relevant service documentation
                  type: string
                subject_token:
                  description: >-
                    A security token that represents the identity of the party
                    on behalf of whom the request is being made. Typically, the
                    subject of this token will be the subject of the security
                    token issued in response to the request.
                  type: string
                subject_token_type:
                  description: >-
                    A security token that represents the identity of the party
                    on behalf of whom the request is being made. Typically, the
                    subject of this token will be the subject of the security
                    token issued in response to the request.
                  type: string
                  enum:
                    - access_token
                actor_token:
                  description: >-
                    A security token that represents the identity of the acting
                    party. Typically, this will be the party that is authorized
                    to use the requested security token and act on behalf of the
                    subject.
                  type: string
                actor_token_type:
                  description: >-
                    An identifier, as described in Section 3, that indicates the
                    type of the security token in the actor_token parameter.
                    This is REQUIRED when the actor_token parameter is present
                    in the request but MUST NOT be included otherwise.
                  type: string
                  enum:
                    - server_token
              required:
                - grant_type
                - client_id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  access_token:
                    description: Xsolla Login JWT.
                    type: string
                  expires_in:
                    description: >-
                      JWT expiration period in seconds. Default value is 3600
                      seconds.
                    type: integer
                  refresh_token:
                    description: >-
                      Value to refresh the JWT. Used for getting new
                      `access_token`.
                    type: string
                  scope:
                    description: >-
                      Scope is a mechanism in OAuth 2.0 to limit an
                      application’s access to a user’s account.
                    type: string
                  token_type:
                    description: JWT type with `bearer` value.
                    type: string
                required:
                  - access_token
                  - token_type
                type: object
              examples:
                response:
                  value:
                    access_token: 2YotnFZFEjr1zCsicMWpAA
                    expires_in: 3600
                    refresh_token: tGzv3JOkF0XG5Qx2TlKWIA
                    scope: email user_profile
                    token_type: bearer
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '418':
          description: I’m a teapot
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 004-001
                      description: Something went wrong.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Generate JWT
      tags:
        - token-management
      x-client: true
      x-tags:
        - token-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/oauth2/token \
              --header 'accept: application/x-www-form-urlencoded'
  /oauth2/token/revoke:
    post:
      description: |
        Revokes an obtained access token
      operationId: revoke-jwt
      parameters:
        - in: query
          name: revoke_all
          schema:
            type: boolean
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                token:
                  type: string
                token_type_hint:
                  type: string
                  enum:
                    - access_token
                    - refresh_token
              required:
                - token
                - token_type_hint
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '418':
          description: I’m a teapot
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 004-001
                      description: Something went wrong.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Revoke Token
      tags:
        - token-management
      x-client: true
      x-tags:
        - token-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/token/revoke?revoke_all=SOME_BOOLEAN_VALUE' \
              --header 'accept: application/x-www-form-urlencoded'
  /oauth2/user:
    post:
      description: >
        Creates a new user.


        * If you store user data at Xsolla or in custom storage, the user will
        receive an account confirmation
        [email](https://developers.xsolla.com/doc/login/how-to/email-customization/).

        * If you store user data at PlayFab, you can set up sending the account
        confirmation email to the user. Use the [PlayFab
        instruction](https://developers.xsolla.com/doc/login/references/playfab-storage/#recipes_users_storage_playfab_how_it_works_registration_confirmation)
        for this.

        * If you store user data at Firebase, the user will receive an account
        confirmation message from Firebase side.


        See the [Comparison of user data
        storages](https://developers.xsolla.com/doc/login/references/users-storages-comparison/)
        page for more information about user data storages.
      operationId: oauth-20-register-new-user
      parameters:
        - description: >-
            Grant type used in your project that has the enabled OAuth 2.0
            protocol. Must be `code` to get the user authentication code in the
            response. The received code must be exchanged to a JWT via the
            [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to finish user authentication.
          in: query
          name: response_type
          required: true
          schema:
            type: string
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          in: query
          name: scope
          schema:
            type: string
        - description: >
            Identification parameter of the application the token was issued
            for. Parameter value will be passed in the `aud` JWT field.
          in: query
          name: audience
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          required: true
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/oauth-20-register-new-userBody'
      responses:
        '200':
          description: OK (Account confirmation is disabled)
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL generated from the `redirect_uri` with additional
                      parameters. The `code` parameter is the user
                      authentication code which must be exchanged to a JWT.
                    type: string
                    nullable: false
                type: object
        '204':
          description: No Content (Account confirmation is enabled)
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 000-000
                      description: description
            InvalidClient:
              examples:
                response:
                  value:
                    error:
                      code: 010-019
                      description: >-
                        Client authentication failed (e.g., unknown client, no
                        client authentication included, or unsupported
                        authentication method).
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 000-000
                      description: description
            UserAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-003
                      description: User with specified username already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Register new user
      tags:
        - login-and-password
      x-client: true
      x-tags:
        - login-and-password
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/user?response_type=SOME_STRING_VALUE&client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE&audience=SOME_STRING_VALUE&state=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&payload=SOME_STRING_VALUE' \
              --data '{"email":"john-email@email.com","fields":{"additional_agreement":true,"nickname":"Johny","promo_email_agreement":true},"password":"password123","username":"John"}'
  /oauth2/user/resend_confirmation_link:
    post:
      description: >-
        Resends an account confirmation email to a user. To complete account
        confirmation, the user should follow the link in the email.
      operationId: oauth-20-resend-account-confirmation-email
      parameters:
        - description: >-
            Your application ID. Get it after [creating an OAuth 2.0
            client](https://developers.xsolla.com/doc/login/features/connecting-oauth2/).
          in: query
          name: client_id
          required: true
          schema:
            type: integer
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: >-
            Value used for additional user verification. Often used to mitigate
            [CSRF
            Attacks](https://en.wikipedia.org/wiki/Cross-site_request_forgery).
            The value will be returned in the response. Must be longer than 8
            symbols.
          in: query
          name: state
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/oauth-20-resend-account-confirmation-emailBody
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserAlreadyHaveConfirmationLink:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
            WrongConfirmationCode:
              examples:
                response:
                  value:
                    error:
                      code: 010-010
                      description: Invalid confirmation code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [OAuth2.0] Resend account confirmation email
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/oauth2/user/resend_confirmation_link?client_id=SOME_INTEGER_VALUE&redirect_uri=SOME_STRING_VALUE&state=SOME_STRING_VALUE' \
              --data '{"username":"john-email@email.com"}'
  /otc/code:
    get:
      description: >
        Waits until the user follows the link provided via email or SMS and
        returns the confirmation code for authentication. If you sent this call
        and after 20 seconds you didn't get the code, there was an error. In
        this case, resend the call immediately. The code lifetime is 3 minutes.


        The workflow of using this call:

        1. The application opens an authentication form so the user can enter
        their email address.

        2. The user enters their email address.

        3. The application sends the **Start auth by email or phone number**
        (JWT or OAuth 2.0) request to the Xsolla Login server:
          a. If the parameter `send_link` is `true`, after this request, you should send this same request to make email or SMS contain the confirmation code and link.
          b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.
        4. The Xsolla Login server sends an email or SMS to the user and returns
        the ID of the confirmation code.

        5. The application shows a field so the user can fill in the
        confirmation code.

        6. The user enters the received confirmation code or follows the link.

        7. The application sends the **Complete auth by email or phone number**
        (JWT or OAuth 2.0) request with the received ID to the Xsolla Login
        server.

        8. The user is considered as authorized.
      operationId: get-confirmation-code
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login identifier of the user. Can be either an email address or
            phone number.
          in: query
          name: login
          required: true
          schema:
            type: string
        - description: >-
            ID of the confirmation code. You can find its value in the response
            to a previous request.
          in: query
          name: operation_id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  code:
                    description: Confirmation code.
                    type: string
                    x-isnullable: false
                required:
                  - code
                type: object
        '408':
          description: Deadline exceeded
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            DeadlineExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-050
                      description: Deadline exceeded.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Get confirmation code
      tags:
        - passwordless
      x-client: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/otc/code?projectId=SOME_STRING_VALUE&login=SOME_STRING_VALUE&operation_id=SOME_STRING_VALUE'
  /password/reset/confirm:
    post:
      description: >
        Confirms the user password reset.


        You can reset user password if you use Login widget forms or your own
        password reset forms. If you use your own forms, contact your Customer
        Success Manager and specify the URL of your password reset form.


        The workflow of using this call with your own forms:

        1. The application opens a form so the user can enter their email or
        username.

        2. The user enters their email or username.

        3. The application sends the [Reset
        password](https://developers.xsolla.com/api/login/operation/reset-password)
        request to the Xsolla Login server.

        4. The Xsolla Login server sends a confirmation email to the user.

        5. The user follows the link in the email and proceeds to the form for
        setting a new password.

        6. The user enters a new password and clicks **Set new password**.

        7. The application or Login widget sends this request to the Xsolla
        Login server.
      operationId: confirm-password-reset
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: User details for changing the password.
              example:
                new_password: password1230
                reset_code: ABJ8UKuTvNILBAEdfiKIpgHtiz6teYVPXMBFdpaw5mI
                user_id: 1a9c23f5-d1dc-4d8e-afbe-6a6bac6464eb
              properties:
                new_password:
                  description: New user password.
                  maxLength: 100
                  minLength: 6
                  type: string
                  x-isnullable: false
                reset_code:
                  description: >-
                    Code to verify the user who changes the password. Is
                    generated by the Xsolla Login server and passed to the URL
                    of the password reset form.
                  type: string
                  x-isnullable: false
                user_id:
                  description: >-
                    User ID. Is passed to the URL of the password reset form.
                    **Required**.
                  format: uuid
                  type: string
                  x-isnullable: true
                verify_code:
                  description: >-
                    Additional verify code. Uses with Custom Storage for extra
                    validation of password reset request on partner side
                  type: string
                  x-isnullable: true
              required:
                - new_password
                - reset_code
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      summary: Confirm password reset
      tags:
        - password-reset
      x-client: true
      x-tags:
        - password-reset
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/password/reset/confirm?projectId=SOME_STRING_VALUE' \
              --data '{"new_password":"password1230","reset_code":"ABJ8UKuTvNILBAEdfiKIpgHtiz6teYVPXMBFdpaw5mI","user_id":"1a9c23f5-d1dc-4d8e-afbe-6a6bac6464eb"}'
  /password/reset/request:
    post:
      description: >
        Resets the user password with user confirmation. If the user data is
        kept in the Xsolla data storage or on your side, users receive a
        [password change confirmation
        email](https://developers.xsolla.com/doc/login/how-to/email-customization).
        If the user data is kept in the PlayFab storage, password reset is done
        on PlayFab’s side. To get more information, see the [Comparison of user
        data
        storages](https://developers.xsolla.com/doc/login/references/users-storages-comparison/)
        page.


        The workflow of using this call:

        1. The application opens a form so the user can enter their email or
        username.

        2. The user enters their email or username.

        3. The application sends this request to the Xsolla Login server.

        4. The Xsolla Login server sends a confirmation email to the user.

        5. The user follows the link in the email and proceeds to the form for
        setting a new password.

        6. The user enters a new password and clicks **Set new password**.

        7. The application sends the [Confirm password
        reset](https://developers.xsolla.com/api/login/operation/confirm-password-reset)
        request to the Xsolla Login server.


        If you use your own password reset form, use the [Confirm password
        reset](https://developers.xsolla.com/api/login/operation/confirm-password-reset)
        call to reset the user password.
      operationId: reset-password
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of social networks will be sorted from most to least used,
            according to the variable value.
          in: query
          name: locale
          schema:
            type: string
            minLength: 2
      requestBody:
        content:
          application/json:
            schema:
              example:
                username: John
              properties:
                username:
                  description: Email to send the password change verification message to.
                  type: string
                  x-isnullable: false
              required:
                - username
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            PasswordResettingTurnedOff:
              examples:
                response:
                  value:
                    description: Password reset disabled for this Login project.
                    error: 030-024
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Reset password
      tags:
        - password-reset
      x-client: true
      x-tags:
        - password-reset
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/password/reset/request?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&locale=SOME_STRING_VALUE' \
              --data '{"username":"John"}'
  /project/{project_id}/attribute_schema:
    delete:
      description: >-
        Deletes [JSON Schema](https://json-schema.org/) of user attributes from
        the Login project.<div class="notice"><strong>Notice</strong><br>[Rate
        limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: delete-attributes-schema
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Delete schema
      tags:
        - attributes-schema
      x-server: true
      x-tags:
        - attributes-schema
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    get:
      description: >-
        Gets [JSON Schema](https://json-schema.org/) of user attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-attributes-schema
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 2005-0001
                    error_description: Schema not found
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get schema
      tags:
        - attributes-schema
      x-server: true
      x-tags:
        - attributes-schema
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    put:
      description: >-
        Updates [JSON Schema](https://json-schema.org/) of user attributes.<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: put-attributes-schema
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
        description: JSON Schema for user attribute validation
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 2004-0001
                    error_description: >-
                      JSON Schema is invalid or defined properties has depth
                      level greater than 1
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 2005-0001
                    error_description: Schema not found
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Update schema
      tags:
        - attributes-schema
      x-server: true
      x-tags:
        - attributes-schema
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{}'
  /projects/{project_id}/age_rating:
    delete:
      description: Deletes age restriction for a selected country in a project.
      operationId: delete-age-restriction
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Country code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
          in: query
          name: code
          required: true
          x-nullable: false
          schema:
            type: string
            pattern: ^[a-zA-Z]{2}$
      responses:
        '200':
          description: OK
        '403':
          description: Access denied
        '422':
          description: Unprocessable entity
        '500':
          description: Internal server error
      security:
        - Server: []
      summary: Delete age restriction for country
      tags:
        - product-configuration-age-restrictions
      x-client: true
      x-tags:
        - product-configuration-age-restrictions
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url 'https://login.xsolla.com/api/projects/{project_id}/age_rating?code=SOME_STRING_VALUE' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    get:
      description: Returns a list of countries with age restrictions in a project.
      operationId: list-age-restrictions
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    age:
                      type: integer
                    country_code:
                      type: string
                    rating_name:
                      type: string
                  required:
                    - country_code
                    - rating_name
                    - age
                  type: object
                type: array
        '401':
          description: Unauthorized
        '403':
          description: Access denied
        '422':
          description: Unprocessable entity
        '500':
          description: Internal server error
      security:
        - Server: []
      summary: List age restrictions for project
      tags:
        - product-configuration-age-restrictions
      x-server: true
      x-tags:
        - product-configuration-age-restrictions
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/age_rating \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: >-
        Creates or updates existing age restriction for a selected country in a
        project.
      operationId: create-age-restriction
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: Request body for create restriction
              properties:
                age:
                  maximum: 99
                  minimum: 1
                  type: integer
                country_code:
                  description: >-
                    Country code in the [ISO 3166-1
                    alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                    format. Use `XX` to update default restrictions for all
                    countries.
                  pattern: ^[a-zA-Z]{2}$
                  type: string
                rating_name:
                  maxLength: 255
                  type: string
              required:
                - age
                - country_code
              type: object
        required: true
        x-nullable: false
      responses:
        '200':
          description: OK
        '403':
          description: Access denied
        '422':
          description: Unprocessable entity
        '500':
          description: Internal server error
      security:
        - Server: []
      summary: Create age restriction for country
      tags:
        - product-configuration-age-restrictions
      x-server: true
      x-tags:
        - product-configuration-age-restrictions
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/age_rating \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"age":1,"country_code":"string","rating_name":"string"}'
  /projects/{project_id}/age_rating/batch:
    post:
      description: >
        Updates, deletes, or creates age restrictions for all countries in a
        project. You may set default restrictions for all countries and set
        country-specific restrictions, if any. <div
        class="notice"><strong>Notice</strong><br>Each new call overrides
        previous settings.</div>
      operationId: batch-age-restrictions
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              items:
                description: Request body for create restriction
                properties:
                  age:
                    maximum: 99
                    minimum: 1
                    type: integer
                  country_code:
                    description: >-
                      Country code in the [ISO 3166-1
                      alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                      format. Use `XX` to update default restrictions for all
                      countries.
                    pattern: ^[a-zA-Z]{2}$
                    type: string
                  rating_name:
                    maxLength: 255
                    type: string
                required:
                  - age
                  - country_code
                type: object
              maxItems: 100
              type: array
        required: true
        x-nullable: false
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
        '500':
          description: Internal server error
      security:
        - Server: []
      summary: Manage age restrictions for countries
      tags:
        - product-configuration-age-restrictions
      x-server: true
      x-tags:
        - product-configuration-age-restrictions
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/age_rating/batch \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '[{"age":1,"country_code":"string","rating_name":"string"}]'
  /projects/{project_id}/events/{event_type}/webhooks:
    get:
      description: Gets the list of webhooks information for the specified type of events.
      operationId: get-webhooks-for-event
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >
            Event type. Can have the following values:

            * `registration` is used for user registration by login and password
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-register-new-user)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-register-new-user)),
            social authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-social-network)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)),
            silent authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-silent-authentication)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-silent-authentication)),
            authentication by a phone number
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-phone-number)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-phone-number)),
            and [registration of a new user from the
            server](https://developers.xsolla.com/api/login/operation/register-new-user-from-server)
            as well.

            * `authorization` is used for user authorization by login and
            password (JWT and OAuth 2.0), social authentication (JWT and OAuth
            2.0), silent authentication (JWT and OAuth 2.0), and authentication
            by a phone number (JWT and OAuth 2.0).

            * `email_confirmation` is used for user email address confirmation.

            * `link_social_account` is used for linking user’s social account.

            * `new_verified_user` is used for user registration when they pass
            all the necessary verification steps. These verification steps can
            be email address confirmation, age confirmation via the okname
            service, [additional data
            collection](https://developers.xsolla.com/doc/login/features/collecting-emails/),
            etc. You should configure these steps by yourself.
          in: path
          name: event_type
          required: true
          schema:
            type: string
            enum:
              - registration
              - authorization
              - email_confirmation
              - link_social_account
              - new_verified_user
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                items:
                  description: Webhook information.
                  example:
                    id: 2342423
                    url: https://example.com/hook/second
                  properties:
                    id:
                      description: Webhook ID.
                      type: integer
                      x-isnullable: false
                    url:
                      description: >-
                        Valid URL to which the Xsolla Login server sends the
                        webhook.
                      format: uri
                      maxLength: 500
                      type: string
                      x-isnullable: false
                  required:
                    - url
                    - id
                  type: object
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Get webhooks for event
      tags:
        - webhooks
      x-server: true
      x-tags:
        - webhooks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: >
        Creates a webhook for the specified event. The webhook has the following
        format:

        <pre>

        {
            "event_type": "Event type",
            "event_time": "Date and time when the event occurred in the <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> format",
            "project_id": "Login project ID",
            "data": {
                 // Some other data, can be different for different events and include nested objects
             }
        }

        </pre>
      operationId: add-webhook-for-event
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >
            Event type. Can have the following values:

            * `registration` is used for user registration by login and password
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-register-new-user)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-register-new-user)),
            social authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-social-network)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)),
            silent authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-silent-authentication)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-silent-authentication)),
            authentication by a phone number
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-phone-number)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-phone-number)),
            and [registration of a new user from the
            server](https://developers.xsolla.com/api/login/operation/register-new-user-from-server)
            as well.

            * `authorization` is used for user authorization by login and
            password (JWT and OAuth 2.0), social authentication (JWT and OAuth
            2.0), silent authentication (JWT and OAuth 2.0), and authentication
            by a phone number (JWT and OAuth 2.0).

            * `email_confirmation` is used for user email address confirmation.

            * `link_social_account` is used for linking user’s social account.

            * `new_verified_user` is used for user registration when they pass
            all the necessary verification steps. These verification steps can
            be email address confirmation, age confirmation via the okname
            service, [additional data
            collection](https://developers.xsolla.com/doc/login/features/collecting-emails/),
            etc. You should configure these steps by yourself.
          in: path
          name: event_type
          required: true
          schema:
            type: string
            enum:
              - registration
              - authorization
              - email_confirmation
              - link_social_account
              - new_verified_user
      requestBody:
        content:
          application/json:
            schema:
              description: Webhook information.
              example:
                url: https://example.com/hook/second
              properties:
                url:
                  description: >-
                    Valid URL to which the Xsolla Login server sends the
                    webhook.
                  format: uri
                  maxLength: 500
                  type: string
                  x-isnullable: false
              required:
                - url
              type: object
        required: true
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                description: Webhook information.
                example:
                  id: 2342423
                  url: https://example.com/hook/second
                properties:
                  id:
                    description: Webhook ID.
                    type: integer
                    x-isnullable: false
                  url:
                    description: >-
                      Valid URL to which the Xsolla Login server sends the
                      webhook.
                    format: uri
                    maxLength: 500
                    type: string
                    x-isnullable: false
                required:
                  - url
                  - id
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MaxNumberOfWebhooks:
              examples:
                response:
                  value:
                    error:
                      code: 004-002
                      description: >-
                        Maximum number of webhooks (3) already configured for
                        the event.
            WebhookURLIsAlreadyUsed:
              examples:
                response:
                  value:
                    error:
                      code: 004-003
                      description: >-
                        Webhook for specified URL already configured for
                        specified type of event.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Add webhook for event
      tags:
        - webhooks
      x-server: true
      x-tags:
        - webhooks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"url":"https://example.com/hook/second"}'
  /projects/{project_id}/events/{event_type}/webhooks/{webhook_id}:
    delete:
      description: Deletes a webhook with the specified ID.
      operationId: delete-webhook-for-event
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >
            Event type. Can have the following values:

            * `registration` is used for user registration by login and password
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-register-new-user)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-register-new-user)),
            social authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-social-network)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)),
            silent authentication
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-silent-authentication)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-silent-authentication)),
            authentication by a phone number
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-phone-number)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-phone-number)),
            and [registration of a new user from the
            server](https://developers.xsolla.com/api/login/operation/register-new-user-from-server)
            as well.

            * `authorization` is used for user authorization by login and
            password (JWT and OAuth 2.0), social authentication (JWT and OAuth
            2.0), silent authentication (JWT and OAuth 2.0), and authentication
            by a phone number (JWT and OAuth 2.0).

            * `email_confirmation` is used for user email address confirmation.

            * `link_social_account` is used for linking user’s social account.

            * `new_verified_user` is used for user registration when they pass
            all the necessary verification steps. These verification steps can
            be email address confirmation, age confirmation via the okname
            service, [additional data
            collection](https://developers.xsolla.com/doc/login/features/collecting-emails/),
            etc. You should configure these steps by yourself.
          in: path
          name: event_type
          required: true
          schema:
            type: string
            enum:
              - registration
              - authorization
              - email_confirmation
              - link_social_account
              - new_verified_user
        - description: ID of the webhook that you want to delete.
          in: path
          name: webhook_id
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Delete webhook for event
      tags:
        - webhooks
      x-server: true
      x-tags:
        - webhooks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks/{webhook_id} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/export_users:
    post:
      description: >
        Exports user data (personal information and attributes) from the Login
        project to an archive of CSV files. You will receive the archive of user
        data to the specified email address.


        The call can be requested 1 time per hour.
      operationId: export-users
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                email:
                  description: Email address to which the link with the result is sent.
                  format: email
                  type: string
                  x-isnullable: false
              required:
                - email
              type: object
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
      security:
        - Server: []
      summary: Export user data
      tags:
        - bulk-user-management
      x-server: true
      x-tags:
        - bulk-user-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/export_users \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"email":"user@example.com"}'
  /projects/{project_id}/jwks.json:
    get:
      description: >
        Gets a JSON object that represents a set of JWKs. The JSON object MUST
        have a keys member, which is an array of JWKs.
      operationId: json-web-key-set
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                example:
                  keys:
                    - alg: RS256
                      e: '10001'
                      kid: NjVBRjY5MDlCMUIwNzU4RTA2QzZFMDQ4QzQ2MDAyQjVDNjk1RTM2Qg
                      kty: RSA
                      'n': >-
                        yeNlzlub94YgerT030codqEztjfU_S6X4DbDA_iVKkjAWtYfPHDzz_sPCT1Axz6isZdf3lHpq_gYX4Sz-cbe4rjmigxUxr-FgKHQy3HeCdK6hNq9ASQvMK9LBOpXDNn7mei6RZWom4wo3CMvvsY1w8tjtfLb-yQwJPltHxShZq5-ihC9irpLI9xEBTgG12q5lGIFPhTl_7inA1PFK97LuSLnTJzW0bj096v_TMDg7pOWm_zHtF53qbVsI0e3v5nmdKXdFf9BjIARRfVrbxVxiZHjU6zL6jY5QJdh1QCmENoejj_ytspMmGW7yMRxzUqgxcAqOBpVm0b-_mW3HoBdjQ
                      use: sig
                properties:
                  keys:
                    description: >-
                      The value of the 'keys' parameter is an array of JWK
                      values.  By default, the order of the JWK values within
                      the array does not imply an order of preference among
                      them, although applications of JWK Sets can choose to
                      assign a meaning to the order for their purposes, if
                      desired.
                    items:
                      properties:
                        alg:
                          description: >-
                            The specific cryptographic algorithm used with the
                            key.
                          example: RS256
                          type: string
                          x-isnullable: false
                        e:
                          description: >-
                            The exponent for the RSA public key. The value is
                            encoded according to the Base64 standard.
                          example: AQAB
                          type: string
                          x-isnullable: false
                        kid:
                          description: The unique identifier for the key.
                          example: e600c72b-125a-4b30-86a5-9697af62f2a1
                          type: string
                          x-isnullable: false
                        kty:
                          description: >-
                            The family of cryptographic algorithms used with the
                            key.
                          example: RSA
                          type: string
                          x-isnullable: false
                        'n':
                          description: >-
                            The modulus for the RSA public key. The value is
                            encoded according to the Base64 standard.
                          example: >-
                            eWVObHpsdWI5NFlnZXJUMDMwY29kcUV6dGpmVV9TNlg0RGJEQV9pVktrakFXdFlmUEhEenpfc1BDVDFBeHo2aXNaZGYzbEhwcV9nWVg0U3o=
                          type: string
                          x-isnullable: false
                        use:
                          description: >-
                            How the key was meant to be used; `sig` represents
                            the signature, `enc` represents the encryption.
                          example: sig
                          type: string
                          x-isnullable: false
                        x5c:
                          description: >-
                            The x.509 certificate chain. The first entry in the
                            array is the certificate to use for token
                            verification; the other certificates can be used to
                            verify this first certificate.
                          items:
                            type: string
                            x-isnullable: false
                          type: array
                          x-isnullable: false
                          x-omitempty: true
                        x5t:
                          description: The thumbprint of the x.509 cert (SHA-1 thumbprint).
                          example: >-
                            NjU3NDI5ZTZhODU0YjQzMGFiYzkwNGNkZDkwNmZkMzZmOWEzNWVmMQ
                          type: string
                          x-isnullable: false
                      required:
                        - use
                        - kty
                        - kid
                        - alg
                      type: object
                    type: array
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Get JSON Web Key Set
      tags:
        - product-configuration-rsa
      x-client: true
      x-tags:
        - product-configuration-rsa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/jwks.json
  /projects/{project_id}/keys:
    delete:
      description: >
        Deletes all project RSA keys. After that all tokens are signed by HS256
        algorithm.
      operationId: delete-projects-keys
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Delete all project keys
      tags:
        - product-configuration-rsa
      x-server: true
      x-tags:
        - product-configuration-rsa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/keys \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    get:
      description: >
        Gets a list of the public RSA project keys.


        To validate user JWT, choose the library and pass an appropriate public
        key from the response to this call to the validation function.
      operationId: get-projects-keys
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                example:
                  - alg: RS256
                    e: '10001'
                    kid: NjVBRjY5MDlCMUIwNzU4RTA2QzZFMDQ4QzQ2MDAyQjVDNjk1RTM2Qg
                    kty: RSA
                    'n': >-
                      yeNlzlub94YgerT030codqEztjfU_S6X4DbDA_iVKkjAWtYfPHDzz_sPCT1Axz6isZdf3lHpq_gYX4Sz-cbe4rjmigxUxr-FgKHQy3HeCdK6hNq9ASQvMK9LBOpXDNn7mei6RZWom4wo3CMvvsY1w8tjtfLb-yQwJPltHxShZq5-ihC9irpLI9xEBTgG12q5lGIFPhTl_7inA1PFK97LuSLnTJzW0bj096v_TMDg7pOWm_zHtF53qbVsI0e3v5nmdKXdFf9BjIARRfVrbxVxiZHjU6zL6jY5QJdh1QCmENoejj_ytspMmGW7yMRxzUqgxcAqOBpVm0b-_mW3HoBdjQ
                    use: sig
                items:
                  description: >-
                    Cryptographic key. The parameters of the object represent
                    key properties and its value.
                  properties:
                    alg:
                      description: Specific cryptographic algorithm used with the key.
                      type: string
                      x-isnullable: false
                    e:
                      description: Exponent for the RSA public key.
                      type: string
                      x-isnullable: false
                    kid:
                      description: Unique key identifier.
                      type: string
                      x-isnullable: false
                    kty:
                      description: Family of cryptographic algorithms used with the key.
                      type: string
                      x-isnullable: false
                    'n':
                      description: Modulus for the RSA public key.
                      type: string
                      x-isnullable: false
                    use:
                      description: >-
                        How the key was meant to be used. The `sig` value
                        represents the signature.
                      type: string
                      x-isnullable: false
                  required:
                    - alg
                    - kty
                    - use
                    - 'n'
                    - e
                    - kid
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Get project keys
      tags:
        - product-configuration-rsa
      x-client: true
      x-tags:
        - product-configuration-rsa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/keys
    post:
      description: >-
        Generates new RSA key and returns public key.

        To validate user JWT, choose the library and pass an appropriate public
        key from the response to this call to the validation function.
      operationId: post-projects-key
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                description: >-
                  Cryptographic key. The parameters of the object represent key
                  properties and its value.
                properties:
                  alg:
                    description: Specific cryptographic algorithm used with the key.
                    type: string
                    x-isnullable: false
                  e:
                    description: Exponent for the RSA public key.
                    type: string
                    x-isnullable: false
                  kid:
                    description: Unique key identifier.
                    type: string
                    x-isnullable: false
                  kty:
                    description: Family of cryptographic algorithms used with the key.
                    type: string
                    x-isnullable: false
                  'n':
                    description: Modulus for the RSA public key.
                    type: string
                    x-isnullable: false
                  use:
                    description: >-
                      How the key was meant to be used. The `sig` value
                      represents the signature.
                    type: string
                    x-isnullable: false
                required:
                  - alg
                  - kty
                  - use
                  - 'n'
                  - e
                  - kid
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Generate RSA key
      tags:
        - product-configuration-rsa
      x-server: true
      x-tags:
        - product-configuration-rsa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/keys \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/mfa:
    get:
      description: Gets project two-factor authentication settings.
      operationId: get-project-two-factor-authentication-settings
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  mfa_types:
                    - mfa_type: email
                      priority: 1
                  mfa_url: https://login-widget.xsolla.com/latest/otp
                properties:
                  mfa_types:
                    description: >-
                      List of data about project two-factor authentication
                      settings.
                    items:
                      properties:
                        mfa_type:
                          description: Type of MFA SMS or Email.
                          enum:
                            - sms
                            - email
                          type: string
                          x-isnullable: false
                        priority:
                          description: >-
                            Priority of MFA type "1" for higher and "2" for
                            lower.
                          maximum: 2
                          minimum: 1
                          type: integer
                          x-isnullable: false
                      type: object
                    type: array
                  mfa_url:
                    description: URL to redirect user for MFA flow.
                    type: string
                    x-isnullable: false
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
      security:
        - Server: []
      summary: Get project two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-server: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/mfa \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    put:
      description: >
        Updates project two-factor authentication settings. The user must
        confirm the changes by entering a one-time code.
      operationId: update-project-two-factor-authentication-settings
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                mfa_types:
                  items:
                    properties:
                      mfa_type:
                        description: Type of MFA.
                        enum:
                          - email
                        type: string
                        x-isnullable: false
                      priority:
                        description: Priority of MFA type "1" for higher and "2" for lower.
                        maximum: 2
                        minimum: 1
                        type: integer
                        x-isnullable: false
                    required:
                      - mfa_type
                      - priority
                    type: object
                  type: array
                mfa_url:
                  description: URL to redirect user for MFA flow.
                  type: string
                  x-isnullable: true
              required:
                - mfa_types
              type: object
        required: true
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 002-050
                      description: User’s two-factor authentication settings not changed.
      security:
        - Server: []
      summary: Update project two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-server: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/mfa \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"mfa_types":[{"mfa_type":"email","priority":1}],"mfa_url":"string"}'
  /projects/{project_id}/server_custom_id/{server_custom_id}/attributes:
    post:
      description: >-
        Updates and creates user attributes by user ID on your server
        (`server_custom_id`).<div
        class="notice"><strong>Notice</strong><br>[Rate limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: update-users-attributes-from-server-by-server-custom-id
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            The server custom ID parameter is used to identify users in partner
            server.
          in: path
          name: server_custom_id
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/update-users-attributes-from-serverBody'
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 2005-0001
                    error_description: Schema not found
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AttributesAreDuplicated:
              examples:
                response:
                  value:
                    error_code: 2002-0001
                    error_description: Duplicated attributes.
            OperationUnavailableInReadOnlyMode:
              examples:
                response:
                  value:
                    error_code: 2003-0001
                    error_description: This call temporarily unavailable.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Update user attributes from server by server custom ID
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/server_custom_id/{server_custom_id}/attributes \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"attributes":[{"attr_type":"client","data_type":"string","description":"string","format":"string","key":"string","permission":"public","value":"string"}],"publisher_id":0,"publisher_project_id":0,"removing_keys":["string"]}'
  /projects/{project_id}/social/provider_token:
    put:
      description: Configure social provider token in Login JWT.
      operationId: put-social-provider-token
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                add_social_token:
                  type: boolean
                  nullable: false
              type: object
        required: true
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Change settigns for connected social provider
      tags:
        - product-configuration-social
      x-server: true
      x-tags:
        - product-configuration-social
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/social/provider_token \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"add_social_token":true}'
  /projects/{project_id}/social/{provider_name}/custom_scope:
    put:
      description: Manage custom Oauth2 scopes for provider.
      operationId: put-social-provider-custom-scope
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: provider_name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_scope:
                  items:
                    type: string
                    nullable: false
                  type: array
                  nullable: false
                refresh_always:
                  type: boolean
                  nullable: false
              type: object
        required: true
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ProjectNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-019
                      description: Project not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Change scope settigns for connected social provider
      tags:
        - product-configuration-social
      x-server: true
      x-tags:
        - product-configuration-social
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/social/{provider_name}/custom_scope \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"custom_scope":["string"],"refresh_always":true}'
  /projects/{project_id}/templates/email/{template_id}/{locale}/{template_type}:
    get:
      description: Gets all information about the specific template.
      operationId: get-custom-email-template
      parameters:
        - description: |
            type of template
          in: path
          name: template_type
          required: true
          schema:
            type: string
            enum:
              - custom
              - password_reset
              - account_confirmation
              - email_confirmation
              - welcome_email
              - passwordless_auth_by_code
              - passwordless_auth_by_code_link
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Name of the template. Can include latin characters, digits,
            characters “-” and “_”.
          in: path
          name: template_id
          required: true
          schema:
            type: string
        - description: >
            Region of the texts that you provided in the template in the
            `<language code>_<country code>` format, where:

            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
          in: path
          name: locale
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Email template data.
                example:
                  body: >-
                    Hi {{first_name}} {{last_name}}!<br>We will be glad to see
                    you on the {{site_link}} page.
                  header: Welcome email
                  locale: en_US
                  template_id: Welcome email template
                  template_type: custom
                properties:
                  body:
                    description: Email content without opening and closing body tags.
                    type: string
                    x-isnullable: false
                  header:
                    description: Email subject.
                    type: string
                    x-isnullable: false
                  locale:
                    description: >
                      Region of the texts that you provided in the template in
                      the `<language code>_<country code>` format, where:

                      * `language code`: language code in the [ISO
                      639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
                      format;

                      * `country code`: country/region code in the [ISO 3166-1
                      alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                      format.
                    type: string
                    x-isnullable: false
                  template_id:
                    description: >-
                      Name of the template. Can include latin characters,
                      digits, characters “-” and “_”.
                    type: string
                    x-isnullable: false
                  template_type:
                    type: string
                    x-isnullable: false
                required:
                  - template_id
                  - locale
                  - header
                  - body
                  - template_type
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            CustoTemplateUnprocessable:
              examples:
                response:
                  value:
                    error:
                      code: 003-073
                      description: Unknown error with custom email template. Try again.
      security:
        - Server: []
      summary: Get custom email template
      tags:
        - custom-email-templates
      x-secret: false
      x-server: true
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: >
        Creates an email template with custom structure, styles, and texts. You
        can add the variables for some texts to the template. To add the
        relevant texts for these variables, use the [Send email based on
        template](https://developers.xsolla.com/api/login/operation/send-email-based-on-template)
        call.
      operationId: create-custom-email-template
      parameters:
        - description: |
            type of template
          in: path
          name: template_type
          required: true
          schema:
            type: string
            enum:
              - custom
              - password_reset
              - account_confirmation
              - email_confirmation
              - welcome_email
              - passwordless_auth_by_code
              - passwordless_auth_by_code_link
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Name of the template. Can include latin characters, digits,
            characters “-” and “_”.
          in: path
          name: template_id
          required: true
          schema:
            type: string
        - description: >
            Region of the texts that you provided in the template in the
            `<language code>_<country code>` format, where:

            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
          in: path
          name: locale
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/create-custom-email-templateBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Email template data.
                example:
                  body: >-
                    Hi {{first_name}} {{last_name}}!<br>We will be glad to see
                    you on the {{site_link}} page.
                  header: Welcome email
                  locale: en_US
                  template_id: Welcome email template
                  template_type: custom
                properties:
                  body:
                    description: Email content without opening and closing body tags.
                    type: string
                    x-isnullable: false
                  header:
                    description: Email subject.
                    type: string
                    x-isnullable: false
                  locale:
                    description: >
                      Region of the texts that you provided in the template in
                      the `<language code>_<country code>` format, where:

                      * `language code`: language code in the [ISO
                      639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
                      format;

                      * `country code`: country/region code in the [ISO 3166-1
                      alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                      format.
                    type: string
                    x-isnullable: false
                  template_id:
                    description: >-
                      Name of the template. Can include latin characters,
                      digits, characters “-” and “_”.
                    type: string
                    x-isnullable: false
                  template_type:
                    type: string
                    x-isnullable: false
                required:
                  - template_id
                  - locale
                  - header
                  - body
                  - template_type
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            TemplateExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-074
                      description: >-
                        Template with this template_id already exists in this
                        Login project.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            CustoTemplateUnprocessable:
              examples:
                response:
                  value:
                    error:
                      code: 003-073
                      description: Unknown error with custom email template. Try again.
      security:
        - Server: []
      summary: Create custom email template
      tags:
        - custom-email-templates
      x-secret: false
      x-server: true
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"body":"Hi {{first_name}} {{last_name}}!<br>We will be glad to see you on the {{site_link}} page.","header":"Welcome email"}'
    put:
      description: Updates the specific custom email template.
      operationId: update-custom-email-template
      parameters:
        - description: |
            type of template
          in: path
          name: template_type
          required: true
          schema:
            type: string
            enum:
              - custom
              - password_reset
              - account_confirmation
              - email_confirmation
              - welcome_email
              - passwordless_auth_by_code
              - passwordless_auth_by_code_link
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Name of the template. Can include latin characters, digits,
            characters “-” and “_”.
          in: path
          name: template_id
          required: true
          schema:
            type: string
        - description: >
            Region of the texts that you provided in the template in the
            `<language code>_<country code>` format, where:

            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
          in: path
          name: locale
          required: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/create-custom-email-templateBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Email template data.
                example:
                  body: >-
                    Hi {{first_name}} {{last_name}}!<br>We will be glad to see
                    you on the {{site_link}} page.
                  header: Welcome email
                  locale: en_US
                  template_id: Welcome email template
                  template_type: custom
                properties:
                  body:
                    description: Email content without opening and closing body tags.
                    type: string
                    x-isnullable: false
                  header:
                    description: Email subject.
                    type: string
                    x-isnullable: false
                  locale:
                    description: >
                      Region of the texts that you provided in the template in
                      the `<language code>_<country code>` format, where:

                      * `language code`: language code in the [ISO
                      639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
                      format;

                      * `country code`: country/region code in the [ISO 3166-1
                      alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                      format.
                    type: string
                    x-isnullable: false
                  template_id:
                    description: >-
                      Name of the template. Can include latin characters,
                      digits, characters “-” and “_”.
                    type: string
                    x-isnullable: false
                  template_type:
                    type: string
                    x-isnullable: false
                required:
                  - template_id
                  - locale
                  - header
                  - body
                  - template_type
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            CustoTemplateUnprocessable:
              examples:
                response:
                  value:
                    error:
                      code: 003-073
                      description: Unknown error with custom email template. Try again.
      security:
        - Server: []
      summary: Update custom email template
      tags:
        - custom-email-templates
      x-secret: false
      x-server: true
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"body":"Hi {{first_name}} {{last_name}}!<br>We will be glad to see you on the {{site_link}} page.","header":"Welcome email"}'
  /projects/{project_id}/user_groups:
    get:
      description: Gets a list of user groups in project.
      operationId: get-project-user-groups
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Group ID.
                      type: integer
                      nullable: false
                    is_default:
                      description: Shows whether the group is default or not.
                      type: boolean
                      nullable: false
                    is_deletable:
                      description: >-
                        Shows whether the group can be deleted or not. Default
                        groups can’t be deleted.
                      type: boolean
                      nullable: false
                    name:
                      description: Group name.
                      type: string
                      nullable: false
                  required:
                    - id
                    - name
                    - is_default
                    - is_deletable
                  type: object
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
      security:
        - Server: []
      summary: Get project groups
      tags:
        - product-configuration-groups
      x-server: true
      x-tags:
        - product-configuration-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: Adds a new user group to a project.
      operationId: post-project-user-group
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                name:
                  description: A user group name.
                  maxLength: 255
                  type: string
                  nullable: false
              required:
                - name
              type: object
        required: true
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Add new group to project
      tags:
        - product-configuration-groups
      x-server: true
      x-tags:
        - product-configuration-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"name":"string"}'
  /projects/{project_id}/user_groups/{group_id}:
    delete:
      description: >
        Deletes a user group. <div class="notice"><strong>Notice</strong><br>A
        user group can't be deleted if it contains users.</div>
      operationId: del-project-user-group
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Group ID. Call the [Get
            groups](/api/login/operation/get-project-user-groups/) method to get
            it.
          in: path
          name: group_id
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Delete group from project
      tags:
        - product-configuration-groups
      x-server: true
      x-tags:
        - product-configuration-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/user_groups/{group_id} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    put:
      description: Changes a user group name.
      operationId: put-project-user-group
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Group ID. Call the [Get
            groups](/api/login/operation/get-project-user-groups/) method to get
            it.
          in: path
          name: group_id
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              properties:
                new_name:
                  description: A new name for a group.
                  maxLength: 255
                  type: string
                  nullable: false
              required:
                - new_name
              type: object
        required: true
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Update group name
      tags:
        - product-configuration-groups
      x-server: true
      x-tags:
        - product-configuration-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/user_groups/{group_id} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"new_name":"string"}'
  /projects/{project_id}/user_import:
    post:
      description: Imports user data from a CSV format file to the Login project.
      operationId: upload-import-file
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                users:
                  description: |
                    CSV file containing user data. Maximum file size: 64 MB.
                     
                     Phone format: [E.123](https://en.wikipedia.org/wiki/E.123).
                  type: string
                  format: binary
                mapping:
                  description: >
                    A JSON object mapping CSV column indexes (starting from 0)
                    to user field names.


                    Allowed keys:
                      - email
                      - email_verified
                      - user_id
                      - is_active
                      - is_banned
                      - username
                      - birth_date
                      - gender
                      - full_name
                      - last_name
                      - first_name
                      - nickname
                      - picture
                      - password_hash
                      - phone_number
                      - server_custom_id
                      - last_login_date
                      - provider|{provider_name}

                    Allowed provider names:
                      - steam

                    Example:

                    ```json

                    {
                      "username": 0,
                      "email": 1,
                      "is_active": 2,
                      "is_banned": 3,
                      "email_verified": 4,
                      "birth_date": 5,
                      "gender": 6,
                      "full_name": 7,
                      "last_name": 8,
                      "first_name": 9,
                      "nickname": 10,
                      "picture": 11,
                      "phone_number": 12,
                      "server_custom_id": 13,
                      "provider|steam": 14,
                      "last_login_date": 15
                    }

                    ```
                  type: string
                  format: json
                email:
                  description: Email to send a report to.
                  type: string
                  format: email
                comma:
                  description: CSV separator.
                  type: string
                  default: ','
              required:
                - users
                - mapping
                - email
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
      security:
        - Server: []
      summary: Import user data
      tags:
        - bulk-user-management
      x-server: true
      x-tags:
        - bulk-user-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/user_import \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --header 'accept: multipart/form-data'
  /projects/{project_id}/users:
    get:
      description: |
        Gets user data by user ID.
      operationId: get-user-for-project
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: Parameter that is used for API pagination.
          in: query
          name: after
          schema:
            type: string
        - description: Maximum number of users that are returned at a time.
          in: query
          name: limit
          required: true
          schema:
            type: integer
            minimum: 1
            default: 20
        - description: Direction of sorting.
          in: query
          name: order
          required: true
          schema:
            type: string
            enum:
              - ASC
              - DESC
              - asc
              - desc
            default: ASC
        - description: An array with user group IDs.
          in: query
          name: user_groups
          explode: true
          schema:
            type: array
            items:
              type: integer
        - description: status now or not now
          in: query
          name: status
          schema:
            type: integer
            enum:
              - 0
              - 1
        - description: >-
            A search query. Can be `contact`, `phone`, `id`, `social-id`,
            `username`, `nickname`, ot `custom_id`.
          in: query
          name: search_query
          schema:
            type: string
        - description: Number of the elements from which the list is generated.
          in: query
          name: offset
          schema:
            type: integer
      responses:
        '200':
          description: User data
          x-nullable: false
          content:
            application/json:
              schema:
                properties:
                  count:
                    type: integer
                  next_after:
                    type: integer
                    nullable: true
                  next_url:
                    type: string
                    nullable: true
                  users:
                    items:
                      description: Definition of user object
                      properties:
                        ban:
                          description: User ban definition
                          properties:
                            date_from:
                              type: string
                            date_to:
                              type: string
                            reason:
                              type: string
                          required:
                            - date_from
                            - date_to
                            - reason
                          type: object
                          x-isnullable: true
                        email:
                          description: User email address.
                          type: string
                          x-isnullable: true
                        external_id:
                          description: ID of the user in your game.
                          type: string
                          x-isnullable: true
                        first_name:
                          description: User first name.
                          type: string
                          x-isnullable: true
                        groups:
                          description: List of groups the user belongs to.
                          items:
                            description: User group
                            properties:
                              id:
                                description: User group ID
                                type: integer
                              is_default:
                                description: Flag whether the group is the default group
                                type: boolean
                              is_deletable:
                                description: Flag whether the group can be deleted
                                type: boolean
                              name:
                                description: User group name
                                type: string
                            type: object
                          type: array
                        id:
                          description: User ID.
                          format: UUID
                          type: string
                        is_anonymous:
                          description: >-
                            Shows whether the user is anonymous or not. The
                            anonymous user is a user created via device ID or
                            custom ID and doesn’t have an alternative
                            authentication method added (e.g., username/email
                            and password).
                          type: boolean
                        is_last_email_confirmed:
                          description: >-
                            Whether a user comfirmed their email address. If
                            `true`, the email address is confirmed.
                          type: boolean
                        is_user_active:
                          description: Shows whether the user is active or not.
                          type: boolean
                        last_login:
                          description: >-
                            Date of the last user login in the [ISO
                            8601](https://en.wikipedia.org/wiki/ISO_8601)
                            format.
                          type: string
                          x-isnullable: true
                        last_name:
                          description: User last name.
                          type: string
                          x-isnullable: true
                        login_type:
                          description: >-
                            Last used type of authorization. Can be
                            xsolla_login/social/server_custom_id and etc
                          type: string
                          x-isnullable: false
                        name:
                          description: User name.
                          type: string
                          x-isnullable: true
                        nickname:
                          description: User nickname.
                          type: string
                          x-isnullable: true
                        phone_auth:
                          description: >-
                            User phone number according to [national
                            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                            This phone number is used to authenticate the user.
                            Returned only if the `phone_auth` field is
                            specified.
                          x-isnullable: true
                        picture:
                          description: Link to the user profile picture.
                          x-isnullable: true
                        project_id:
                          description: ID of the project associated with a user.
                          format: UUID
                          type: string
                        registered:
                          description: >-
                            Date of user registration in the [ISO
                            8601](https://en.wikipedia.org/wiki/ISO_8601)
                            format.
                          type: string
                        server_custom_id:
                          description: User server_custom_id.
                          type: string
                          x-isnullable: true
                        username:
                          description: User username.
                          type: string
                      required:
                        - id
                        - last_login
                        - username
                        - picture
                        - phone_auth
                        - external_id
                        - registered
                        - groups
                        - is_user_active
                        - ban
                        - is_last_email_confirmed
                        - server_custom_id
                        - login_type
                    type: array
                required:
                  - users
                  - next_after
                  - next_url
                  - count
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
      security:
        - Server: []
      summary: Get user by ID for project
      tags:
        - search
      x-server: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/projects/{project_id}/users?after=SOME_STRING_VALUE&limit=20&order=ASC&user_groups=SOME_ARRAY_VALUE&status=SOME_INTEGER_VALUE&search_query=SOME_STRING_VALUE&offset=SOME_INTEGER_VALUE' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/users/search:
    get:
      description: >-
        Searches users by criteria. Returns results with pagination and
        ordering.
      operationId: search-users-by-filter
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: Maximum number of users that are returned at a time.
          in: query
          name: limit
          required: true
          schema:
            type: integer
        - description: Number of the elements from which the list is generated.
          in: query
          name: offset
          schema:
            type: integer
        - in: query
          name: order_column
          schema:
            type: string
            enum:
              - username
              - contact
              - group
              - activity
              - nickname
              - custom_id
        - description: Condition for sorting the list of users.
          in: query
          name: order_dir
          schema:
            type: string
            enum:
              - asc
              - desc
        - description: An array with user group IDs.
          in: query
          name: user_groups
          explode: true
          schema:
            type: array
            items:
              type: integer
        - description: Shows whether the user is active or not.
          in: query
          name: status
          schema:
            type: boolean
        - description: >-
            A search query. Can be `contact`, `phone`, `id`, `social-id`,
            `username`, `nickname`, ot `custom_id`.
          in: query
          name: search_query
          schema:
            type: string
        - description: A search criteria.
          in: query
          name: search_by
          schema:
            type: string
            enum:
              - contact
              - phone
              - id
              - social-id
              - username
              - nickname
              - custom_id
        - description: Starting date for user activity in the `YYYY-MM-DD` format.
          in: query
          name: activity_from
          schema:
            type: string
        - description: Starting date for user activity in the `YYYY-MM-DD` format.
          in: query
          name: activity_to
          schema:
            type: string
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                properties:
                  count:
                    description: Count all user by criteria without pagination
                    type: integer
                  next_after:
                    description: Offset for next page of search
                    type: integer
                  users:
                    description: List of found users
                    items:
                      description: Definition of user object
                      properties:
                        ban:
                          description: User ban definition
                          properties:
                            date_from:
                              type: string
                            date_to:
                              type: string
                            reason:
                              type: string
                          required:
                            - date_from
                            - date_to
                            - reason
                          type: object
                          x-isnullable: true
                        email:
                          description: User email address.
                          type: string
                          x-isnullable: true
                        external_id:
                          description: ID of the user in your game.
                          type: string
                          x-isnullable: true
                        first_name:
                          description: User first name.
                          type: string
                          x-isnullable: true
                        groups:
                          description: List of groups the user belongs to.
                          items:
                            description: User group
                            properties:
                              id:
                                description: User group ID
                                type: integer
                              is_default:
                                description: Flag whether the group is the default group
                                type: boolean
                              is_deletable:
                                description: Flag whether the group can be deleted
                                type: boolean
                              name:
                                description: User group name
                                type: string
                            type: object
                          type: array
                        id:
                          description: User ID.
                          format: UUID
                          type: string
                        is_anonymous:
                          description: >-
                            Shows whether the user is anonymous or not. The
                            anonymous user is a user created via device ID or
                            custom ID and doesn’t have an alternative
                            authentication method added (e.g., username/email
                            and password).
                          type: boolean
                        is_last_email_confirmed:
                          description: >-
                            Whether a user comfirmed their email address. If
                            `true`, the email address is confirmed.
                          type: boolean
                        is_user_active:
                          description: Shows whether the user is active or not.
                          type: boolean
                        last_login:
                          description: >-
                            Date of the last user login in the [ISO
                            8601](https://en.wikipedia.org/wiki/ISO_8601)
                            format.
                          type: string
                          x-isnullable: true
                        last_name:
                          description: User last name.
                          type: string
                          x-isnullable: true
                        login_type:
                          description: >-
                            Last used type of authorization. Can be
                            xsolla_login/social/server_custom_id and etc
                          type: string
                          x-isnullable: false
                        name:
                          description: User name.
                          type: string
                          x-isnullable: true
                        nickname:
                          description: User nickname.
                          type: string
                          x-isnullable: true
                        phone_auth:
                          description: >-
                            User phone number according to [national
                            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                            This phone number is used to authenticate the user.
                            Returned only if the `phone_auth` field is
                            specified.
                          x-isnullable: true
                        picture:
                          description: Link to the user profile picture.
                          x-isnullable: true
                        project_id:
                          description: ID of the project associated with a user.
                          format: UUID
                          type: string
                        registered:
                          description: >-
                            Date of user registration in the [ISO
                            8601](https://en.wikipedia.org/wiki/ISO_8601)
                            format.
                          type: string
                        server_custom_id:
                          description: User server_custom_id.
                          type: string
                          x-isnullable: true
                        username:
                          description: User username.
                          type: string
                      required:
                        - id
                        - last_login
                        - username
                        - picture
                        - phone_auth
                        - external_id
                        - registered
                        - groups
                        - is_user_active
                        - ban
                        - is_last_email_confirmed
                        - server_custom_id
                        - login_type
                    type: array
                required:
                  - count
                  - user
                  - next_after
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Search users
      tags:
        - search
      x-server: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/projects/{project_id}/users/search?limit=SOME_INTEGER_VALUE&offset=SOME_INTEGER_VALUE&order_column=SOME_STRING_VALUE&order_dir=SOME_STRING_VALUE&user_groups=SOME_ARRAY_VALUE&status=SOME_BOOLEAN_VALUE&search_query=SOME_STRING_VALUE&search_by=SOME_STRING_VALUE&activity_from=SOME_STRING_VALUE&activity_to=SOME_STRING_VALUE' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/users/search/by_id/{user_id}:
    get:
      description: |
        Gets user data by user ID.
      operationId: get-user
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: User data
          x-nullable: false
          content:
            application/json:
              schema:
                description: Definition of user object
                properties:
                  ban:
                    description: User ban definition
                    properties:
                      date_from:
                        type: string
                      date_to:
                        type: string
                      reason:
                        type: string
                    required:
                      - date_from
                      - date_to
                      - reason
                    type: object
                    x-isnullable: true
                  email:
                    description: User email address.
                    type: string
                    x-isnullable: true
                  external_id:
                    description: ID of the user in your game.
                    type: string
                    x-isnullable: true
                  first_name:
                    description: User first name.
                    type: string
                    x-isnullable: true
                  groups:
                    description: List of groups the user belongs to.
                    items:
                      description: User group
                      properties:
                        id:
                          description: User group ID
                          type: integer
                        is_default:
                          description: Flag whether the group is the default group
                          type: boolean
                        is_deletable:
                          description: Flag whether the group can be deleted
                          type: boolean
                        name:
                          description: User group name
                          type: string
                      type: object
                    type: array
                  id:
                    description: User ID.
                    format: UUID
                    type: string
                  is_anonymous:
                    description: >-
                      Shows whether the user is anonymous or not. The anonymous
                      user is a user created via device ID or custom ID and
                      doesn’t have an alternative authentication method added
                      (e.g., username/email and password).
                    type: boolean
                  is_last_email_confirmed:
                    description: >-
                      Whether a user comfirmed their email address. If `true`,
                      the email address is confirmed.
                    type: boolean
                  is_user_active:
                    description: Shows whether the user is active or not.
                    type: boolean
                  last_login:
                    description: >-
                      Date of the last user login in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                    x-isnullable: true
                  last_name:
                    description: User last name.
                    type: string
                    x-isnullable: true
                  login_type:
                    description: >-
                      Last used type of authorization. Can be
                      xsolla_login/social/server_custom_id and etc
                    type: string
                    x-isnullable: false
                  name:
                    description: User name.
                    type: string
                    x-isnullable: true
                  nickname:
                    description: User nickname.
                    type: string
                    x-isnullable: true
                  phone_auth:
                    description: >-
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                      This phone number is used to authenticate the user.
                      Returned only if the `phone_auth` field is specified.
                    x-isnullable: true
                  picture:
                    description: Link to the user profile picture.
                    x-isnullable: true
                  project_id:
                    description: ID of the project associated with a user.
                    format: UUID
                    type: string
                  registered:
                    description: >-
                      Date of user registration in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                  server_custom_id:
                    description: User server_custom_id.
                    type: string
                    x-isnullable: true
                  username:
                    description: User username.
                    type: string
                required:
                  - id
                  - last_login
                  - username
                  - picture
                  - phone_auth
                  - external_id
                  - registered
                  - groups
                  - is_user_active
                  - ban
                  - is_last_email_confirmed
                  - server_custom_id
                  - login_type
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
      security:
        - Server: []
      summary: Get user by ID
      tags:
        - search
      x-server: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/users/search/by_id/{user_id} \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/users/{user_id}/attributes:
    get:
      description: >-
        Gets a list of user’s attributes. Returns only attributes values for
        user by his ID.<div class="notice"><strong>Notice</strong><br>[Rate
        limits for server-side
        methods](/api/login/overview/#section/Rate-limits) are applied to this
        method.</div>
      operationId: get-attributes-by-user-id
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    attr_type:
                      default: client
                      description: Definition of user’s access level to service attributes.
                      enum:
                        - client
                        - server
                      type: string
                      nullable: false
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    publisher_project_id:
                      description: Merchant Project ID
                      type: integer
                      nullable: true
                    readonly:
                      description: The attribute is read-only
                      type: boolean
                      nullable: false
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                    - readonly
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 0000-0000
                    error_description: description.
            AccessDenied:
              examples:
                response:
                  value:
                    error_code: 2001-0002
                    error_description: Access denied
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                properties:
                  error_code:
                    description: Error code.
                    type: string
                    nullable: false
                  error_description:
                    description: Error description.
                    type: string
                    nullable: false
                type: object
              examples:
                response:
                  value:
                    error_code: 1900-0001
                    error_description: Allowable number of requests exceeded.
      security:
        - AttributesServer: []
      summary: Get attributes by user ID
      tags:
        - attributes-server
      x-server: true
      x-tags:
        - attributes-server
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/attributes \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/users/{user_id}/ban:
    delete:
      description: Removes the ban from the user.
      operationId: del-projects-users-ban
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: OK
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Unban user
      tags:
        - user-profile
      x-server: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/ban \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: Add a ban to the user, either for a specific period or permanently.
      operationId: post-projects-users-ban
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                date_from:
                  description: >
                    The starting date and time when the user ban becomes
                    effective. Must be provided in the following format
                    'YYYY-MM-DDTHH:MM:SS+0000' (e.g.,
                    '2025-04-29T14:30:00+0000').
                  type: string
                  nullable: true
                date_to:
                  description: >
                    The ending date and time when the user ban expires. Must be
                    provided in the following format: 'YYYY-MM-DDTHH:MM:SS+0000'
                    (e.g., '2025-04-29T14:30:00+0000').
                  type: string
                  nullable: true
                reason:
                  description: A short explanation for why the user is being banned.
                  maxLength: 255
                  minLength: 1
                  type: string
                  nullable: false
              required:
                - reason
              type: object
        required: true
      responses:
        '204':
          description: OK.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Ban user
      tags:
        - user-profile
      x-server: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/ban \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"date_from":"string","date_to":"string","reason":"string"}'
  /projects/{project_id}/users/{user_id}/mfa:
    get:
      description: Gets user's two-factor authentication settings.
      operationId: get-server-mfa
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  change_restricted: true
                  mfa_enabled: true
                  mfa_type: email
                items:
                  properties:
                    change_restricted:
                      description: >-
                        Whether the type of two-factor authentication change is
                        restricted for the user.
                      type: boolean
                      x-omitempty: false
                    enabled:
                      description: >-
                        Whether two-factor authentication is enabled for the
                        user.
                      type: boolean
                      x-omitempty: false
                    mfa_type:
                      description: >-
                        Type of two-factor authentication. Can be `email` or
                        `sms`.
                      type: string
                      x-omitempty: false
                  type: object
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Get user's two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-server: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/mfa \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: Updates user's two-factor authentication settings from server.
      operationId: update-server-mfa
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: Two-factor authentication settings for a user.
              example:
                change_restricted: true
                enabled: true
                mfa_type: email
              properties:
                change_restricted:
                  default: false
                  description: >
                    Status of two-factor authentication change restriction. Set
                    `true` value for enabling, and `false` value otherwise.
                  type: boolean
                  nullable: false
                enabled:
                  default: false
                  description: >-
                    Status of two-factor authentication settings. Set `true`
                    value for enabling, and `false` value otherwise.
                  type: boolean
                  nullable: false
                mfa_type:
                  description: >
                    Type of the second factor. You must enable the specified
                    type for the Login project. Contact your Customer Success
                    Manager to set it up.
                  enum:
                    - email
                  type: string
                  nullable: false
              required:
                - mfa_type
              type: object
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Update user's two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-server: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/mfa \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"change_restricted":true,"enabled":true,"mfa_type":"email"}'
  /projects/{project_id}/users/{user_id}/server_custom_id:
    put:
      description: Updates server custom ID for a user.
      operationId: put-user-custom-id
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              properties:
                server_custom_id:
                  description: >-
                    Custom ID that already exists on your server. Must be unique
                    for a Login project. Can include latin characters, digits,
                    characters ".", “-”, and “_”.
                  maxLength: 255
                  type: string
                  nullable: true
              required:
                - server_custom_id
              type: object
        required: true
      responses:
        '204':
          description: No content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Update server custom ID for user
      tags:
        - user-profile
      x-server: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/server_custom_id \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"server_custom_id":"string"}'
  /projects/{project_id}/users/{user_id}/social_profile:
    get:
      description: |
        Gets all user's social profiles.
      operationId: get-all-users-social-profiles
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    created_at:
                      description: >-
                        Date of user social profile creation in the [RFC 3339
                        format](https://www.ietf.org/rfc/rfc3339.txt).
                    email:
                      description: User email address.
                      type: string
                      x-isnullable: true
                    provider_name:
                      description: >
                        Name of the social network connected to Login in
                        Publisher Account. Can be:
                        [`amazon`](https://developer.amazon.com/docs/),
                        [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
                        [`babka`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
                        [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
                        [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
                        [`discord`](https://discord.com/developers/docs/topics/oauth2),
                        [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
                        [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
                        [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
                        [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
                        [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
                        [`mailru`](https://help.mail.ru/developers/oauth/settings),
                        [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
                        [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
                        [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
                        [`ok`](https://apiok.ru/dev/app/create#section-2),
                        [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
                        [`qq`](https://wiki.connect.qq.com/__trashed-2),
                        [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
                        [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
                        [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
                        [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
                        [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
                        [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
                        [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
                        [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
                        [`yahoo`](https://developer.yahoo.com/oauth2/guide),
                        [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
                        [`youtube`](https://developers.google.com/youtube/registering_an_application).


                        If you store user data in
                        [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
                        only `twitch` is available.
                      type: string
                    social_id:
                      description: User ID in a social network.
                      type: string
                    updated_at:
                      description: >-
                        Date of user social profile update in the [RFC 3339
                        format](https://www.ietf.org/rfc/rfc3339.txt).
                      type: string
                  type: object
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
      security:
        - Server: []
      summary: Get social profiles
      tags:
        - search
      x-server: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/social_profile \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /projects/{project_id}/users/{user_id}/user_groups:
    delete:
      description: >
        Deletes user groups. <div
        class="notice"><strong>Notice</strong><br><ul><li>A Default group cannot
        be passed to this method.</li><li>This method automatically updates user
        tags in Mailchimp if you have [connected
        it](https://developers.xsolla.com/doc/login/how-to/exporting-users-to-mailchimp/#login_how_to_exporting_users_to_mailchimp).</li></ul></div>
      operationId: delete-user-groups
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/delete-user-groupsBody'
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessPhoneAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-050
                      description: >-
                        Passwordless authentication via phone number disabled
                        for this Login project.
            RateLimitPhoneAuthorization:
              examples:
                response:
                  value:
                    error:
                      code: 003-038
                      description: You exceeded limited number of attempts to send SMS.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012,
                      description: User with specified phone number already exists.
      security:
        - Server: []
      summary: Delete user groups
      tags:
        - user-management-groups
      x-server: true
      x-tags:
        - user-management-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"user_groups":[1,2,3]}'
    get:
      description: Gets all user's groups.
      operationId: get-user-groups
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Group ID.
                      type: integer
                      nullable: false
                    is_default:
                      description: Shows whether the group is default or not.
                      type: boolean
                      nullable: false
                    is_deletable:
                      description: Shows whether the group is delatable or not.
                      type: boolean
                      nullable: false
                    name:
                      description: Group name.
                      maxLength: 45
                      type: string
                      nullable: false
                  required:
                    - id
                    - is_default
                    - name
                    - is_deletable
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Get user groups
      tags:
        - user-management-groups
      x-server: true
      x-tags:
        - user-management-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    patch:
      description: >
        Updates user's groups. <div
        class="notice"><strong>Notice</strong><br><ul><li>Pass IDs of all groups
        where the users should be, other groups will be automatically
        deactivated for this user.</li><li>This method automatically updates
        user tags in Mailchimp if you have [connected
        it](/doc/login/how-to/exporting-users-to-mailchimp/#login_how_to_exporting_users_to_mailchimp).</li></ul></div>
      operationId: update-user-groups
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        $ref: '#/components/requestBodies/delete-user-groupsBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Group ID.
                      type: integer
                      nullable: false
                    is_default:
                      description: Shows whether the group is default or not.
                      type: boolean
                      nullable: false
                    is_deletable:
                      description: Shows whether the group is delatable or not.
                      type: boolean
                      nullable: false
                    name:
                      description: Group name.
                      maxLength: 45
                      type: string
                      nullable: false
                  required:
                    - id
                    - is_default
                    - name
                    - is_deletable
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessPhoneAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-050
                      description: >-
                        Passwordless authentication via phone number disabled
                        for this Login project.
            RateLimitPhoneAuthorization:
              examples:
                response:
                  value:
                    error:
                      code: 003-038
                      description: You exceeded limited number of attempts to send SMS.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012,
                      description: User with specified phone number already exists.
      security:
        - Server: []
      summary: Update user groups
      tags:
        - user-management-groups
      x-server: true
      x-tags:
        - user-management-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PATCH \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"user_groups":[1,2,3]}'
    put:
      description: >
        Manages groups for a user. A default group cannot be passed to this
        method. <div class="notice"><strong>Notice</strong><br><ul><li>A Default
        group cannot be passed to this method.</li><li>This method automatically
        updates user tags in Mailchimp if you have [connected
        it](https://developers.xsolla.com/doc/login/how-to/exporting-users-to-mailchimp/#login_how_to_exporting_users_to_mailchimp).</li></ul></div>
      operationId: manage-user-groups
      parameters:
        - description: >-
            User ID. You can find it in **Publisher Account** > Login settings >
            **Users** > **Username/ID**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: List of user groups ID.
              example:
                add_user_groups:
                  - 1
                  - 2
                  - 3
                remove_user_groups:
                  - 4
                  - 5
                  - 6
              properties:
                add_user_groups:
                  description: List of user groups ID.
                  items:
                    type: integer
                  maxItems: 1000
                  type: array
                remove_user_groups:
                  description: List of user groups ID.
                  items:
                    type: integer
                  maxItems: 1000
                  type: array
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    id:
                      description: Group ID.
                      type: integer
                      nullable: false
                    is_default:
                      description: Shows whether the group is default or not.
                      type: boolean
                      nullable: false
                    is_deletable:
                      description: Shows whether the group is delatable or not.
                      type: boolean
                      nullable: false
                    name:
                      description: Group name.
                      maxLength: 45
                      type: string
                      nullable: false
                  required:
                    - id
                    - is_default
                    - name
                    - is_deletable
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MisconfiguredProject:
              examples:
                response:
                  value:
                    error:
                      code: 003-022
                      description: >-
                        This Login project misconfigured. Change this Login
                        project settings in Xsolla Publisher Account or contact
                        your Customer Success Manager.
            PasswordlessPhoneAuthenticationIsDisabledForLogin:
              examples:
                response:
                  value:
                    error:
                      code: 003-050
                      description: >-
                        Passwordless authentication via phone number disabled
                        for this Login project.
            RateLimitPhoneAuthorization:
              examples:
                response:
                  value:
                    error:
                      code: 003-038
                      description: You exceeded limited number of attempts to send SMS.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012,
                      description: User with specified phone number already exists.
      security:
        - Server: []
      summary: Manage groups for user
      tags:
        - user-management-groups
      x-server: true
      x-tags:
        - user-management-groups
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PUT \
              --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"add_user_groups":[1,2,3],"remove_user_groups":[4,5,6]}'
  /projects/{project_id}/welcome_email:
    delete:
      description: |
        Switches off a welcome email.
      operationId: switch-off-welcome-email
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserAlreadyHaveConfirmationLink:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Switch off welcome email
      tags:
        - custom-email-templates
      x-server: true
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/projects/{project_id}/welcome_email \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
    post:
      description: |
        Switches off a welcome email.
      operationId: switch-on-welcome-email
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: path
          name: project_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserAlreadyHaveConfirmationLink:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
      security:
        - Server: []
      summary: Switch on welcome email
      tags:
        - custom-email-templates
      x-server: true
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/projects/{project_id}/welcome_email \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'
  /server/token/validate:
    post:
      description: |
        Validates a server JWT. Checks the following criteria:
        - the lifetime of the token
        - existence of the Login project
        - presence of an authentic signature from the `login.xsolla.com` server
        - value of the `request_type` field: `gateway_token`
      operationId: validate-server-jwt
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              example:
                token: Server token
              properties:
                token:
                  description: >-
                    The server token that is sent by the Xsolla Login server to
                    your server in response to the authentication, user
                    registration, or password reset request when using a [custom
                    data
                    storage](/doc/login/user-data-storage/custom-storage/#login_references_custom_storage).
                  type: string
                  nullable: false
              required:
                - token
              type: object
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 000-000
                      description: description
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Validate Server JWT
      tags:
        - token-management
      x-client: true
      x-tags:
        - token-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/server/token/validate?projectId=SOME_STRING_VALUE' \
              --data '{"token":"Server token"}'
  /social/{cross_social_provider_name}/cross_auth:
    get:
      description: >
        Exchanges a platform-specific authentication credential (a session
        ticket/exchange code/authorization token) from Epic Games, Steam, or
        Xbox for the JWT in your project (`projectId`).


        You will get the link to redirect the user to your project.


        To enable silent authentication, use the
        [instruction](https://developers.xsolla.com/doc/login/features/silent-authentication).
      operationId: jwt-silent-authentication
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            Name of the platform the user authorized in. Can be `steam`, `xbox`,
            `epicgames`.
          in: path
          name: cross_social_provider_name
          required: true
          schema:
            type: string
        - description: >
            List of parameters which must be requested from the user or social
            network additionally and written to the JWT. The parameters must be
            separated by a comma. For example, `email`.


            When the `email` is requested and the social network did not respond
            with the `email` value:

            * the user will be asked to input their email in the corresponding
            form if you integrated [Login
            Widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget),

            * the user must be asked to input their email in the corresponding
            form of your own interface if you integrated [Login
            API](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_api).
            Please send the URL of this form to your Customer Success Manager.


            After the email is inputted, the user receives an email confirmation
            [message](https://developers.xsolla.com/doc/login/how-to/email-customization/).
            To disable email confirmation, please contact your Customer Success
            Manager.
          in: query
          name: fields
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
            minItems: 1
        - description: >
            **Required**. A credential received from a platform during user
            authentication, encoded according to the Base64 standard. Depending
            on the social provider, it can be:   - an exchange code for Epic
            Games   - a session ticket for Steam   - an Xbox authorization token
            in the following format: `<xid>-<uhs>;XSTSToken`
          in: query
          name: session_ticket
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
        - description: >-
            Your app ID on the platform. <b>Required</b> if the platform where
            the user is authorized is Steam.
          in: query
          name: app_id
          schema:
            type: string
        - description: Code received from the platform.
          in: query
          name: code
          schema:
            type: string
        - description: >
            Shows how the Xsolla Login server should respond. If you set:

            * `true` value, the Xsolla Login server returns the 302 response
            code. URL for user redirection with user JWT will be in the
            `Location` header.

            * `false` value, the Xsolla Login server returns the 200 response
            code. URL for user redirection with user JWT will be in the response
            body.
          in: query
          name: is_redirect
          schema:
            type: boolean
            default: true
        - description: >-
            Do not create new user if they not exist yet. Existing users will be
            authorized as usual
          in: query
          name: no_user_creation
          schema:
            type: boolean
            default: false
        - description: >
            The deployment ID that the client is trying to authenticate with in
            Epic Games. This will impact interactions with other services that
            require a deployment. If the deployment is not public, only users
            who have been entitled will be able to log in. For more information
            on deployments and deployment IDs see Product, Sandbox, and
            Deployment IDs.

            Note: You must use this unique identifier to use the Ecommerce APIs,
            and to request access tokens used by game clients.
          in: query
          name: deployment_id
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  login_url:
                    description: >-
                      URL with the `token` parameter to redirect the user to
                      your project.
                    type: string
                    nullable: false
                required:
                  - login_url
                type: object
        '302':
          description: Redirection
          headers:
            Location:
              description: >-
                URL with the `token` parameter to redirect the user to your
                project.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 010-015
                      description: 'Social network authentication failed: steam.'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Silent authentication
      tags:
        - cross-platform
      x-client: true
      x-tags:
        - cross-platform
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/social/{cross_social_provider_name}/cross_auth?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&fields=SOME_ARRAY_VALUE&session_ticket=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0&app_id=SOME_STRING_VALUE&code=SOME_STRING_VALUE&is_redirect=true&no_user_creation=false&deployment_id=SOME_STRING_VALUE'
  /social/{provider_name}/login_redirect:
    get:
      description: >-
        Redirects the user to the page for authentication via the specified
        social network.
      operationId: jwt-auth-via-social-network
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            List of parameters which must be requested from the user or social
            network additionally and written to the JWT. The parameters must be
            separated by a comma. For example, `email`.


            When the `email` is requested and the social network did not respond
            with the `email` value:

            * the user will be asked to input their email in the corresponding
            form if you integrated [Login
            Widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget),

            * the user must be asked to input their email in the corresponding
            form of your own interface if you integrated [Login
            API](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_api).
            Please send the URL of this form to your Customer Success Manager.


            After the email is inputted, the user receives an email confirmation
            [message](https://developers.xsolla.com/doc/login/how-to/email-customization/).
            To disable email confirmation, please contact your Customer Success
            Manager.
          in: query
          name: fields
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
            minItems: 1
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: provider_name
          required: true
          schema:
            type: string
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of social networks will be sorted from most to least used,
            according to the variable value.
          in: query
          name: locale
          schema:
            type: string
            minLength: 2
        - description: |
            Arrange xsolla wallet form behaivior values:
            * `true` show only passwordless by phone,
            * `false` all auth methods.
          in: query
          name: phone_only
          x-isnullable: true
          schema:
            type: boolean
            default: false
      responses:
        '302':
          description: Redirection
          headers:
            Location:
              description: URL to authenticate the user via the social network.
              schema:
                type: string
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            GettingOAuth20TokenError:
              examples:
                response:
                  value:
                    error:
                      code: 003-025
                      description: Error occurred while getting OAuth 2.0 access token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Auth via social network
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/social/{provider_name}/login_redirect?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&fields=SOME_ARRAY_VALUE&payload=SOME_STRING_VALUE&with_logout=0&locale=SOME_STRING_VALUE&phone_only=false'
  /social/{provider_name}/login_url:
    get:
      description: >
        Gets the link for authentication via the social network. The link is
        valid for 10 minutes.


        You can get the link by this call and add it to your button for
        authentication via the social network.
      operationId: jwt-get-link-for-social-auth
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            List of parameters which must be requested from the user or social
            network additionally and written to the JWT. The parameters must be
            separated by a comma. For example, `email`.


            When the `email` is requested and the social network did not respond
            with the `email` value:

            * the user will be asked to input their email in the corresponding
            form if you integrated [Login
            Widget](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_widget),

            * the user must be asked to input their email in the corresponding
            form of your own interface if you integrated [Login
            API](https://developers.xsolla.com/doc/login/integration-guide/integrate-solution/#login_guide_integration_api).
            Please send the URL of this form to your Customer Success Manager.


            After the email is inputted, the user receives an email confirmation
            [message](https://developers.xsolla.com/doc/login/how-to/email-customization/).
            To disable email confirmation, please contact your Customer Success
            Manager.
          in: query
          name: fields
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
            minItems: 1
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: provider_name
          required: true
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
        - description: |
            Arrange xsolla wallet form behaivior values:
            * `true` show only passwordless by phone,
            * `false` all auth methods.
          in: query
          name: phone_only
          x-isnullable: true
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  url: http://someurl.com
                properties:
                  url:
                    description: URL for authentication via the social network.
                    type: string
                required:
                  - url
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            GettingOAuth20TokenError:
              examples:
                response:
                  value:
                    error:
                      code: 003-025
                      description: Error occurred while getting OAuth 2.0 access token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Get link for social auth
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/social/{provider_name}/login_url?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&fields=SOME_ARRAY_VALUE&payload=SOME_STRING_VALUE&with_logout=0&phone_only=false'
  /social/{provider_name}/login_with_token:
    post:
      description: >-
        Authenticates the user with the access token using social network
        credentials.
      operationId: jwt-auth-via-access-token-of-social-network
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
        - description: >
            Name of the social network connected to the Login in Publisher
            Account.


            Can have the following values:
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`google`](https://developers.google.com/identity/protocols/oauth2),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`qq_mobile`](https://wiki.connect.qq.com/oauth2-0%E7%AE%80%E4%BB%8B).
          in: path
          name: provider_name
          required: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/oauth-20-auth-via-access-token-of-social-networkBody
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  token: >-
                    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlc3RAZ21haWwuY29tIiwiZXhwIjoxNjU4MjE5OTYyLCJncm91cHMiOlt7ImlkIjoyLCJuYW1lIjoiZGVmYXVsdCIsImlzX2RlZmF1bHQiOnRydWV9XSwiaWF0IjoxNjU4MTMzNTYyLCJpZCI6IjY1NDYzNjQ4NTcxMjY1NCIsImlzX21hc3RlciI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly9sb2dpbi54c29sbGEuY29tIiwibmFtZSI6IlRlc3QgdGVzdCIsInBheWxvYWQiOiIxMjM0NTY3ODkwIiwicGljdHVyZSI6IiIsInByb21vX2VtYWlsX2FncmVlbWVudCI6ZmFsc2UsInByb3ZpZGVyIjoiZmFjZWJvb2siLCJwdWJsaXNoZXJfaWQiOjEsInNlcnZlcl9jdXN0b21faWQiOiIxMjM0NTY3ODkwIiwic29jaWFsX2FjY2Vzc190b2tlbiI6ImZhY2Vib29rX3Rva2VuIiwic3ViIjoiYWU5OTQ2NjQtYTRkMi00ODJjLTkyYjAtZmZiNzY3NWQ5ZDE1IiwidHlwZSI6InNvY2lhbCIsInVzZXJuYW1lIjpudWxsLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IkhYc01WUlpkbXdrbmVzWTBtaTRKVDFYSVJuN21TOGVOaHNRcWk1OG5rQmsiLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6IjEzNzU5MjNiLTg3ZjMtNGEyMC1hYzJiLWQwYTI4NzMwZTQyMCJ9.tn5VqaT15MZlI5Jhfii2WC-jr_TwH2J1q27fSRi1EBs
                properties:
                  token:
                    description: Xsolla Login user JWT.
                    type: string
                    x-isnullable: false
                required:
                  - token
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Auth via access token of social network
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/social/{provider_name}/login_with_token?projectId=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \
              --data '{"access_token":"string","access_token_secret":"string","openid":"string"}'
  /social/{provider_name}/refresh_token:
    post:
      description: |
        Refreshes social token by social refresh token from JWT.
      operationId: jwt-refresh-social-token
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be:
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_babka_button_integration_oauth_client_creation),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`generic`](/doc/login/authentication-options/custom-provider/).
          in: path
          name: provider_name
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                is_cross_provider:
                  description: >-
                    Wheather the ability to use a cross-platform account set up
                    for the provider.
                  type: boolean
                  nullable: false
              type: object
        required: true
        x-secret: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  token: some jwt
                properties:
                  token:
                    description: Login JWT with refreshed social tokens.
                    type: string
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            GettingOAuth20TokenError:
              examples:
                response:
                  value:
                    error:
                      code: 003-025
                      description: Error occurred while getting OAuth 2.0 access token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialNetworkIsDisabled:
              examples:
                response:
                  value:
                    error:
                      code: 010-032
                      description: >-
                        Authentication via this social network not enabled for
                        this Login project. Enable it in your Xsolla Publisher
                        Account > Login > your Login project > Social
                        connections.
      security:
        - Bearer: []
      summary: |
        [JWT] Refresh social tokens in JWT
      tags:
        - social-login
      x-client: true
      x-tags:
        - social-login
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/social/{provider_name}/refresh_token?projectId=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"is_cross_provider":true}'
  /templates/email/send:
    post:
      description: >-
        Sends an email based on a custom template and data that you provided to
        the specified email address.
      operationId: send-email-based-on-template
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: Data for sending an email based on a custom template.
              example:
                email: john_smith@gmail.com
                template:
                  id: Welcome email template
                  locale: en_US
                  params:
                    first_name: John
                    last_name: Smith
                    site_link: https://example.com/
              properties:
                email:
                  description: User email address.
                  maxLength: 255
                  minLength: 1
                  type: string
                  x-isnullable: false
                template:
                  properties:
                    id:
                      description: >-
                        Name of the template created by the [Create custom email
                        template](https://developers.xsolla.com/api/login/operation/create-custom-email-template)
                        call.
                      type: string
                      x-isnullable: false
                    locale:
                      description: >
                        Region of the texts that you provided in the template in
                        the `<language code>_<country code>` format, where:

                        * `language code`: language code in the [ISO
                        639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
                        format;

                        * `country code`: country/region code in the [ISO 3166-1
                        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                        format.
                      maxLength: 5
                      minLength: 5
                      type: string
                      x-isnullable: true
                    params:
                      additionalProperties:
                        type: string
                      description: >
                        JSON object with texts for all variables that you
                        specified in the email template created by the [Create
                        custom email
                        template](https://developers.xsolla.com/api/login/operation/create-custom-email-template)
                        call.


                        // If you created body of the template with

                        <pre>

                        Hi {{first_name}} {{last_name}}!<br>We will be glad to
                        see you on the {{site_link}} page.

                        </pre>

                        // Pass the following JSON here

                        <pre>

                        "params": {
                          "first_name": "John",
                          "last_name": "Smith",
                          "site_link": "https://example.com/"
                        }

                        </pre>
                      type: object
                  required:
                    - id
                  type: object
              required:
                - email
                - template
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            CustomTemplateNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-071
                      description: Custom email template not found.
            InvalidLocaleFormat:
              examples:
                response:
                  value:
                    error:
                      code: 002-027
                      description: Invalid locale parameter.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidCustomData:
              examples:
                response:
                  value:
                    error:
                      code: 003-070
                      description: >-
                        Custom variables for custom email template are the same
                        as default Xsolla variables for emails.
            InvalidEmailAddress:
              examples:
                response:
                  value:
                    error:
                      code: 010-018
                      description: Invalid email address.
            InvalidLocale:
              examples:
                response:
                  value:
                    error:
                      code: 002-027
                      description: Invalid locale parameter.
      security:
        - Server: []
      summary: Send email based on template
      tags:
        - custom-email-templates
      x-secret: false
      x-tags:
        - custom-email-templates
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/templates/email/send?projectId=SOME_STRING_VALUE' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"email":"john_smith@gmail.com","template":{"id":"Welcome email template","locale":"en_US","params":{"first_name":"John","last_name":"Smith","site_link":"https://example.com/"}}}'
  /token/validate:
    post:
      description: |
        Validates a user JWT based on the following criteria:
        - the lifetime of the token
        - existence of the Login project
        - presence of an authentic signature from the `login.xsolla.com` server
        - user existence
        - Validates the user JWT.
      operationId: validate-jwt
      requestBody:
        content:
          application/json:
            schema:
              example:
                token: jwtToken
              properties:
                token:
                  description: User JWT.
                  type: string
                  nullable: false
              required:
                - token
              type: object
        required: true
      responses:
        '204':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 000-000
                      description: description
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Validate user JWT
      tags:
        - token-management
      x-client: true
      x-tags:
        - token-management
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/token/validate \
              --data '{"token":"jwtToken"}'
  /user:
    post:
      description: >
        Creates a new user.


        * If you store user data at Xsolla or custom storage, the user will
        receive an account confirmation
        [message](https://developers.xsolla.com/doc/login/customization/email-customization/).

        * If you store user data at PlayFab, the user will *not* receive an
        account confirmation
        [message](https://developers.xsolla.com/doc/login/customization/email-customization/).

        * If you store user data at Firebase, the user will receive an account
        confirmation message from Firebase side.


        See the [Comparison of user data
        storages](https://developers.xsolla.com/doc/login/references/users-storages-comparison/)
        page for more information about user data storages.
      operationId: jwt-register-new-user
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
      requestBody:
        $ref: '#/components/requestBodies/oauth-20-register-new-userBody'
      responses:
        '200':
          description: OK (Account confirmation is disabled)
          content:
            application/json:
              schema:
                example:
                  login_url: http://someurl.com?token=XXXXXXX
                properties:
                  login_url:
                    description: >-
                      URL with the `token` and `remember_me` parameters to
                      redirect the user to after successful registration. The
                      `token` value is the user JWT.
                    type: string
                type: object
        '204':
          description: No Content (Account confirmation is enabled)
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 000-000
                      description: description
            UserAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-003
                      description: User with specified username already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Register new user
      tags:
        - login-and-password
      x-client: true
      x-tags:
        - login-and-password
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/user?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE' \
              --data '{"email":"john-email@email.com","fields":{"additional_agreement":true,"nickname":"Johny","promo_email_agreement":true},"password":"password123","username":"John"}'
  /user/resend_confirmation_link:
    post:
      description: >-
        Resends an account confirmation email to a user. To complete account
        confirmation, the user should follow the link in the email.
      operationId: jwt-resend-account-confirmation-email
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
      requestBody:
        $ref: >-
          #/components/requestBodies/oauth-20-resend-account-confirmation-emailBody
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            LoginURLIsNotConfiguredForThisProject:
              examples:
                response:
                  value:
                    error:
                      code: 010-003
                      description: >-
                        Login project for specified projectId parameter not
                        found or there are no Callback URLs in settings of your
                        Login project in Xsolla Publisher Account.
            WrongConfirmationCode:
              examples:
                response:
                  value:
                    error:
                      code: 010-010
                      description: Invalid confirmation code.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: |
        [JWT] Resend account confirmation email
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/user/resend_confirmation_link?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE' \
              --data '{"username":"john-email@email.com"}'
  /users:
    post:
      description: >
        Creates a new user with requested body parameters. These parameters are
        set as confirmed. Combination of parameters passed to the body must
        include at least `email` or `phone_number` parameter. The call is used
        only if you set up [Xsolla
        storage](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_xsolla).
        <div class="notice"><strong>Notice</strong><br>[Rate limits for
        server-side methods](/api/login/overview/#section/Rate-limits) are
        applied to this method.</div>
      operationId: register-new-user-from-server
      parameters:
        - description: >-
            Login project ID from [Publisher
            Account](https://publisher.xsolla.com/).
          in: query
          name: projectId
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              description: User details.
              example:
                email: asd123@asd123.asd
                external_account_id: 1234567890asdfghjkl
                phone_number: 123456789
              properties:
                email:
                  description: User email address.
                  type: string
                  x-isnullable: true
                external_account_id:
                  description: User ID from your game.
                  type: string
                  x-isnullable: true
                phone_number:
                  description: >-
                    User phone number. Is used for authentication via a phone
                    number.
                  pattern: ^\+(\d){5,25}$
                  type: string
                  x-isnullable: true
                phone_number_verified:
                  description: Flag indicates that the phone number has been verified.
                  type: boolean
                  x-isnullable: true
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  user_id: ff449154-7e2f-11e8-ad67-d89d67155224
                properties:
                  user_id:
                    description: >-
                      The Xsolla Login user ID. You can find it in **your Login
                      project > Users > Username/ID** section of Publisher
                      Account.
                    type: string
                    x-isnullable: false
                required:
                  - user_id
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidEmailAddress:
              examples:
                response:
                  value:
                    error:
                      code: 010-018
                      description: Invalid email address.
            UnavailableProjectMethod:
              examples:
                response:
                  value:
                    error:
                      code: 003-020
                      description: Call unavailable for this Login project.
            UserWithSpecifiedEmailAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-004
                      description: User with specified email address already exists.
            UserWithSpecifiedPhoneAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-012
                      description: User with specified phone number already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Register new user from server
      tags:
        - passwordless
      x-server: true
      x-tags:
        - passwordless
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/users?projectId=SOME_STRING_VALUE' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"email":"asd123@asd123.asd","external_account_id":"1234567890asdfghjkl","phone_number":123456789}'
  /users/account/code:
    post:
      description: >
        Creates the code for linking the [platform
        account](/api/login/overview/#section/Glossary/Platform-account) to the
        existing [main
        account](/api/login/overview/#section/Glossary/Main-account) when the
        user logs in to the game via a gaming console.


        The call is used with [Link accounts by code
        request](https://developers.xsolla.com/api/login/operation/link-accounts-by-code).
      operationId: create-code-for-linking-accounts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  code:
                    description: Code for linking.
                    example: '123456'
                    type: string
                    x-isnullable: false
                required:
                  - code
                type: object
              examples:
                response:
                  value:
                    code: '123456'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-002
                      description: User not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MismatchProjectType:
              examples:
                response:
                  value:
                    error:
                      code: 003-033
                      description: Mismatch project type.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Create code for linking accounts
      tags:
        - account-linking
      x-client: true
      x-tags:
        - account-linking
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/account/code \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/account/link:
    post:
      description: >
        Links the [platform
        account](/api/login/overview/#section/Glossary/Platform-account) to the
        existing [main
        account](/api/login/overview/#section/Glossary/Main-account) by the
        code.


        To link accounts, the game server uses this call with the response from
        the [Create code for linking
        accounts](https://developers.xsolla.com/api/login/operation/create-code-for-linking-accounts)
        request.
      operationId: link-accounts-by-code
      requestBody:
        content:
          application/json:
            schema:
              description: Data for linking a platform account.
              example:
                code: 234155
                platform: xbox,
                publisher_project_id: 12423354,
                user_id: 4352354,
              properties:
                code:
                  description: Code by which service links accounts.
                  maxLength: 6
                  minLength: 6
                  type: string
                  x-isnullable: false
                platform:
                  description: >-
                    Name of chosen Social Provider. Can be `steam`, `xbox`,
                    `epicgames`, `psn`.
                  type: string
                  x-isnullable: false
                project_id:
                  description: >
                    Shadow Login ID from Publisher Account.


                    **Shadow Login** is a project which ID you do not need to
                    pass to this call. Contact your Customer Success Manager to
                    set it up.
                  format: uuid
                  type: string
                  x-isnullable: true
                publisher_project_id:
                  description: >
                    Project ID from Publisher Account which you make a request
                    for.


                    If you specify it, but do not specify the `project_id`
                    parameter, the service will be linked to its `project_id`.
                    Contact your Customer Success Manager to link `project_id`
                    to `publisher_project_id`.
                  type: integer
                  x-isnullable: true
                user_id:
                  description: User ID from Social Provider.
                  type: string
                  x-isnullable: false
              required:
                - user_id
                - platform
                - code
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            MismatchProjectType:
              examples:
                response:
                  value:
                    error:
                      code: 003-033
                      description: Mismatch project type.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Link accounts by code
      tags:
        - account-linking
      x-server: true
      x-tags:
        - account-linking
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/account/link \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"code":234155,"platform":"xbox,","publisher_project_id":"12423354,","user_id":"4352354,"}'
  /users/account/link_external_id:
    post:
      description: >
        Links a user from your game to a user from your Login project via an
        external ID. You will not be able to link the same external ID to
        different users and update the external ID of a user if they already
        have it.


        You can find an external ID in:

        * a user JWT after successful authentication as a value of the
        `external_account_id` claim,

        * a response of the [Get user
        details](https://developers.xsolla.com/api/login/operation/get-user-details)
        call as a value of the `external_id` parameter.
      operationId: link-user-ids-via-external-id
      requestBody:
        content:
          application/json:
            schema:
              description: Data for linking users via an external ID.
              example:
                external_account_id: A1234BB23
                user_id: 6bd371c2-8044-11e9-b0a8-39deff2bb627
              properties:
                external_account_id:
                  description: >-
                    User ID from your game. Used as an external ID by which
                    users will be linked.
                  maxLength: 255
                  minLength: 1
                  type: string
                  x-isnullable: false
                user_id:
                  description: >-
                    The Xsolla Login user ID. You can find it in **Publisher
                    Account** > your Login project > **Users** >
                    **Username/ID**.
                  format: uuid
                  type: string
                  x-isnullable: false
              required:
                - external_account_id
                - user_id
              type: object
        required: true
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
            InvalidParameter:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-002
                      description: User not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            ExternalIDAlreadyLinked:
              examples:
                response:
                  value:
                    error:
                      code: 003-037
                      description: External account ID already linked to other user.
            UserAlreadyHasAnExternalID:
              examples:
                response:
                  value:
                    error:
                      code: 003-036
                      description: User already has external account ID.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Link user IDs via external ID
      tags:
        - account-linking
      x-server: true
      x-tags:
        - account-linking
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/account/link_external_id \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"external_account_id":"A1234BB23","user_id":"6bd371c2-8044-11e9-b0a8-39deff2bb627"}'
  /users/age/check:
    post:
      description: >-
        Checks user’s age for a particular region. The age requirements depend
        on the region. Service determines the user’s location by the IP address.
      operationId: check-users-age
      requestBody:
        content:
          application/json:
            schema:
              properties:
                dob:
                  description: User’s birth date in the `YYYY-MM-DD` format.
                  format: date
                  type: string
                  nullable: false
                project_id:
                  description: Login ID from Publisher Account.
                  format: uuid
                  type: string
                  nullable: false
              required:
                - dob
                - project_id
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  accepted:
                    description: >-
                      Shows whether the user reached the required age or not.
                      The parameter can have the `true` or `false` value.
                    type: boolean
                    nullable: false
                required:
                  - accepted
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      summary: Check user age
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/age/check \
              --data '{"dob":"2019-08-24","project_id":"405d8375-3514-403b-8c43-83ae74cfe0e9"}'
  /users/linking_info:
    post:
      description: >
        The call will return:

        * user ID if the user has linked the [main
        account](/api/login/overview/#section/Glossary/Main-account).

        * user ID if the user has linked the [platform
        account](/api/login/overview/#section/Glossary/Platform-account).

        * `xl_uid=null` if the user does not have a linked account.
      operationId: get-users-ids-by-social-id-and-platform
      requestBody:
        content:
          application/json:
            schema:
              description: List of social IDs and platforms which need user ID.
              example:
                publisher_project_id: 12423354
                users:
                  - platform: xbox
                    user_id: 4352354
              properties:
                project_id:
                  description: Login ID from Publisher Account.
                  format: uuid
                  type: string
                  x-isnullable: true
                publisher_project_id:
                  description: >
                    Project ID from Publisher Account which you make a request
                    for.


                    If you specify it, but do not specify `project_id`
                    parameter, service will be found linked to its `project_id`.
                    Contact your Customer Success Manager to link `project_id`
                    to `publisher_project_id`.
                  type: integer
                  x-isnullable: true
                users:
                  description: >-
                    Social ID and platform for which it is needed to get user
                    ID.
                  items:
                    properties:
                      platform:
                        description: >-
                          Name of chosen Social Provider. Can be `steam`,
                          `xbox`, `epicgames`, `psn`.
                        type: string
                        x-isnullable: false
                      user_id:
                        description: User ID from Social Provider.
                        type: string
                        x-isnullable: false
                    required:
                      - user_id
                      - platform
                    type: object
                  maxItems: 50
                  type: array
              required:
                - users
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  - email: johnsmith@mail.com
                    external_account_id: A1234BB23
                    platform: xbox
                    user_id: '12334'
                    xl_uid: 48b39231-27ac-4cfc-b0bf-9815dbb3ada1
                items:
                  properties:
                    email:
                      description: User email address.
                      type: string
                      nullable: true
                    external_account_id:
                      description: >-
                        User ID from your game. Used as an external ID by which
                        users will be linked.
                      type: string
                      nullable: true
                    platform:
                      description: >-
                        Name of chosen Social Provider. Can be `steam`, `xbox`,
                        `epicgames`, `psn`.
                      type: string
                      nullable: false
                    user_id:
                      description: User ID from Social Provider.
                      type: string
                      nullable: false
                    xl_uid:
                      description: >-
                        The Xsolla Login user ID. You can find it in **Publisher
                        Account** > Login settings > **Users** >
                        **Username/ID**.
                      type: string
                      nullable: true
                  required:
                    - xl_uid
                    - user_id
                    - platform
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: Get user IDs by social ID and platform
      tags:
        - search
      x-server: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/linking_info \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"publisher_project_id":12423354,"users":[{"platform":"xbox","user_id":4352354}]}'
  /users/login/server_custom_id:
    post:
      description: >-
        Authenticates a user by a particular custom ID. If the user does not
        exist, they are created.
      operationId: auth-by-custom-id
      parameters:
        - description: >
            Login project ID from Publisher Account. If you do not specify it,
            [shadow
            Login](/api/login/overview/#section/Glossary/Shadow-Login-project)
            will be used for the specified `publisher_project_id` parameter.


            Shadow Login ID you do not need to pass to this call.
          in: query
          name: projectId
          schema:
            type: string
            format: uuid
        - description: >-
            Your custom data. The value of the parameter will be returned in the
            `payload` claim of the **user JWT**. Recommended maximum length less
            than 500 characters. Note, that this parameter is only available if
            you use a custom user data storage.
          in: query
          name: payload
          x-isnullable: true
          schema:
            type: string
        - description: >
            Project ID from Publisher Account which you make a request for.


            If you specify it, but do not specify `project_id` parameter,
            service will be found linked to its `project_id`. Contact your
            Customer Success Manager to link `project_id` to
            `publisher_project_id`.
          in: query
          name: publisher_project_id
          schema:
            type: integer
        - description: >
            Shows whether to deactivate the existing user JWT values and
            activate the one generated by this call. Can have the following
            values:

            * `1` to deactivate the existing values and activate a new one,

            * `0` to keep the existing values activated.
          in: query
          name: with_logout
          x-isnullable: true
          schema:
            type: string
            default: '0'
      requestBody:
        content:
          application/json:
            schema:
              description: User’s details.
              example:
                attributes:
                  - attr_type: server
                    key: company
                    permission: private
                    value: facebook-promo
                  - attr_type: server
                    key: custom-id
                    permission: private
                    value: 48582
                server_custom_id: 1234567890asdfghjkl
                social_profile:
                  platform: xbox
                  user_id: 4352354
                user_profile:
                  nickname: John_Doe_1337
              properties:
                attributes:
                  description: >-
                    User attributes that are updated or created on authduring
                    authentication.
                  items:
                    properties:
                      attr_type:
                        description: >
                          Definition of user’s access level to service
                          attributes:
                            * `client` - A user-editable attribute. The values for this type of attributes are entered by a user or specified according to the in-game logics on the client side. For example, the name and character stats, game difficulty level, etc.
                            * `server` - A read-only attribute. The values for this type of attributes are entered and edited on the server side of your application. We recommend that you use them for configuration of game character stats or user parameters that shouldn’t change regularly. For example, chance to get a bonus, game character key parameters, user categories, etc.
                        enum:
                          - client
                          - server
                        type: string
                      key:
                        description: >-
                          Name of attribute that is used to identify user’s
                          attribute. Must be unique per user.
                        maxLength: 256
                        pattern: '[A-Za-z0-9_]+'
                        type: string
                        nullable: false
                      permission:
                        description: >-
                          Definition of user’s access level to other users’
                          attributes.
                        enum:
                          - private
                          - public
                        type: string
                      read_only:
                        type: boolean
                      value: {}
                    required:
                      - key
                      - value
                      - attr_type
                      - permission
                    type: object
                  type: array
                  x-isnullable: false
                server_custom_id:
                  description: >-
                    Custom ID that already exists on your server. **Note:** It
                    is not the same ID as the Xsolla Login user ID.
                  maxLength: 256
                  type: string
                  x-isnullable: false
                social_profile:
                  description: User social profile.
                  properties:
                    platform:
                      description: Name of the social provider.
                      type: string
                      x-isnullable: false
                    user_id:
                      description: User ID from a social provider.
                      type: string
                      x-isnullable: false
                  required:
                    - user_id
                    - platform
                  type: object
                user_profile:
                  description: User profile. This fields describe the user data.
                  properties:
                    nickname:
                      description: >-
                        User nickname. The value will be added to the
                        <code>nickname</code> field in the user JWT. Can't be
                        empty. Spaces are allowed, but will be trimmed before
                        and after the nickname. Can be non-unique. You can
                        change the user's nickname value in the Xsolla system
                        using the same method.
                      maxLength: 255
                      type: string
                      x-isnullable: false
                  required:
                    - nickname
                  type: object
              required:
                - server_custom_id
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  token: >-
                    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6IiIsImV4cCI6MTY1MzEyMzk5MCwiZ3JvdXBzIjpbXSwiaWF0IjoxNjUzMDM3NTkwLCJpc3MiOiJodHRwczovL2xvZ2luLnhzb2xsYS5jb20iLCJwdWJsaXNoZXJfaWQiOjMsInNlcnZlcl9jdXN0b21faWQiOiJteS1jdXN0b20taWQtbm90LWxpbmtlZCIsInN1YiI6IjI0MTBkNmMzLWFhZDEtNGY0OS04ODNlLTQ2Y2FkM2ZiMmJjMiIsInR5cGUiOiJzZXJ2ZXJfY3VzdG9tX2lkIiwidXNlcm5hbWUiOm51bGwsInhzb2xsYV9sb2dpbl9hY2Nlc3Nfa2V5IjoiSFhzTVZSWmRtd2tuZXNZMG1pNEpUMVhJUm43bVM4ZU5oc1FxaTU4bmtCayIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiMTM3NTkyM2ItODdmMy00YTIwLWFjMmItZDBhMjg3MzBlNDIwIn0.D8dFMN5Bmgnpejq1EhZUZQP_D5iFhpO_RXnVyE03qUI
                properties:
                  token:
                    description: Xsolla Login user JWT.
                    type: string
                required:
                  - token
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AccessDenied:
              examples:
                response:
                  value:
                    error:
                      code: 010-026
                      description: Xsolla Login server or resource owner denied request.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 003-061
                      description: Object not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SocialProfileLinkedToAnotherUser:
              examples:
                response:
                  value:
                    error:
                      code: 010-016
                      description: This social account already linked to another user.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Server: []
      summary: |
        [JWT] Auth by custom ID
      tags:
        - server-custom-id
      x-server: true
      x-tags:
        - server-custom-id
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/users/login/server_custom_id?projectId=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&publisher_project_id=SOME_INTEGER_VALUE&with_logout=0' \
              --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \
              --data '{"attributes":[{"attr_type":"server","key":"company","permission":"private","value":"facebook-promo"},{"attr_type":"server","key":"custom-id","permission":"private","value":48582}],"server_custom_id":"1234567890asdfghjkl","social_profile":{"platform":"xbox","user_id":4352354},"user_profile":{"nickname":"John_Doe_1337"}}'
  /users/me:
    get:
      description: Gets details of the user authenticated by the JWT.
      operationId: get-user-details
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: User details.
                properties:
                  ban:
                    description: >-
                      Details of the user ban. The value is `null` for the users
                      not from the ban list.
                    properties:
                      date_from:
                        description: >-
                          Date when the user was banned in the [ISO
                          8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                        type: string
                      date_to:
                        description: >-
                          Date until the user remains banned in the [ISO
                          8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                        type: string
                      reason:
                        description: Reason the user ban.
                        type: string
                    required:
                      - date_from
                      - date_to
                    type: object
                    nullable: true
                  birthday:
                    description: User birth date in the `YYYY-MM-DD` format.
                    type: string
                    nullable: true
                  connection_information:
                    description: >-
                      User birth date confirmed by
                      [okname](https://www.ok-name.co.kr/). For Korean users
                      only.
                    type: string
                    nullable: true
                  country:
                    description: User country.
                    type: string
                    nullable: true
                  devices:
                    items:
                      properties:
                        device:
                          description: Manufacturer and model name of the device.
                          type: string
                          x-isnullable: false
                        id:
                          description: >-
                            Device ID generated by the Xsolla Login server. It
                            **is not** the same as the `device_id` parameter
                            from the Auth via device ID
                            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
                            and [OAuth
                            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
                            call.
                          type: integer
                          x-isnullable: false
                        last_used_at:
                          description: >-
                            Date and time of the last user login via the device
                            in the [RFC 3339
                            format](https://www.ietf.org/rfc/rfc3339.txt).
                          type: string
                          x-isnullable: false
                        type:
                          description: Type of the device.
                          enum:
                            - android
                            - ios
                          type: string
                          x-isnullable: false
                      required:
                        - id
                        - type
                        - device
                        - last_used_at
                      type: object
                    type: array
                  email:
                    description: User email address.
                    type: string
                    nullable: true
                  external_id:
                    description: >-
                      ID of the user in your game. To use the ID from your game,
                      link the IDs by the [Link user IDs via external
                      ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)
                      call.
                    type: string
                    nullable: true
                  first_name:
                    description: User first name.
                    type: string
                    nullable: true
                  gender:
                    description: |
                      User gender. Can be:
                      * `f` for female
                      * `m` for male
                      * `other`
                      * `prefer not to answer`
                    enum:
                      - f
                      - m
                      - other
                      - prefer not to answer
                    type: string
                    nullable: true
                  groups:
                    description: Details about the groups the user was added to.
                    items:
                      properties:
                        id:
                          description: Group ID.
                          type: integer
                        is_default:
                          description: Shows whether the group is default or not.
                          type: boolean
                        is_deletable:
                          description: >-
                            Shows whether the group can be deleted or not.
                            Default groups can’t be deleted.
                          type: boolean
                        name:
                          description: Group name.
                          type: string
                      required:
                        - id
                        - name
                        - is_default
                        - is_deletable
                      type: object
                    type: array
                  id:
                    description: User ID.
                    type: string
                    nullable: false
                  is_anonymous:
                    description: >-
                      Shows whether the user is anonymous or not. The anonymous
                      user is a user created via device ID or custom ID and
                      doesn’t have an alternative authentication method added
                      (e.g., username/email and password).
                    type: boolean
                  is_last_email_confirmed:
                    type: boolean
                    nullable: true
                  is_user_active:
                    type: boolean
                    nullable: false
                  last_login:
                    description: >-
                      Date of the last user login in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                    nullable: false
                  last_name:
                    description: User last name.
                    type: string
                    nullable: true
                  name:
                    description: User name in a social network.
                    type: string
                    nullable: true
                  nickname:
                    description: User nickname.
                    type: string
                    nullable: true
                  phone:
                    description: >-
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                      This phone number is used only for passing the two-factor
                      authentication.
                    type: string
                    nullable: true
                  phone_auth:
                    description: >-
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                      This phone number is used to authenticate the user.
                    type: string
                    nullable: true
                  picture:
                    description: Link to the user profile picture.
                    type: string
                    nullable: true
                  registered:
                    description: >-
                      Date of user registration in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                    nullable: false
                  tag:
                    description: >-
                      User tag without "#" at the beginning. Can have no unique
                      value and can be used in the [Search users by
                      nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                      call.
                    type: string
                    nullable: true
                  username:
                    description: Username.
                    type: string
                    nullable: true
                required:
                  - id
                  - username
                  - nickname
                  - name
                  - tag
                  - picture
                  - birthday
                  - first_name
                  - last_name
                  - gender
                  - email
                  - phone
                  - phone_auth
                  - groups
                  - registered
                  - external_id
                  - last_login
                  - ban
                  - country
                  - connection_information
                  - is_anonymous
                  - devices
                  - is_last_email_confirmed
                  - is_user_active
                type: object
              examples:
                response:
                  value:
                    birthday: '1995-01-05'
                    country: USA
                    devices:
                      - device: Xiaomi Redmi 9 Pro
                        last_used_at: 2017-01-01T10:00:00+0000
                        type: android
                      - device: iPhone 10
                        last_used_at: 2017-01-01T10:00:00+0000
                        type: ios
                    email: johny-doe@example.com
                    external_id: '123'
                    first_name: John
                    gender: m
                    groups:
                      - id: 1
                        is_default: false
                        name: admin
                      - id: 5
                        is_default: true
                        name: user
                    id: '11'
                    is_anonymous: false
                    last_login: 2018-05-17T11:22:52+0000
                    last_name: Doe
                    nickname: Johny
                    phone: '+79136759832'
                    phone_auth: '79136759832'
                    registered: 2017-01-01T00:00:00+0000
                    tag: '234125'
                    username: Johny200
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - ExternalBearer: []
      summary: Get user details
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me \
              --header 'Authorization: Bearer BEARER_TOKEN'
    patch:
      description: Updates the details of the authenticated user by JWT.
      operationId: update-user-details
      requestBody:
        content:
          application/json:
            schema:
              description: Updated user details.
              example:
                birthday: '1990-12-12'
                first_name: John
                gender: f
                nickname: Johny
              properties:
                birthday:
                  description: >
                    User birth date in the following format: `YYYY-MM-DD`. Can
                    be changed only once.
                  type: string
                  x-isnullable: true
                first_name:
                  description: User first name.
                  maxLength: 255
                  type: string
                  x-isnullable: true
                gender:
                  description: |
                    User gender. Can be:
                    * `f` for female
                    * `m` for male
                    * `other`
                    * `prefer not to answer`
                  type: string
                  x-isnullable: true
                last_name:
                  description: User last name.
                  maxLength: 255
                  type: string
                  x-isnullable: true
                nickname:
                  description: User nickname.
                  maxLength: 255
                  type: string
                  x-isnullable: true
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: User details.
                properties:
                  ban:
                    description: >-
                      Details of the user ban. The value is `null` for the users
                      not from the ban list.
                    properties:
                      date_from:
                        description: >-
                          Date when the user was banned in the [ISO
                          8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                        type: string
                      date_to:
                        description: >-
                          Date until the user remains banned in the [ISO
                          8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                        type: string
                      reason:
                        description: Reason the user ban.
                        type: string
                    required:
                      - date_from
                      - date_to
                    type: object
                    nullable: true
                  birthday:
                    description: User birth date in the `YYYY-MM-DD` format.
                    type: string
                    nullable: true
                  connection_information:
                    description: >-
                      User birth date confirmed by
                      [okname](https://www.ok-name.co.kr/). For Korean users
                      only.
                    type: string
                    nullable: true
                  country:
                    description: User country.
                    type: string
                    nullable: true
                  devices:
                    items:
                      properties:
                        device:
                          description: Manufacturer and model name of the device.
                          type: string
                          x-isnullable: false
                        id:
                          description: >-
                            Device ID generated by the Xsolla Login server. It
                            **is not** the same as the `device_id` parameter
                            from the Auth via device ID
                            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
                            and [OAuth
                            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
                            call.
                          type: integer
                          x-isnullable: false
                        last_used_at:
                          description: >-
                            Date and time of the last user login via the device
                            in the [RFC 3339
                            format](https://www.ietf.org/rfc/rfc3339.txt).
                          type: string
                          x-isnullable: false
                        type:
                          description: Type of the device.
                          enum:
                            - android
                            - ios
                          type: string
                          x-isnullable: false
                      required:
                        - id
                        - type
                        - device
                        - last_used_at
                      type: object
                    type: array
                  email:
                    description: User email address.
                    type: string
                    nullable: true
                  external_id:
                    description: >-
                      ID of the user in your game. To use the ID from your game,
                      link the IDs by the [Link user IDs via external
                      ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)
                      call.
                    type: string
                    nullable: true
                  first_name:
                    description: User first name.
                    type: string
                    nullable: true
                  gender:
                    description: |
                      User gender. Can be:
                      * `f` for female
                      * `m` for male
                      * `other`
                      * `prefer not to answer`
                    enum:
                      - f
                      - m
                      - other
                      - prefer not to answer
                    type: string
                    nullable: true
                  groups:
                    description: Details about the groups the user was added to.
                    items:
                      properties:
                        id:
                          description: Group ID.
                          type: integer
                        is_default:
                          description: Shows whether the group is default or not.
                          type: boolean
                        is_deletable:
                          description: >-
                            Shows whether the group can be deleted or not.
                            Default groups can’t be deleted.
                          type: boolean
                        name:
                          description: Group name.
                          type: string
                      required:
                        - id
                        - name
                        - is_default
                        - is_deletable
                      type: object
                    type: array
                  id:
                    description: User ID.
                    type: string
                    nullable: false
                  is_anonymous:
                    description: >-
                      Shows whether the user is anonymous or not. The anonymous
                      user is a user created via device ID or custom ID and
                      doesn’t have an alternative authentication method added
                      (e.g., username/email and password).
                    type: boolean
                  is_last_email_confirmed:
                    type: boolean
                    nullable: true
                  is_user_active:
                    type: boolean
                    nullable: false
                  last_login:
                    description: >-
                      Date of the last user login in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                    nullable: false
                  last_name:
                    description: User last name.
                    type: string
                    nullable: true
                  name:
                    description: User name in a social network.
                    type: string
                    nullable: true
                  nickname:
                    description: User nickname.
                    type: string
                    nullable: true
                  phone:
                    description: >-
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                      This phone number is used only for passing the two-factor
                      authentication.
                    type: string
                    nullable: true
                  phone_auth:
                    description: >-
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                      This phone number is used to authenticate the user.
                    type: string
                    nullable: true
                  picture:
                    description: Link to the user profile picture.
                    type: string
                    nullable: true
                  registered:
                    description: >-
                      Date of user registration in the [ISO
                      8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                    type: string
                    nullable: false
                  tag:
                    description: >-
                      User tag without "#" at the beginning. Can have no unique
                      value and can be used in the [Search users by
                      nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                      call.
                    type: string
                    nullable: true
                  username:
                    description: Username.
                    type: string
                    nullable: true
                required:
                  - id
                  - username
                  - nickname
                  - name
                  - tag
                  - picture
                  - birthday
                  - first_name
                  - last_name
                  - gender
                  - email
                  - phone
                  - phone_auth
                  - groups
                  - registered
                  - external_id
                  - last_login
                  - ban
                  - country
                  - connection_information
                  - is_anonymous
                  - devices
                  - is_last_email_confirmed
                  - is_user_active
                type: object
              examples:
                response:
                  value:
                    birthday: '1995-01-05'
                    country: USA
                    devices:
                      - device: Xiaomi Redmi 9 Pro
                        last_used_at: 2017-01-01T10:00:00+0000
                        type: android
                      - device: iPhone 10
                        last_used_at: 2017-01-01T10:00:00+0000
                        type: ios
                    email: johny-doe@example.com
                    external_id: '123'
                    first_name: John
                    gender: m
                    groups:
                      - id: 1
                        is_default: false
                        name: admin
                      - id: 5
                        is_default: true
                        name: user
                    id: '11'
                    is_anonymous: false
                    last_login: 2018-05-17T11:22:52+0000
                    last_name: Doe
                    nickname: Johny
                    phone: '+79136759832'
                    phone_auth: '79136759832'
                    registered: 2017-01-01T00:00:00+0000
                    tag: '234125'
                    username: Johny200
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameterGender:
              examples:
                response:
                  value:
                    error:
                      code: 010-006
                      description: Invalid parameter gender.
      security:
        - Bearer: []
      summary: Update user details
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request PATCH \
              --url https://login.xsolla.com/api/users/me \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"birthday":"1990-12-12","first_name":"John","gender":"f","nickname":"Johny"}'
  /users/me/devices:
    get:
      description: Gets a list of user’s devices.
      operationId: get-users-devices
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                items:
                  properties:
                    device:
                      description: Manufacturer and model name of the device.
                      type: string
                      x-isnullable: false
                    id:
                      description: >-
                        Device ID generated by the Xsolla Login server. It **is
                        not** the same as the `device_id` parameter from the
                        Auth via device ID
                        ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
                        and [OAuth
                        2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
                        call.
                      type: integer
                      x-isnullable: false
                    last_used_at:
                      description: >-
                        Date and time of the last user login via the device in
                        the [RFC 3339
                        format](https://www.ietf.org/rfc/rfc3339.txt).
                      type: string
                      x-isnullable: false
                    type:
                      description: Type of the device.
                      enum:
                        - android
                        - ios
                      type: string
                      x-isnullable: false
                  required:
                    - id
                    - type
                    - device
                    - last_used_at
                  type: object
                type: array
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Get user devices
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me/devices \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/devices/{device_type}:
    post:
      description: >-
        Links the specified device to the user account. To enable authentication
        via device ID and linking, use the
        [instruction](/doc/login/authentication-options/device-id/#login_features_device_id_presettings).
      operationId: link-device-to-account
      parameters:
        - description: Type of the device.
          in: path
          name: device_type
          required: true
          schema:
            type: string
            enum:
              - android
              - ios
              - macos
              - windows
      requestBody:
        $ref: '#/components/requestBodies/jwt-auth-via-device-idBody'
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            DependencyService:
              examples:
                response:
                  value:
                    error:
                      code: 010-035
                      description: 'Dependency service unavailable: playfab.'
            InvalidParam:
              examples:
                response:
                  value:
                    error:
                      code: 002-027
                      description: Invalid device_id parameter.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Link device to account
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/devices/{device_type} \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"device":"ONEPLUS A6003","device_id":"1AF516EFACD646F6"}'
  /users/me/devices/{id}:
    delete:
      description: >-
        Unlinks the specified device from the user account. To enable
        authentication via device ID and unlinking, contact your Customer
        Success Manager.
      operationId: unlink-device-from-account
      parameters:
        - description: >-
            Device ID of the device you want to unlink. It is generated by the
            Xsolla Login server. It **is not** the same as the `device_id`
            parameter from the Auth via device ID
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
            call.
          in: path
          name: id
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            SpecifiedDeviceNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-053
                      description: Specified device not found.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserHasOnlyOneWayToLogIn:
              examples:
                response:
                  value:
                    error:
                      code: 010-006
                      description: The user has access to only one login method.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Unlink device from account
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/users/me/devices/{id} \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/email:
    get:
      description: Gets the email of the authenticated user by JWT.
      operationId: get-user-email
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: User details.
                example:
                  current_email: test@email.com
                properties:
                  current_email:
                    description: User email address.
                    type: string
                    nullable: true
                required:
                  - current_email
                type: object
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Get user email
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me/email \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/link_email_password:
    post:
      description: >-
        Adds the username/email and password authentication to the existing user
        account. This call is used if the account is created via device ID or
        phone number.
      operationId: add-username-email-auth-to-account
      parameters:
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              description: User details.
              example:
                email: john-email@email.com
                password: password123
                username: John
              properties:
                email:
                  description: User email address.
                  format: email
                  maxLength: 255
                  minLength: 1
                  type: string
                  x-isnullable: false
                password:
                  description: User password.
                  maxLength: 100
                  minLength: 6
                  type: string
                  x-isnullable: false
                promo_email_agreement:
                  default: 1
                  description: User consent to receive the newsletter.
                  enum:
                    - 0
                    - 1
                  minimum: 0
                  type: integer
                  x-isnullable: true
                username:
                  description: Username.
                  maxLength: 255
                  minLength: 1
                  type: string
                  x-isnullable: false
              required:
                - username
                - password
                - email
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  email_confirmation_required: true
                properties:
                  email_confirmation_required:
                    description: Whether the user has to confirm the email address or not.
                    type: boolean
                required:
                  - email_confirmation_required
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidParameters:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Request has invalid parameters.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserWithSpecifiedEmailAlreadyExists:
              examples:
                response:
                  value:
                    error:
                      code: 003-004
                      description: User with specified email address already exists.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Add username/email auth to account
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/users/me/link_email_password?login_url=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"email":"john-email@email.com","password":"password123","username":"John"}'
  /users/me/login_urls:
    get:
      description: >
        Gets links for authentication via the social networks enabled in **your
        Login project > General settings > Social Networks** section of
        [Publisher Account](https://publisher.xsolla.com/). The links are valid
        for 10 minutes.


        You can get the link by this call and add it to your button for
        authentication via the social network.
      operationId: get-links-for-social-auth
      parameters:
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of the links will be sorted from most to least used social
            networks, according to the variable value.
          in: query
          name: locale
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  - auth_url: http://someurl1.com
                    provider: provider1
                  - auth_url: http://someurl2.com
                    provider: provider2
                items:
                  properties:
                    auth_url:
                      description: Link for authentication via the social network.
                      type: string
                    provider:
                      description: Name of the social network.
                      type: string
                  required:
                    - provider
                    - auth_url
                  type: object
                type: array
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Get links for social auth
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/me/login_urls?locale=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/mfa:
    get:
      description: >-
        Gets user’s two-factor authentication settings. You must enable
        two-factor authentication for the Login project. Contact your Customer
        Success Manager to enable it.
      operationId: get-users-two-factor-authentication-settings
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                description: List of data about user’s two-factor authentication settings.
                example:
                  - change_restricted: false
                    enabled: true
                    mfa_type: email
                items:
                  properties:
                    change_restricted:
                      description: Shows whether the user can change the settings or not.
                      type: boolean
                      x-isnullable: false
                    enabled:
                      description: Status of two-factor authentication settings.
                      type: boolean
                      x-isnullable: false
                    mfa_type:
                      description: >
                        Type of the second factor. You must enable the specified
                        type for the Login project. Contact your Customer
                        Success Manager to set it up.
                      enum:
                        - email
                      type: string
                      x-isnullable: false
                  required:
                    - mfa_type
                    - enabled
                    - change_restricted
                  type: object
                type: array
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnavailableProjectMethod:
              examples:
                response:
                  value:
                    error:
                      code: 003-020
                      description: Call unavailable for this Login project.
      security:
        - Bearer: []
      summary: Get user’s two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-client: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me/mfa \
              --header 'Authorization: Bearer BEARER_TOKEN'
    post:
      description: >
        Updates user’s two-factor authentication settings. The user must confirm
        the changes by entering a one-time code.


        The workflow of using this call:

        1. The user enables or disables two-factor authentication.

        2. The application sends the request to the Xsolla Login server.

        3. The Xsolla Login server sends the one-time confirmation code to the
        user and returns the URL of the two-factor authentication page.

        4. The application redirects the user to the URL.

        5. The user enters the one-time code.

        6. New two-factor authentication settings are applied.


        You must enable two-factor authentication for the Login project. Contact
        your Customer Success Manager to enable it.
      operationId: update-users-two-factor-authentication-settings
      parameters:
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). For the scenario of a login
            error, the value should be identical to the the **Error callback
            URL** specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find the settings, go to
            **Login > your Login project** and select the **Callback URLs**
            section in the upper block. **Required** if there are several
            Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              description: Data of user’s two-factor authentication settings.
              example:
                enabled: true
                mfa_type: email
              properties:
                enabled:
                  default: false
                  description: >-
                    Status of two-factor authentication settings. Set `true`
                    value for enabling, and `false` value otherwise.
                  type: boolean
                  nullable: false
                locale:
                  description: >
                    Region in the `<language code>_<country code>` format,
                    where:

                    * `language code`: language code in the [ISO
                    639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
                    format;

                    * `country code`: country or region code in the [ISO 3166-1
                    alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
                    format.
                  type: string
                  nullable: false
                mfa_type:
                  description: >
                    Type of the second factor. You must enable the specified
                    type for the Login project. Contact your Customer Success
                    Manager to set it up.
                  enum:
                    - email
                  type: string
                  nullable: false
              required:
                - mfa_type
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: URL of the two-factor authentication page.
                example:
                  url: >-
                    https://xl-widget.xsolla.com/otp?projectId=c7569172-bd62-11e8-a7b5-0242ac111112&challenge_id=0ad73aba-e378-43bb-97c9-0e70af86b2f4&email=lo%2A%2A%2Ar5%40m%2A%2A%2Al.ru
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 002-050
                      description: User’s two-factor authentication settings not changed.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Update user’s two-factor authentication settings
      tags:
        - product-configuration-mfa
      x-client: true
      x-tags:
        - product-configuration-mfa
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/users/me/mfa?login_url=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"enabled":true,"mfa_type":"email"}'
  /users/me/phone:
    get:
      description: >
        Gets the phone number of the authenticated user by JWT.


        The phone number in this call is used only for passing the two-factor
        authentication.
      operationId: get-user-phone-number
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: User details.
                example:
                  phone_number: '+79551596067'
                properties:
                  phone_number:
                    description: >
                      User phone number according to [national
                      conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                    type: string
                    nullable: false
                required:
                  - phone_number
                type: object
        '204':
          description: No Content (Phone number is empty)
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Get user phone number
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me/phone \
              --header 'Authorization: Bearer BEARER_TOKEN'
    post:
      description: >
        Updates the phone number of the authenticated user by JWT.


        The phone number in this call is used only for passing the two-factor
        authentication.
      operationId: update-user-phone-number
      requestBody:
        content:
          application/json:
            schema:
              description: Updated user details.
              example:
                phone_number: '+79091091076'
              properties:
                phone_number:
                  description: >
                    Updated user phone number according to [national
                    conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
                  pattern: ^\+(\d){5,25}$
                  type: string
                  nullable: false
              required:
                - phone_number
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: (Unprocessable Entity) Semantic errors in the request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 002-008
                      description: Phone number already belongs to other user.
      security:
        - Bearer: []
      summary: Update user phone number
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/phone \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"phone_number":"+79091091076"}'
  /users/me/phone/{phoneNumber}:
    delete:
      description: >
        Deletes the phone number of the authenticated user by JWT.


        The phone number in this call is used only for passing the two-factor
        authentication.
      operationId: delete-user-phone-number
      parameters:
        - description: >
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
          in: path
          name: phoneNumber
          required: true
          schema:
            type: string
            pattern: ^(\+){0,1}(\d){5,25}$
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Delete user phone number
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/users/me/phone/{phoneNumber} \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/phone_link/confirm:
    post:
      description: |
        1. Call the method /users/me/phone_link/request
        2. Put your phone number in the body of the request
        3. Then u will receive the sms code
        4. Call method /users/me/phone_link/confirm with the code
      operationId: confirm-phone-number
      requestBody:
        content:
          application/json:
            schema:
              example:
                code: '1234'
                operation_id: 1ks4las34g
                phone_number: '+1234567890'
              properties:
                code:
                  type: string
                  nullable: false
                operation_id:
                  type: string
                  nullable: false
                phone_number:
                  type: string
                  nullable: false
              required:
                - phone_number
                - operation_id
                - code
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: (Unprocessable Entity) Semantic errors in the request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 002-008
                      description: Phone number already belongs to other user.
      security:
        - Bearer: []
      summary: Confirmation of request to link phone number to user
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/phone_link/confirm \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"code":"1234","operation_id":"1ks4las34g","phone_number":"+1234567890"}'
  /users/me/phone_link/request:
    post:
      description: |
        1. Call the method /users/me/phone_link/request
        2. Put your phone number in the body of the request
        3. Then u will receive the sms code
        4. Call method /users/me/phone_link/confirm with the code
      operationId: link-phone-number
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Phone number must be valid according to [national
                conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
              example:
                phone_number: '+1234567890'
              properties:
                phone_number:
                  type: string
                  nullable: false
              required:
                - phone_number
              type: object
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  operation_id:
                    description: ID of the confirmation code.
                    type: string
                required:
                  - operation_id
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: (Unprocessable Entity) Semantic errors in the request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: 002-008
                      description: Phone number already belongs to other user.
      security:
        - Bearer: []
      summary: Request to link phone number to user as new method of authorization
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/phone_link/request \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"phone_number":"+1234567890"}'
  /users/me/picture:
    delete:
      description: Deletes the profile picture of the authenticated user by JWT.
      operationId: delete-user-picture
      responses:
        '204':
          description: No Content
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Delete user picture
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/users/me/picture \
              --header 'Authorization: Bearer BEARER_TOKEN'
    post:
      description: Uploads the profile picture of the authenticated user by JWT.
      operationId: upload-user-picture
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                picture:
                  description: >-
                    User's avatar file. Maximum sixe: 20 MB. Supported formats:
                    PNG, JPG.
                  type: string
                  format: binary
              required:
                - picture
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                example:
                  picture: https://someurl.com/avatar1fjf1we1f8swe9ln.jpg
                properties:
                  picture:
                    description: CDN link with the user image.
                    type: string
                    nullable: false
                required:
                  - picture
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '415':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Upload user picture
      tags:
        - user-profile
      x-client: true
      x-tags:
        - user-profile
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/picture \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --header 'accept: multipart/form-data'
  /users/me/relationships:
    get:
      description: Gets a list of users added as friends of the authenticated user.
      operationId: get-users-friends
      parameters:
        - description: Parameter that is used for API pagination.
          in: query
          name: after
          schema:
            type: string
        - description: Maximum number of users that are returned at a time.
          in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
        - description: >
            Friends type. Can be:

            * `friends` to get the list of the users added to the friend list

            * `friend_requested` to get the list of the users to who got the
            friend request

            * `friend_requested_by` to get the list of the users from who sent a
            friend request

            * `blocked` to get the list of the users added to the friend list,
            but blocked

            * `blocked_by` to get the list of the users who blocked this user
          in: query
          name: type
          required: true
          schema:
            type: string
            enum:
              - friends
              - friend_requested
              - friend_requested_by
              - blocked
              - blocked_by
        - description: >
            Condition for sorting the users. Can be:

            * `by_nickname` to sort the list alphabetically by the nickname

            * `by_updated` to sort the list by the date when users recently
            added someone to their friend list or blocked them
          in: query
          name: sort_by
          required: true
          schema:
            type: string
            enum:
              - by_nickname
              - by_updated
        - description: |
            Condition for sorting the list of users. Can be:
            * `asc` to apply the `sort_by` value in ascending order
            * `desc` to apply the `sort_by` value in descending order
          in: query
          name: sort_order
          required: true
          schema:
            type: string
            enum:
              - asc
              - desc
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  next_after:
                    description: >-
                      Value of the `after` parameter that should be passed while
                      requesting this call for the next time.
                    type: string
                  next_url:
                    description: URL of the request for using this call for the next time.
                    type: string
                  relationships:
                    description: Friends details.
                    items:
                      example:
                        next_after: bmFtZS0ydXNlci0y
                        next_url: >-
                          https://login.xsolla.com/api/users/by_access_key/access-key-1/relationships?type=friend_requests&sort_by=by_name&limit=2&after=bmFtZS0ydXNlci0y
                        relationships:
                          - status_incoming: none
                            status_outgoing: friend_requested
                            updated: 1494499214.3501
                            user:
                              id: user-3
                              name: name-3
                              nickname: nick-2
                              picture: ''
                              tag: '423432'
                          - status_incoming: none
                            status_outgoing: friend_requested
                            updated: 1494499213.4718
                            user:
                              id: user-2
                              name: name-2
                              nickname: nick-2
                              picture: ''
                              tag: '3100'
                      properties:
                        status_incoming:
                          description: |
                            Type of the user. Can be:
                              * `none` if there is no action initiated for the user
                              * `friend` if the user is in the friend list of the requested one
                              * `friend_requested` if the friend request is sent to the user by the requested one
                              * `blocked` if the user is blocked by the requested one
                          type: string
                        status_outgoing:
                          description: |
                            Type of the requested user. Can be:
                              * `none` if there is no action initiated for the user
                              * `friend` if the user is in the friend list of the one with the specified JWT
                              * `friend_requested` if the friend request is sent to the user by the one with the specified JWT
                              * `blocked` if the user is blocked by the one with the specified JWT
                          type: string
                        updated:
                          description: >-
                            Time passed since the latest action of adding a
                            friend to the friend list or banning them in
                            seconds.
                          type: number
                        user:
                          description: User details.
                          properties:
                            id:
                              description: User ID.
                              type: string
                              nullable: false
                            name:
                              description: User name in a social network.
                              type: string
                              nullable: true
                            nickname:
                              description: User nickname.
                              type: string
                              nullable: true
                            picture:
                              description: Link to the user profile picture.
                              type: string
                              nullable: true
                            tag:
                              description: >-
                                User tag without "#" at the beginning. Can have
                                no unique value and can be used in the [Search
                                users by
                                nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                                call.
                              type: string
                              nullable: true
                          required:
                            - id
                            - nickname
                            - name
                            - picture
                            - tag
                          type: object
                      required:
                        - status_outgoing
                        - status_incoming
                        - user
                      type: object
                    type: array
                required:
                  - relationships
                  - next_url
                  - next_after
                type: object
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
        - APIKey: []
      summary: Get user friends
      tags:
        - user-friends
      x-client: true
      x-tags:
        - user-friends
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/me/relationships?after=SOME_STRING_VALUE&limit=20&type=SOME_STRING_VALUE&sort_by=SOME_STRING_VALUE&sort_order=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
    post:
      description: Updates the friend list of the authenticated user.
      operationId: update-users-friends
      requestBody:
        content:
          application/json:
            schema:
              description: Friends details.
              example:
                action: friend_request_add
                user: 00000000-0000-0000-0000-000000000000
              properties:
                action:
                  description: >
                    Type of the action. Can be:


                    * `friend_request_add` to send a friend request,

                    * `friend_request_cancel` to cancel the friend request that
                    was sent,

                    * `friend_request_approve` to confirm the friend request,

                    * `friend_request_deny` to cancel the friend request that
                    was received,

                    * `friend_remove` to delete the user from the friend list,

                    * `block` to block the user,

                    * `unblock` to unblock the user.
                  enum:
                    - friend_request_add
                    - friend_request_cancel
                    - friend_request_approve
                    - friend_request_deny
                    - friend_remove
                    - block
                    - unblock
                  type: string
                user:
                  description: ID of the user to change relationship with.
                  format: uuid
                  type: string
              type: object
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: >
                        Query parameter projectId value
                        '8513c0-0336-4927-b351-02ccec7f3cb6'

                        violated a constraint (This is not a valid UUID).
        '401':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Update user friends
      tags:
        - user-friends
      x-client: true
      x-tags:
        - user-friends
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url https://login.xsolla.com/api/users/me/relationships \
              --header 'Authorization: Bearer BEARER_TOKEN' \
              --data '{"action":"friend_request_add","user":"00000000-0000-0000-0000-000000000000"}'
  /users/me/social_friends:
    get:
      description: Gets a list of user’s friends from a social provider.
      operationId: get-social-account-friends
      parameters:
        - description: >-
            Name of the chosen social provider which you can enable in your
            [Publisher Account](https://publisher.xsolla.com/) > your Login
            project > **Social connections**. If you do not specify it, the call
            gets friends from all social providers.
          in: query
          name: platform
          schema:
            type: string
            enum:
              - steam
              - xbox
              - twitter
              - facebook
              - vk
        - description: Number of the elements from which the list is generated.
          in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            default: 0
        - description: Maximum number of friends that are returned at a time.
          in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 500
        - description: Shows whether the social friends are from your game.
          in: query
          name: with_xl_uid
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                example:
                  data:
                    - avatar: >-
                        https://pbs.twimg.com/profile_images/874276177757336672/kUuht00m_400x400.jpg
                      name: John Smith
                      platform: twitter
                      user_id: johnsmith007
                      xl_uid: 2a6e0079-d7a7-11e8-963b-82010aa80778
                    - avatar: >-
                        https://sun9-61.userapi.com/c10785/u105544870/e_dr9637b7.jpg?ava=1
                      name: Riley Parker
                      platform: vk
                      user_id: '19932423423424390'
                      xl_uid: 1e6e2979-d7f7-11e8-963b-42010aa80910
                  limit: 500
                  offset: 1000
                  total_count: 4000
                  with_xl_uid: true
                properties:
                  data:
                    description: List of data from social friends accounts.
                    items:
                      properties:
                        avatar:
                          description: Friend’s avatar from a social provider.
                          type: string
                          x-isnullable: true
                        name:
                          description: Friend’s name from a social provider.
                          type: string
                          x-isnullable: false
                        platform:
                          description: Name of a social provider.
                          type: string
                          nullable: false
                        tag:
                          description: >-
                            User tag without "#" at the beginning. Can have no
                            unique value and can be used in the [Search users by
                            nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                            call.
                          type: string
                          x-isnullable: true
                        user_id:
                          description: User ID from a social provider.
                          type: string
                          nullable: false
                        xl_uid:
                          description: >-
                            The Xsolla Login user ID. You can find it in
                            [Publisher Account](https://publisher.xsolla.com/) >
                            your Login project > **Users** > **Username/ID**.
                          type: string
                          x-isnullable: true
                      required:
                        - name
                        - platform
                        - user_id
                      type: object
                    type: array
                  limit:
                    description: Maximum number of friends that are returned at a time.
                    type: integer
                    x-isnullable: false
                  offset:
                    description: Number of the elements from which the list is generated.
                    type: integer
                    x-isnullable: false
                  platform:
                    description: Name of a social provider.
                    type: string
                    x-isnullable: true
                  total_count:
                    description: Total number of friends that you can get.
                    type: integer
                    x-isnullable: false
                  with_xl_uid:
                    description: Shows whether the social friends are from your game.
                    type: boolean
                    x-isnullable: false
                required:
                  - limit
                  - offset
                  - total_count
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Get social account friends
      tags:
        - user-friends
      x-client: true
      x-tags:
        - user-friends
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/me/social_friends?platform=SOME_STRING_VALUE&offset=0&limit=500&with_xl_uid=false' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/social_friends/update:
    post:
      description: >-
        Begins data processing to update a list of user’s friends from a social
        provider. Note that there may be a delay in data processing because of
        the Xsolla Login server or provider server high loads.
      operationId: update-social-account-friends
      parameters:
        - description: >-
            Name of the chosen social provider which you can enable in your
            [Publisher Account](https://publisher.xsolla.com/) > your Login
            project > **Social connections**. If you do not specify it, the call
            gets friends from all social providers.
          in: query
          name: platform
          schema:
            type: string
            enum:
              - steam
              - xbox
              - twitter
              - facebook
              - vk
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UnavailableProjectMethod:
              examples:
                response:
                  value:
                    error:
                      code: 003-020
                      description: Call unavailable for this Login project.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Update social account friends
      tags:
        - user-friends
      x-client: true
      x-tags:
        - user-friends
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request POST \
              --url 'https://login.xsolla.com/api/users/me/social_friends/update?platform=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/social_providers:
    get:
      description: Gets a list of the social networks linked to the user account.
      operationId: get-linked-networks
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                items:
                  properties:
                    full_name:
                      description: User name in a social network.
                      type: string
                      nullable: true
                    nickname:
                      description: User nickname in a social network.
                      type: string
                      nullable: true
                    picture:
                      description: Link to the user profile picture in a social network.
                      type: string
                      nullable: true
                    provider:
                      description: >-
                        Name of a social network connected to Login in Publisher
                        Account.
                      type: string
                      nullable: false
                    social_id:
                      description: User ID in a social network.
                      type: string
                      nullable: false
                  required:
                    - provider
                    - full_name
                    - social_id
                    - picture
                    - nickname
                  type: object
                type: array
              examples:
                response:
                  value:
                    - full_name: John Doe
                      nickname: John Doe
                      picture: https://someurl.com/some_picture.jpg
                      provider: vk
                      social_id: '12345678'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Get linked networks
      tags:
        - social-networks
      x-client: true
      x-tags:
        - social-networks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/me/social_providers \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/social_providers/{providerName}:
    delete:
      description: Deletes social network linked to the user account.
      operationId: delete-linked-networks
      parameters:
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: providerName
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InactiveUser:
              examples:
                response:
                  value:
                    error:
                      code: 003-007
                      description: User account not confirmed.
            WrongUsernameOrPassword:
              examples:
                response:
                  value:
                    error:
                      code: 003-001
                      description: Incorrect username or password.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserHasOnlyOneWayToLogIn:
              examples:
                response:
                  value:
                    error:
                      code: 010-006
                      description: The user has access to only one login method.
      security:
        - Bearer: []
      summary: |
        Delete linked network
      tags:
        - social-networks
      x-client: true
      x-tags:
        - social-networks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request DELETE \
              --url https://login.xsolla.com/api/users/me/social_providers/{providerName} \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/social_providers/{providerName}/login_redirect:
    get:
      description: >
        Links the social network, which is used by the player for
        authentication, to the user account.


        The linking flow:

        1. The user authenticates on the game website.

        2. The UI offers to link the social network to the user account.

        3. The Xsolla Login server redirects the user to the social network.

        4. The user authenticates in the social network.

        5. The Xsolla Login server links the social network to the user account.

        6. The Xsolla Login server redirects the user to the game website.
      operationId: link-social-network-to-account
      parameters:
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: providerName
          required: true
          schema:
            type: string
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find it, go to **Login >
            your Login project > General settings**. **Required** if there are
            several Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: |
            Arrange xsolla wallet form behaivior values:
            * `true` show only passwordless by phone,
            * `false` all auth methods.
          in: query
          name: phone_only
          x-isnullable: true
          schema:
            type: boolean
            default: false
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of social networks will be sorted from most to least used,
            according to the variable value.
          in: query
          name: locale
          schema:
            type: string
            minLength: 2
      responses:
        '302':
          description: Redirection
          headers:
            Location:
              description: URL to authenticate the user via the social network.
              schema:
                type: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Link social network to account
      tags:
        - social-networks
      x-client: true
      x-tags:
        - social-networks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/me/social_providers/{providerName}/login_redirect?login_url=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&phone_only=false&locale=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/me/social_providers/{providerName}/login_url:
    get:
      description: >
        Gets the URL to link the social network to the user’s account. The
        social network should be used for authentication.


        The linking flow:

        1. The user authenticates on the game website.

        2. The UI offers to link the social network to the user account.

        3. The Xsolla Login server returns social network URL.

        4. The game website redirects the user to the social network.

        5. The user authenticates in the social network.

        6. The Xsolla Login server links the social network to the user account.

        7. The Xsolla Login server redirects the user to the game website.
      operationId: get-url-to-link-social-network-to-account
      parameters:
        - description: >
            Name of the social network connected to Login in Publisher Account.
            Can be: [`amazon`](https://developer.amazon.com/docs/),
            [`apple`](https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/authenticating_users_with_sign_in_with_apple),
            [`xsolla`](/doc/login/how-to/xsolla-account-login/#login_xsolla_button_integration_oauth_client_creation),
            [`baidu`](https://developer.baidu.com/wiki/index.php?title=docs/oauth/client),
            [`battlenet`](https://develop.battle.net/documentation/guides/using-oauth/client-credentials-flow),
            [`discord`](https://discord.com/developers/docs/topics/oauth2),
            [`epicgames`](https://dev.epicgames.com/docs/dev-portal/client-credentials),
            [`facebook`](https://developers.facebook.com/docs/facebook-login/guides/advanced/manual-flow/),
            [`github`](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps),
            [`google`](https://developers.google.com/identity/protocols/oauth2),[`kakao`](https://developers.kakao.com/docs/latest/en/kakaologin/common),
            [`linkedin`](https://learn.microsoft.com/en-us/linkedin/shared/authentication/client-credentials-flow),
            [`mailru`](https://help.mail.ru/developers/oauth/settings),
            [`microsoft`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`msn`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`naver`](https://developers.naver.com/docs/common/openapiguide/appregister),
            [`ok`](https://apiok.ru/dev/app/create#section-2),
            [`paypal`](https://developer.paypal.com/home/#get-api-credentials),
            [`qq`](https://wiki.connect.qq.com/__trashed-2),
            [`reddit`](https://github.com/reddit-archive/reddit/wiki/OAuth2#getting-started),
            [`steam`](https://partner.steamgames.com/doc/webapi_overview/oauth),
            [`twitch`](https://dev.twitch.tv/docs/authentication/#registration),
            [`twitter`](https://developer.twitter.com/en/docs/authentication/oauth-1-0a/api-key-and-secret),
            [`vimeo`](https://developer.vimeo.com/api/guides/start#register-your-app),[`vk`](https://dev.vk.com/ru/api/getting-started),
            [`wechat`](https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html),
            [`weibo`](https://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E),
            [`xbox`](https://learn.microsoft.com/en-us/graph/permissions-reference),
            [`yahoo`](https://developer.yahoo.com/oauth2/guide),
            [`yandex`](https://yandex.ru/dev/id/doc/ru/register-client),
            [`youtube`](https://developers.google.com/youtube/registering_an_application).


            If you store user data in
            [PlayFab](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/#login_guide_connect_users_storage_playfab),
            only `twitch` is available.
          in: path
          name: providerName
          required: true
          schema:
            type: string
        - description: >-
            URL to redirect the user to after account confirmation, successful
            authentication, two-factor authentication configuration, or password
            reset confirmation. Must be identical to the **Callback URL**
            specified in the **URL** block of [Publisher
            Account](https://publisher.xsolla.com/). To find it, go to **Login >
            your Login project > General settings**. **Required** if there are
            several Callback URLs.
          in: query
          name: login_url
          schema:
            type: string
        - description: >
            URL to redirect the user to after account confirmation, successful
            authentication, or password reset confirmation. To set up this
            parameter, contact your Customer Success Manager or email to
            [csm@xsolla.com](mailto:csm@xsolla.com).

            <div class="notice"><strong>Notice</strong><br> The parameter is
            required if you have more than one redirect URI in your project
            settings.</div>
          in: query
          name: redirect_uri
          schema:
            type: string
        - description: |
            Arrange xsolla wallet form behaivior values:
            * `true` show only passwordless by phone,
            * `false` all auth methods.
          in: query
          name: phone_only
          x-isnullable: true
          schema:
            type: boolean
            default: false
        - description: >
            Region in the `<language code>_<country code>` format, where:


            * `language code`: language code in the [ISO
            639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
            format;

            * `country code`: country/region code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.


            The list of social networks will be sorted from most to least used,
            according to the variable value.
          in: query
          name: locale
          schema:
            type: string
            minLength: 2
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                properties:
                  url:
                    description: URL to authenticate the user via the social network.
                    type: string
                    nullable: false
                required:
                  - url
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
      security:
        - Bearer: []
      summary: Get URL to link social network to account
      tags:
        - social-networks
      x-client: true
      x-tags:
        - social-networks
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/me/social_providers/{providerName}/login_url?login_url=SOME_STRING_VALUE&redirect_uri=SOME_STRING_VALUE&phone_only=false&locale=SOME_STRING_VALUE' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/search/by_nickname:
    get:
      description: >
        Searches users by the `nickname` parameter and gets a list of them.
        Search can be performed instantly when the user starts entering the
        search parameter.


        The workflow of using this call:

        1. The user enters a nickname or tag, or nickname and tag.

        2. The Xsolla Login server searches for users in the Login project data
        of the user who initiated a search.


        The current user can execute this call only one time per second.
      operationId: search-users-by-nickname
      parameters:
        - description: >
            The search string that may contain:

            * nickname only. Search is performed by substring at the beginning
            of the nickname.

            * tag only, is used with "#" at the beginning. Search is performed
            by substring at the beginning of the tag.

            * nickname and tag together, is used with "#" and without space.
            Search is performed by full nickname and substring at the beginning
            of the tag.
          in: query
          name: nickname
          required: true
          schema:
            type: string
            minLength: 3
            maxLength: 255
        - description: Number of the elements from which the list is generated.
          in: query
          name: offset
          schema:
            type: integer
            minimum: 0
            maximum: 100
            default: 0
        - description: Maximum number of users that are returned at a time.
          in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                example:
                  offset: 3
                  total_count: 100
                  users:
                    - avatar: >-
                        https://pbs.twimg.com/profile_images/874276177757336672/kUuht00m_400x400.jpg
                      is_me: true
                      last_login: '2018-10-01T13:15:08+05:00'
                      nickname: Quana
                      registered: '2018-10-01T13:15:08+05:00'
                      tag: '24234'
                      user_id: 2a6e0079-d7a7-11e8-963b-82010aa80778
                    - avatar: >-
                        https://pbs.twimg.com/profile_images/874276177757336222/kUuht00m_400x400.jpg
                      is_me: false
                      last_login: '2018-10-01T13:15:08+05:00'
                      nickname: Quanare
                      registered: '2018-10-01T13:15:08+05:00'
                      tag: '249078'
                      user_id: 1e6e2979-d7f7-11e8-963b-42010aa80910
                    - is_me: false
                      last_login: '2018-10-01T13:15:08+05:00'
                      nickname: Quanare
                      registered: '2018-10-01T13:15:08+05:00'
                      tag: '434535'
                      user_id: 2e6e2979-d7f7-11e8-963b-42010aa80922
                properties:
                  offset:
                    description: Number of the elements from which the list is generated.
                    type: integer
                    x-isnullable: false
                  total_count:
                    description: Total number of users that you can get.
                    type: integer
                    x-isnullable: false
                  users:
                    description: List of users’ data.
                    items:
                      properties:
                        avatar:
                          description: URL of the user avatar.
                          type: string
                          x-isnullable: true
                        is_me:
                          description: Whether the user initiated a search.
                          type: boolean
                          nullable: false
                        last_login:
                          description: >-
                            Date of the last user login in the [RFC 3339
                            format](https://www.ietf.org/rfc/rfc3339.txt).
                          type: string
                          x-isnullable: false
                        nickname:
                          description: User nickname.
                          type: string
                          nullable: false
                        registered:
                          description: >-
                            Date of user registration in the [RFC 3339
                            format](https://www.ietf.org/rfc/rfc3339.txt).
                          type: string
                          x-isnullable: false
                        tag:
                          description: >-
                            User tag without "#" at the beginning. Can have no
                            unique value.
                          type: string
                          x-isnullable: true
                        user_id:
                          description: >-
                            The Xsolla Login user ID. You can find it in
                            [Publisher Account](https://publisher.xsolla.com/) >
                            your Login project > **Users** > **Username/ID**.
                          type: string
                          x-isnullable: false
                      required:
                        - user_id
                        - nickname
                        - is_me
                        - registered
                        - last_login
                      type: object
                    type: array
                required:
                  - users
                  - offset
                  - total_count
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            NicknameMissedInTheQuery:
              examples:
                response:
                  value:
                    error:
                      code: '0'
                      description: Nickname missed in query.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
              examples:
                response:
                  value:
                    AllowableNumberOfSearchUsersRequestsExceeded:
                      code: 002-054
                      description: >-
                        Allowed number of search attempts exceeded. Wait one
                        second before next request.
      security:
        - Bearer: []
      summary: Search users by nickname
      tags:
        - search
      x-client: true
      x-tags:
        - search
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url 'https://login.xsolla.com/api/users/search/by_nickname?nickname=SOME_STRING_VALUE&offset=0&limit=100' \
              --header 'Authorization: Bearer BEARER_TOKEN'
  /users/{user_id}/public:
    get:
      description: Gets the user information from their public profile by the user ID.
      operationId: get-user-public-profile
      parameters:
        - description: >-
            User ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users**.
          in: path
          name: user_id
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          x-isnullable: false
          content:
            application/json:
              schema:
                example:
                  avatar: >-
                    https://pbs.twimg.com/profile_images/874276177757336672/kUuht00m_400x400.jpg
                  last_login: '2018-10-01T13:15:08+05:00'
                  nickname: Quana
                  registered: '2018-10-01T13:15:08+05:00'
                  user_id: 2a6e0079-d7a7-11e8-963b-82010aa80778
                properties:
                  avatar:
                    description: URL of the user avatar.
                    type: string
                    x-isnullable: true
                  last_login:
                    description: >-
                      Date of the last user login in the [RFC 3339
                      format](https://www.ietf.org/rfc/rfc3339.txt).
                    type: string
                    x-isnullable: false
                  nickname:
                    description: User nickname.
                    type: string
                    nullable: true
                  registered:
                    description: >-
                      Date of user registration in the [RFC 3339
                      format](https://www.ietf.org/rfc/rfc3339.txt).
                    type: string
                    x-isnullable: false
                  tag:
                    description: >-
                      User tag without "#" at the beginning. Can have no unique
                      value and can be used in the [Search users by
                      nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                      call.
                    type: string
                    x-isnullable: true
                  user_id:
                    description: >-
                      The Xsolla Login user ID. You can find it in [Publisher
                      Account](https://publisher.xsolla.com/) > your Login
                      project > **Users** > **Username/ID**.
                    type: string
                    x-isnullable: false
                required:
                  - user_id
                  - registered
                  - last_login
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            InvalidToken:
              examples:
                response:
                  value:
                    error:
                      code: 002-016
                      description: Invalid token.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            UserNotFound:
              examples:
                response:
                  value:
                    error:
                      code: 003-002
                      description: User not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                description: Error.
                properties:
                  error:
                    properties:
                      code:
                        description: Error code.
                        example: 003-061
                        type: string
                        x-isnullable: false
                      description:
                        description: Error description.
                        example: Object not found.
                        type: string
                        x-isnullable: false
                      details:
                        description: Additional information.
                        type: object
                        x-isnullable: true
                    required:
                      - code
                      - description
                    type: object
                required:
                  - error
                type: object
            AllowableNumberOfRequestsExceeded:
              examples:
                response:
                  value:
                    error:
                      code: 010-005
                      description: Allowable number of requests exceeded.
      security:
        - Bearer: []
      summary: Get user public profile
      tags:
        - user-friends
      x-client: true
      x-tags:
        - user-friends
      x-codeSamples:
        - lang: Curl
          source: |-
            curl --request GET \
              --url https://login.xsolla.com/api/users/{user_id}/public \
              --header 'Authorization: Bearer BEARER_TOKEN'
x-tagGroups:
  - name: Login project configuration
    tags:
      - product-configuration-age-restrictions
      - custom-email-templates
      - product-configuration-rsa
      - product-configuration-social
      - product-configuration-groups
      - product-configuration-mfa
      - webhooks
  - name: User management
    tags:
      - user-profile
      - account-linking
      - password-reset
      - search
      - social-networks
      - user-friends
      - user-management-groups
      - bulk-user-management
  - name: Authentication methods
    tags:
      - server-custom-id
      - token-management
      - device-id
      - social-login
      - cross-platform
      - login-and-password
      - passwordless
      - sso
      - consent-management
  - name: User attributes management
    tags:
      - attributes-client
      - attributes-server
      - attributes-schema
servers:
  - url: https://login.xsolla.com/api
components:
  requestBodies:
    jwt-start-auth-by-emailBody:
      content:
        application/json:
          schema:
            properties:
              email:
                description: User email address.
                maxLength: 255
                minLength: 1
                type: string
                x-isnullable: false
              link_url:
                description: >-
                  URL to redirect the user to the status authentication page.
                  **Required** if the parameter `send_link` is `true`.
                format: uri
                type: string
              send_link:
                description: >
                  Shows whether a link is sent with the confirmation code in the
                  email or not.


                  The link can be used instead of the confirmation code to log
                  in.


                  If the parameter has the `true` value, the link is sent in the
                  email.
                type: boolean
            required:
              - email
            type: object
      required: true
    oauth-20-auth-via-access-token-of-social-networkBody:
      content:
        application/json:
          schema:
            description: Social credentials.
            properties:
              access_token:
                description: Access token received from a social network.
                type: string
                x-isnullable: false
              access_token_secret:
                description: >-
                  Parameter `oauth_token_secret` received from the authorization
                  request. **Required** for Twitter only.
                type: string
                x-isnullable: false
              openid:
                description: >-
                  Parameter `openid` received from a social network.
                  **Required** for Wechat only.
                type: string
                x-isnullable: false
            required:
              - access_token
            type: object
      required: true
    update-users-attributes-from-serverBody:
      content:
        application/json:
          schema:
            properties:
              attributes:
                description: >
                  List of attributes of the specified game.

                  To add attribute which does not exist, set this attribute to
                  the `key` parameter.

                  To update `value` of the attribute, specify its `key`
                  parameter and set new `value`. You can change several
                  attributes at a time.
                items:
                  properties:
                    attr_type:
                      default: client
                      description: |
                        Definition of user’s access level to service attributes:
                          * `client` - A user-editable attribute. The values for this type of attributes are entered by a user or specified according to the in-game logics on the client side. For example, the name and character stats, game difficulty level, etc.
                          * `server` - A read-only attribute. The values for this type of attributes are entered and edited on the server side of your application. We recommend that you use them for configuration of game character stats or user parameters that shouldn’t change regularly. For example, chance to get a bonus, game character key parameters, user categories, etc.
                      enum:
                        - client
                        - server
                      type: string
                      nullable: false
                    data_type:
                      description: Data type of attribute
                      enum:
                        - string
                        - number
                        - integer
                        - boolean
                      type: string
                      nullable: true
                    description:
                      description: Description of attribute from JSON Schema.
                      type: string
                      nullable: true
                    format:
                      description: >-
                        Format of attribute from JSON Schema. Can be
                        `date-time`, `date`, `time`, `duration`, `email`, `uri`,
                        `uuid` or other from JSON Schema
                        [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
                      type: string
                      nullable: true
                    key:
                      description: >-
                        Name of attribute that is used to identify user’s
                        attribute. Must be unique per user.
                      maxLength: 256
                      pattern: '[A-Za-z0-9_]+'
                      type: string
                      nullable: false
                    permission:
                      description: >-
                        Definition of user’s access level to other users’
                        attributes.
                      enum:
                        - public
                        - private
                      type: string
                      nullable: true
                    value:
                      description: Value of user’s attribute.
                      maxLength: 256
                      type: string
                      nullable: false
                  required:
                    - key
                    - value
                  type: object
                type: array
              publisher_id:
                description: >-
                  Your merchant ID the request is made for. Needed for request
                  authorizing.
                type: integer
                nullable: true
              publisher_project_id:
                description: >-
                  Project ID from Publisher Account which you want to update the
                  value of specified attributes for. If you do not specify it,
                  the method updates attributes that are general to all games
                  only.
                type: integer
              removing_keys:
                description: >-
                  List of attributes which you want to delete. If you specify
                  the same attribute in `attributes` parameter, it will not be
                  deleted.
                items:
                  type: string
                type: array
            required:
              - publisher_id
            type: object
      required: true
    oauth-20-auth-by-username-and-passwordBody:
      content:
        application/json:
          schema:
            description: User details.
            example:
              password: password123
              username: John
            properties:
              password:
                description: User password.
                type: string
                x-isnullable: false
              username:
                description: Username or email address.
                type: string
                x-isnullable: false
            required:
              - username
              - password
            type: object
      required: true
    jwt-auth-via-device-idBody:
      content:
        application/json:
          schema:
            description: Device info.
            example:
              device: ONEPLUS A6003
              device_id: 1AF516EFACD646F6
            properties:
              device:
                description: Manufacturer and model name of the device.
                maxLength: 100
                type: string
                x-isnullable: false
              device_id:
                description: >
                  Device ID:

                  * For Android, it is an
                  [ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID)
                  constant.

                  * For iOS, it is an
                  [identifierForVendor](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor?language=objc)
                  property.
                maxLength: 36
                minLength: 16
                type: string
                x-isnullable: false
            required:
              - device
              - device_id
            type: object
      required: true
    get-users-attributes-from-clientBody:
      content:
        application/json:
          schema:
            properties:
              keys:
                description: >-
                  List of attributes’ keys which you want to get. If you do not
                  specify them, the method returns all user’s attributes.
                items:
                  type: string
                type: array
              publisher_project_id:
                description: >-
                  Project ID you want to get attributes for from Publisher
                  Account. If you do not specify it, the method returns
                  attributes without the value of this parameter.
                type: integer
              user_id:
                description: >-
                  User ID which attributes you want to get. The request returns
                  only attributes with the public value of the `permission`
                  parameter. If you do not specify it or put the user ID of the
                  current user there, the request returns only attributes with
                  any value for the permission parameter.
                format: uuid
                type: string
                nullable: true
            type: object
    get-users-attributes-from-serverBody:
      content:
        application/json:
          schema:
            properties:
              keys:
                description: >-
                  List of attributes’ keys which you want to get. If you do not
                  specify them, the method returns all user’s attributes.
                items:
                  type: string
                type: array
              publisher_id:
                description: >-
                  Your merchant ID the request is made for. Need for request
                  authorizing.
                type: integer
                nullable: true
              publisher_project_id:
                description: >-
                  Project ID from Publisher Account which you want to get user’s
                  attributes for. If you do not specify it, it returns
                  attributes for all games with them.
                type: integer
            required:
              - publisher_id
            type: object
      required: true
    jwt-complete-auth-by-emailBody:
      content:
        application/json:
          schema:
            properties:
              code:
                description: Confirmation code.
                type: string
                x-isnullable: false
              email:
                description: User email address.
                maxLength: 255
                minLength: 1
                type: string
                x-isnullable: false
              operation_id:
                description: >-
                  ID of the confirmation code. You can find its value in the
                  response to a previous request.
                type: string
                x-isnullable: false
            required:
              - code
              - email
              - operation_id
            type: object
      required: true
    jwt-complete-auth-by-phone-numberBody:
      content:
        application/json:
          schema:
            properties:
              code:
                description: Confirmation code.
                type: string
                x-isnullable: false
              operation_id:
                description: ID of the confirmation code.
                type: string
                x-isnullable: false
              phone_number:
                description: User phone number.
                pattern: ^\+(\d){5,25}$
                type: string
                x-isnullable: false
            required:
              - code
              - phone_number
              - operation_id
            type: object
      required: true
    jwt-start-auth-by-phone-numberBody:
      content:
        application/json:
          schema:
            properties:
              link_url:
                description: >-
                  URL to redirect the user to the status authentication page.
                  **Required** if the parameter `send_link` is `true`.
                format: uri
                type: string
              phone_number:
                description: User phone number.
                pattern: ^\+(\d){5,25}$
                type: string
                x-isnullable: false
              send_link:
                description: >
                  Shows whether a link is sent with the confirmation code in the
                  SMS or not.


                  The link can be used instead of the confirmation code to log
                  in.


                  If the parameter has the `true` value, the link is sent in the
                  SMS.
                type: boolean
              source:
                description: to mark that request goes from Xsolla Link
                enum:
                  - xsolla_link
                type: string
            required:
              - phone_number
            type: object
      required: true
    oauth-20-register-new-userBody:
      content:
        application/json:
          schema:
            description: User details.
            example:
              email: john-email@email.com
              fields:
                additional_agreement: true
                nickname: Johny
                promo_email_agreement: true
              password: password123
              username: John
            properties:
              accept_consent:
                description: >-
                  Whether the user gave consent to processing of their personal
                  data.
                type: boolean
                x-isnullable: true
              email:
                description: User email address.
                maxLength: 255
                minLength: 1
                type: string
                x-isnullable: false
              fields:
                description: >-
                  Parameters used for [extended registration
                  form](https://developers.xsolla.com/doc/login/features/extended-registration-form/).
                  To use this feature, please contact your Customer Success
                  Manager.
                type: object
                x-isnullable: true
              password:
                description: User password.
                maxLength: 100
                minLength: 6
                type: string
                x-isnullable: false
              username:
                description: Username.
                maxLength: 255
                minLength: 3
                type: string
                x-isnullable: false
            required:
              - username
              - password
              - email
            type: object
      required: true
    oauth-20-resend-account-confirmation-emailBody:
      content:
        application/json:
          schema:
            example:
              username: john-email@email.com
            properties:
              username:
                description: Username or user email address.
                type: string
                x-isnullable: false
            required:
              - username
            type: object
      required: true
    create-custom-email-templateBody:
      content:
        application/json:
          schema:
            description: >-
              Email template data in HTML format. Use the [email development
              recommendations](https://developers.xsolla.com/doc/login/how-to/email-customization/#login_how_to_email_customization_recommendations).
            example:
              body: >-
                Hi {{first_name}} {{last_name}}!<br>We will be glad to see you
                on the {{site_link}} page.
              header: Welcome email
            properties:
              body:
                description: Email content without opening and closing body tags.
                type: string
                x-isnullable: false
              header:
                description: Email subject.
                type: string
                x-isnullable: false
            required:
              - header
              - body
            type: object
      required: true
    delete-user-groupsBody:
      content:
        application/json:
          schema:
            description: List of user groups ID.
            example:
              user_groups:
                - 1
                - 2
                - 3
            properties:
              user_groups:
                description: List of user groups ID.
                items:
                  type: integer
                type: array
            required:
              - user_groups
            type: object
      required: true
  securitySchemes:
    APIKey:
      description: access key from JWT user token
      in: header
      name: Authorization
      type: apiKey
    AttributesBearer:
      in: header
      name: Authorization
      type: apiKey
    AttributesServer:
      description: >-
        [Server token
        authorization](/api/login/overview/#section/Authentication/Getting-a-server-token).
      in: header
      name: X-SERVER-AUTHORIZATION
      type: apiKey
    Bearer:
      description: Bearer authentication. ```Bearer <JWT>```.
      in: header
      name: Authorization
      type: apiKey
    BearerCallback:
      description: Bearer authentication. ```Bearer <JWT>```.
      in: header
      name: Authorization
      type: apiKey
    ExternalBearer:
      in: header
      name: Authorization
      type: apiKey
    Server:
      description: >-
        [Server token
        authorization](/api/login/overview/#section/Authentication/Getting-a-server-token).
      in: header
      name: X-SERVER-AUTHORIZATION
      type: apiKey
  schemas:
    attribute:
      properties:
        key:
          description: >-
            Name of attribute that is used to identify user’s attribute. Must be
            unique per user.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        permission:
          description: Definition of user’s access level to other users’ attributes.
          enum:
            - public
            - private
          type: string
          nullable: true
        value:
          description: Value of user’s attribute.
          maxLength: 256
          type: string
          nullable: false
      required:
        - key
        - value
      type: object
    createInternalOauth20ProjectsClientParamsBodyAccessItems:
      properties:
        resource:
          description: Value for the specified `resource_name` parameter.
          type: string
          nullable: false
        resource_name:
          description: Resource name which client grants access for.
          enum:
            - product
            - publisher_id
            - publisher_project_id
          type: string
          nullable: false
      required:
        - resource_name
        - resource
      type: object
      x-go-gen-location: operations
    createXsollaOauth20ProjectsClientParamsBodyAccessItems:
      properties:
        resource:
          description: Value for the specified `resource_name` parameter.
          type: string
          nullable: false
        resource_name:
          description: Resource name which client grants access for.
          enum:
            - product
            - publisher_id
            - publisher_project_id
          type: string
          nullable: false
      required:
        - resource_name
        - resource
      type: object
      x-go-gen-location: operations
    deviceInfo:
      properties:
        device:
          description: Manufacturer and model name of the device.
          type: string
          x-isnullable: false
        id:
          description: >-
            Device ID generated by the Xsolla Login server. It **is not** the
            same as the `device_id` parameter from the Auth via device ID
            ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
            and [OAuth
            2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
            call.
          type: integer
          x-isnullable: false
        last_used_at:
          description: >-
            Date and time of the last user login via the device in the [RFC 3339
            format](https://www.ietf.org/rfc/rfc3339.txt).
          type: string
          x-isnullable: false
        type:
          description: Type of the device.
          enum:
            - android
            - ios
          type: string
          x-isnullable: false
      required:
        - id
        - type
        - device
        - last_used_at
      type: object
    error:
      properties:
        error_code:
          description: Error code.
          type: string
          nullable: false
        error_description:
          description: Error description.
          type: string
          nullable: false
      type: object
    errorResult:
      description: Error.
      properties:
        error:
          properties:
            code:
              description: Error code.
              example: 003-061
              type: string
              x-isnullable: false
            description:
              description: Error description.
              example: Object not found.
              type: string
              x-isnullable: false
            details:
              description: Additional information.
              type: object
              x-isnullable: true
          required:
            - code
            - description
          type: object
      required:
        - error
      type: object
    getAttribute:
      properties:
        data_type:
          description: Data type of attribute
          enum:
            - string
            - number
            - integer
            - boolean
          type: string
          nullable: true
        description:
          description: Description of attribute from JSON Schema.
          type: string
          nullable: true
        format:
          description: >-
            Format of attribute from JSON Schema. Can be `date-time`, `date`,
            `time`, `duration`, `email`, `uri`, `uuid` or other from JSON Schema
            [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
          type: string
          nullable: true
        key:
          description: Name of attribute that is used to identify user’s attribute.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        permission:
          description: Definition of user’s access level to other users’ attributes.
          enum:
            - public
            - private
          type: string
          nullable: true
        value:
          description: Value of user’s attribute.
          maxLength: 256
          type: string
          nullable: false
      required:
        - key
        - value
      type: object
    getConfigurableFieldsSocialProvider200:
      items:
        properties:
          displayName:
            description: Display field name
            type: string
            x-isnullable: false
          name:
            description: Field name
            type: string
            x-isnullable: false
          required:
            description: Is the field required
            type: boolean
            x-isnullable: false
          type:
            description: Field type
            type: string
            x-isnullable: false
          typeMetadata:
            additionalProperties: true
            description: Field metadata
            type: object
            x-omitempty: true
          value:
            type: string
            x-isnullable: true
        required:
          - name
          - displayName
          - type
          - typeMetadata
          - required
          - value
        type: object
        x-isnullable: false
      type: array
    getServerAttribute:
      properties:
        attr_type:
          default: client
          description: Definition of user’s access level to service attributes.
          enum:
            - client
            - server
          type: string
          nullable: false
        data_type:
          description: Data type of attribute
          enum:
            - string
            - number
            - integer
            - boolean
          type: string
          nullable: true
        description:
          description: Description of attribute from JSON Schema.
          type: string
          nullable: true
        format:
          description: >-
            Format of attribute from JSON Schema. Can be `date-time`, `date`,
            `time`, `duration`, `email`, `uri`, `uuid` or other from JSON Schema
            [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
          type: string
          nullable: true
        key:
          description: Name of attribute that is used to identify user’s attribute.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        permission:
          description: Definition of user’s access level to other users’ attributes.
          enum:
            - public
            - private
          type: string
          nullable: true
        readonly:
          description: The attribute is read-only
          type: boolean
          nullable: false
        value:
          description: Value of user’s attribute.
          maxLength: 256
          type: string
          nullable: false
      required:
        - key
        - value
        - readonly
      type: object
    getServerAttributeProjectId:
      properties:
        attr_type:
          default: client
          description: Definition of user’s access level to service attributes.
          enum:
            - client
            - server
          type: string
          nullable: false
        data_type:
          description: Data type of attribute
          enum:
            - string
            - number
            - integer
            - boolean
          type: string
          nullable: true
        description:
          description: Description of attribute from JSON Schema.
          type: string
          nullable: true
        format:
          description: >-
            Format of attribute from JSON Schema. Can be `date-time`, `date`,
            `time`, `duration`, `email`, `uri`, `uuid` or other from JSON Schema
            [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
          type: string
          nullable: true
        key:
          description: Name of attribute that is used to identify user’s attribute.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        permission:
          description: Definition of user’s access level to other users’ attributes.
          enum:
            - public
            - private
          type: string
          nullable: true
        publisher_project_id:
          description: Merchant Project ID
          type: integer
          nullable: true
        readonly:
          description: The attribute is read-only
          type: boolean
          nullable: false
        value:
          description: Value of user’s attribute.
          maxLength: 256
          type: string
          nullable: false
      required:
        - key
        - value
        - readonly
      type: object
    httpProblem:
      description: Error.
      properties:
        customData:
          description: >-
            A JSON object of custom data returned to the client. This will only
            be shown for errors that require custom data to be passed back.
          type: string
          x-isnullable: true
        detail:
          description: >-
            Expanded human-readable details. This string should not be shown to
            players.
          example: The given resource (123) does not exist
          type: string
          x-isnullable: false
        errorCode:
          description: >-
            Machine-readable error token string. This field should be used by
            the game to look up a localized and game-appropriate error to
            players.
          example: RESOURCE_NOT_FOUND
          type: string
          x-isnullable: false
        httpStatus:
          description: HTTP status code returned
          example: 404
          type: integer
          x-isnullable: false
        method:
          description: Method that was called
          example: RestGet
          type: string
          x-isnullable: false
        problemType:
          description: A relative link to the endpoint documentation.
          example: doc/rest/get.md
          type: string
          x-isnullable: false
        title:
          description: >-
            Simple human-readable title. This error should not be shown to
            players.
          example: No such resource
          type: string
          x-isnullable: false
      required:
        - problemType
        - title
        - detail
        - errorCode
        - httpStatus
        - method
      type: object
    item:
      example:
        id: 00000000-0000-0000-0000-00000000
        name: email_customization_complete
      properties:
        id:
          description: Generated UUID identificator
          type: string
          x-isnullable: false
        name:
          description: Given into request name of a new item
          type: string
      required:
        - id
        - name
      type: object
    jwk:
      properties:
        alg:
          description: The specific cryptographic algorithm used with the key.
          example: RS256
          type: string
          x-isnullable: false
        e:
          description: >-
            The exponent for the RSA public key. The value is encoded according
            to the Base64 standard.
          example: AQAB
          type: string
          x-isnullable: false
        kid:
          description: The unique identifier for the key.
          example: e600c72b-125a-4b30-86a5-9697af62f2a1
          type: string
          x-isnullable: false
        kty:
          description: The family of cryptographic algorithms used with the key.
          example: RSA
          type: string
          x-isnullable: false
        'n':
          description: >-
            The modulus for the RSA public key. The value is encoded according
            to the Base64 standard.
          example: >-
            eWVObHpsdWI5NFlnZXJUMDMwY29kcUV6dGpmVV9TNlg0RGJEQV9pVktrakFXdFlmUEhEenpfc1BDVDFBeHo2aXNaZGYzbEhwcV9nWVg0U3o=
          type: string
          x-isnullable: false
        use:
          description: >-
            How the key was meant to be used; `sig` represents the signature,
            `enc` represents the encryption.
          example: sig
          type: string
          x-isnullable: false
        x5c:
          description: >-
            The x.509 certificate chain. The first entry in the array is the
            certificate to use for token verification; the other certificates
            can be used to verify this first certificate.
          items:
            type: string
            x-isnullable: false
          type: array
          x-isnullable: false
          x-omitempty: true
        x5t:
          description: The thumbprint of the x.509 cert (SHA-1 thumbprint).
          example: NjU3NDI5ZTZhODU0YjQzMGFiYzkwNGNkZDkwNmZkMzZmOWEzNWVmMQ
          type: string
          x-isnullable: false
      required:
        - use
        - kty
        - kid
        - alg
      type: object
    jwks:
      example:
        keys:
          - alg: RS256
            e: '10001'
            kid: NjVBRjY5MDlCMUIwNzU4RTA2QzZFMDQ4QzQ2MDAyQjVDNjk1RTM2Qg
            kty: RSA
            'n': >-
              yeNlzlub94YgerT030codqEztjfU_S6X4DbDA_iVKkjAWtYfPHDzz_sPCT1Axz6isZdf3lHpq_gYX4Sz-cbe4rjmigxUxr-FgKHQy3HeCdK6hNq9ASQvMK9LBOpXDNn7mei6RZWom4wo3CMvvsY1w8tjtfLb-yQwJPltHxShZq5-ihC9irpLI9xEBTgG12q5lGIFPhTl_7inA1PFK97LuSLnTJzW0bj096v_TMDg7pOWm_zHtF53qbVsI0e3v5nmdKXdFf9BjIARRfVrbxVxiZHjU6zL6jY5QJdh1QCmENoejj_ytspMmGW7yMRxzUqgxcAqOBpVm0b-_mW3HoBdjQ
            use: sig
      properties:
        keys:
          description: >-
            The value of the 'keys' parameter is an array of JWK values.  By
            default, the order of the JWK values within the array does not imply
            an order of preference among them, although applications of JWK Sets
            can choose to assign a meaning to the order for their purposes, if
            desired.
          items:
            properties:
              alg:
                description: The specific cryptographic algorithm used with the key.
                example: RS256
                type: string
                x-isnullable: false
              e:
                description: >-
                  The exponent for the RSA public key. The value is encoded
                  according to the Base64 standard.
                example: AQAB
                type: string
                x-isnullable: false
              kid:
                description: The unique identifier for the key.
                example: e600c72b-125a-4b30-86a5-9697af62f2a1
                type: string
                x-isnullable: false
              kty:
                description: The family of cryptographic algorithms used with the key.
                example: RSA
                type: string
                x-isnullable: false
              'n':
                description: >-
                  The modulus for the RSA public key. The value is encoded
                  according to the Base64 standard.
                example: >-
                  eWVObHpsdWI5NFlnZXJUMDMwY29kcUV6dGpmVV9TNlg0RGJEQV9pVktrakFXdFlmUEhEenpfc1BDVDFBeHo2aXNaZGYzbEhwcV9nWVg0U3o=
                type: string
                x-isnullable: false
              use:
                description: >-
                  How the key was meant to be used; `sig` represents the
                  signature, `enc` represents the encryption.
                example: sig
                type: string
                x-isnullable: false
              x5c:
                description: >-
                  The x.509 certificate chain. The first entry in the array is
                  the certificate to use for token verification; the other
                  certificates can be used to verify this first certificate.
                items:
                  type: string
                  x-isnullable: false
                type: array
                x-isnullable: false
                x-omitempty: true
              x5t:
                description: The thumbprint of the x.509 cert (SHA-1 thumbprint).
                example: NjU3NDI5ZTZhODU0YjQzMGFiYzkwNGNkZDkwNmZkMzZmOWEzNWVmMQ
                type: string
                x-isnullable: false
            required:
              - use
              - kty
              - kid
              - alg
            type: object
          type: array
      type: object
    key:
      description: >-
        Cryptographic key. The parameters of the object represent key properties
        and its value.
      properties:
        alg:
          description: Specific cryptographic algorithm used with the key.
          type: string
          x-isnullable: false
        e:
          description: Exponent for the RSA public key.
          type: string
          x-isnullable: false
        kid:
          description: Unique key identifier.
          type: string
          x-isnullable: false
        kty:
          description: Family of cryptographic algorithms used with the key.
          type: string
          x-isnullable: false
        'n':
          description: Modulus for the RSA public key.
          type: string
          x-isnullable: false
        use:
          description: >-
            How the key was meant to be used. The `sig` value represents the
            signature.
          type: string
          x-isnullable: false
      required:
        - alg
        - kty
        - use
        - 'n'
        - e
        - kid
      type: object
    limit:
      default: 20
      description: Number of users that is returned when searching by attribute.
      maximum: 20
      minimum: 0
      type: integer
      nullable: false
    mailchimpIntegration:
      properties:
        export_status:
          description: Status of export new users at Mailchimp audience
          type: string
          x-isnullable: false
        from_email:
          description: Sender email used for Mailchimp audience
          type: string
          x-isnullable: false
        from_name:
          description: Sender name used for Mailchimp audience
          type: string
          x-isnullable: false
        list_id:
          description: Mailchimp audience ID
          type: string
          x-isnullable: false
        list_name:
          description: Mailchimp audience title
          type: string
          x-isnullable: false
      required:
        - from_email
        - from_name
        - list_name
        - list_id
        - export_status
      type: object
    mfa:
      properties:
        change_restricted:
          description: Shows whether the user can change the settings or not.
          type: boolean
          x-isnullable: false
        enabled:
          description: Status of two-factor authentication settings.
          type: boolean
          x-isnullable: false
        mfa_type:
          description: >
            Type of the second factor. You must enable the specified type for
            the Login project. Contact your Customer Success Manager to set it
            up.
          enum:
            - email
          type: string
          x-isnullable: false
      required:
        - mfa_type
        - enabled
        - change_restricted
      type: object
    oauth2Access:
      properties:
        resource:
          description: Value for the specified `resource_name` parameter.
          type: string
          nullable: false
        resource_name:
          description: Resource name which client grants access for.
          enum:
            - publisher_id
            - publisher_project_id
          type: string
          nullable: false
      required:
        - resource_name
        - resource
      type: object
    oauth2Client:
      properties:
        access:
          description: List of client resources which access is granted to.
          items:
            properties:
              resource:
                description: Value for the specified `resource_name` parameter.
                type: string
                nullable: false
              resource_name:
                description: Resource name which client grants access for.
                enum:
                  - publisher_id
                  - publisher_project_id
                type: string
                nullable: false
            required:
              - resource_name
              - resource
            type: object
          type: array
          nullable: true
        audience:
          description: List of domains for which token can be applied
          items:
            type: string
          type: array
        grant_types:
          description: >
            The type of getting the JWT. Can be:

            * `authorization_code` to exchange the code received in the
            authentication call to the JWT. The value of the `code` parameter
            must be specified.

            * `refresh_token` to get the refreshed JWT when the previous value
            is expired. The value of the `refresh_token` parameter must be
            specified.

            * `client_credentials` to get the server JWT. The values of the
            `client_id` and `client_secret` parameters must be specified.

            * `password` to get the JWT by authentication via login and password
            directly, `is_public` must have the `true` value.
          items:
            enum:
              - authorization_code
              - refresh_token
              - client_credentials
              - password
            type: string
          type: array
          nullable: true
        icon_url:
          description: URL for icon which will be display on auth/consent screen
          type: string
        id:
          description: Client ID.
          type: integer
          nullable: false
        is_public:
          default: false
          description: >-
            Defines whether the client is public (`true` value) or private
            (`false` value). If the client is public, you do not need to pass
            the client’s secret key to the [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call.
          type: boolean
          nullable: false
        lifetime:
          description: Lifetime of OAuth2 token in seconds.
          type: integer
        name:
          description: Client name.
          maxLength: 255
          minLength: 1
          type: string
          nullable: true
        project_id:
          description: Login ID which the list of clients will be found for.
          format: uuid
          type: string
          nullable: false
        redirect_uris:
          description: >-
            List of URIs which the Xsolla Login server can use to redirect the
            user after successful authentication.
          items:
            type: string
          type: array
          nullable: true
        response_types:
          description: >-
            Defines the response type of the Xsolla Login server. Must have the
            `code` value.
          items:
            enum:
              - code
            type: string
          type: array
          nullable: false
        scopes:
          description: >
            Scope is a mechanism in OAuth 2.0 to limit an application’s access
            to a user’s account.


            Can be:

            * `email` for [Auth via social
            network](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-social-network)
            or [Get link for social
            auth](https://developers.xsolla.com/api/login/operation/oauth-20-get-link-for-social-auth)
            calls to request an email from the user additionally.

            * `offline` to use `refresh_token` from [Generate
            JWT](https://developers.xsolla.com/api/login/operation/generate-jwt)
            call to refresh the JWT when it is expired.

            * `playfab` to write **SessionTicket** to the `session_ticket` claim
            of the JWT if you store user data at PlayFab.


            If you process your own values of the `scope` parameter, that are
            not mentioned above, you can set them when using this call. The
            Xsolla Login server does not process these values, but returns them
            in the received JWT.
          items:
            type: string
          type: array
          nullable: true
        secret:
          description: Client secret key.
          type: string
          nullable: true
      required:
        - id
        - project_id
        - redirect_uris
        - scopes
        - grant_types
        - is_public
        - access
      type: object
    publicUserInfo:
      properties:
        avatar:
          description: URL of the user avatar.
          type: string
          x-isnullable: true
        last_login:
          description: >-
            Date of the last user login in the [RFC 3339
            format](https://www.ietf.org/rfc/rfc3339.txt).
          type: string
          x-isnullable: false
        nickname:
          description: User nickname.
          type: string
          nullable: true
        registered:
          description: >-
            Date of user registration in the [RFC 3339
            format](https://www.ietf.org/rfc/rfc3339.txt).
          type: string
          x-isnullable: false
        tag:
          description: >-
            User tag without "#" at the beginning. Can have no unique value and
            can be used in the [Search users by
            nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
            call.
          type: string
          x-isnullable: true
        user_id:
          description: >-
            The Xsolla Login user ID. You can find it in [Publisher
            Account](https://publisher.xsolla.com/) > your Login project >
            **Users** > **Username/ID**.
          type: string
          x-isnullable: false
      required:
        - user_id
        - registered
        - last_login
      type: object
    relationship:
      example:
        next_after: bmFtZS0ydXNlci0y
        next_url: >-
          https://login.xsolla.com/api/users/by_access_key/access-key-1/relationships?type=friend_requests&sort_by=by_name&limit=2&after=bmFtZS0ydXNlci0y
        relationships:
          - status_incoming: none
            status_outgoing: friend_requested
            updated: 1494499214.3501
            user:
              id: user-3
              name: name-3
              nickname: nick-2
              picture: ''
              tag: '423432'
          - status_incoming: none
            status_outgoing: friend_requested
            updated: 1494499213.4718
            user:
              id: user-2
              name: name-2
              nickname: nick-2
              picture: ''
              tag: '3100'
      properties:
        status_incoming:
          description: |
            Type of the user. Can be:
              * `none` if there is no action initiated for the user
              * `friend` if the user is in the friend list of the requested one
              * `friend_requested` if the friend request is sent to the user by the requested one
              * `blocked` if the user is blocked by the requested one
          type: string
        status_outgoing:
          description: |
            Type of the requested user. Can be:
              * `none` if there is no action initiated for the user
              * `friend` if the user is in the friend list of the one with the specified JWT
              * `friend_requested` if the friend request is sent to the user by the one with the specified JWT
              * `blocked` if the user is blocked by the one with the specified JWT
          type: string
        updated:
          description: >-
            Time passed since the latest action of adding a friend to the friend
            list or banning them in seconds.
          type: number
        user:
          description: User details.
          properties:
            id:
              description: User ID.
              type: string
              nullable: false
            name:
              description: User name in a social network.
              type: string
              nullable: true
            nickname:
              description: User nickname.
              type: string
              nullable: true
            picture:
              description: Link to the user profile picture.
              type: string
              nullable: true
            tag:
              description: >-
                User tag without "#" at the beginning. Can have no unique value
                and can be used in the [Search users by
                nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                call.
              type: string
              nullable: true
          required:
            - id
            - nickname
            - name
            - picture
            - tag
          type: object
      required:
        - status_outgoing
        - status_incoming
        - user
      type: object
    respWebhookSettings:
      description: Webhook information.
      example:
        id: 2342423
        url: https://example.com/hook/second
      properties:
        id:
          description: Webhook ID.
          type: integer
          x-isnullable: false
        url:
          description: Valid URL to which the Xsolla Login server sends the webhook.
          format: uri
          maxLength: 500
          type: string
          x-isnullable: false
      required:
        - url
        - id
      type: object
    restriction:
      description: Request body for create restriction
      properties:
        age:
          maximum: 99
          minimum: 1
          type: integer
        country_code:
          description: >-
            Country code in the [ISO 3166-1
            alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
            Use `XX` to update default restrictions for all countries.
          pattern: ^[a-zA-Z]{2}$
          type: string
        rating_name:
          maxLength: 255
          type: string
      required:
        - age
        - country_code
      type: object
    searchUserInfo:
      properties:
        offset:
          description: Number of the elements from which the list is generated.
          type: integer
          x-isnullable: false
        total_count:
          description: Total number of users that you can get.
          type: integer
          x-isnullable: false
        users:
          description: List of users’ data.
          items:
            properties:
              avatar:
                description: URL of the user avatar.
                type: string
                x-isnullable: true
              is_me:
                description: Whether the user initiated a search.
                type: boolean
                nullable: false
              last_login:
                description: >-
                  Date of the last user login in the [RFC 3339
                  format](https://www.ietf.org/rfc/rfc3339.txt).
                type: string
                x-isnullable: false
              nickname:
                description: User nickname.
                type: string
                nullable: false
              registered:
                description: >-
                  Date of user registration in the [RFC 3339
                  format](https://www.ietf.org/rfc/rfc3339.txt).
                type: string
                x-isnullable: false
              tag:
                description: >-
                  User tag without "#" at the beginning. Can have no unique
                  value.
                type: string
                x-isnullable: true
              user_id:
                description: >-
                  The Xsolla Login user ID. You can find it in [Publisher
                  Account](https://publisher.xsolla.com/) > your Login project >
                  **Users** > **Username/ID**.
                type: string
                x-isnullable: false
            required:
              - user_id
              - nickname
              - is_me
              - registered
              - last_login
            type: object
          type: array
      required:
        - users
        - offset
        - total_count
      type: object
    searchUserInfoLite:
      description: List of users’ basic data.
      items:
        properties:
          avatar:
            description: URL of the user avatar.
            type: string
            x-isnullable: true
          first_name:
            description: First name.
            type: string
            nullable: true
          last_name:
            description: Last name.
            type: string
            nullable: true
          name:
            description: User name. Deprecated
            type: string
            nullable: true
          user_id:
            description: >-
              The Xsolla Login user ID. You can find it in [Publisher
              Account](https://publisher.xsolla.com/) > your Login project >
              **Users** > **Username/ID**.
            type: string
            x-isnullable: false
        required:
          - user_id
          - name
          - first_name
          - last_name
          - avatar
        type: object
      type: array
    serverAttribute:
      properties:
        attr_type:
          default: client
          description: |
            Definition of user’s access level to service attributes:
              * `client` - A user-editable attribute. The values for this type of attributes are entered by a user or specified according to the in-game logics on the client side. For example, the name and character stats, game difficulty level, etc.
              * `server` - A read-only attribute. The values for this type of attributes are entered and edited on the server side of your application. We recommend that you use them for configuration of game character stats or user parameters that shouldn’t change regularly. For example, chance to get a bonus, game character key parameters, user categories, etc.
          enum:
            - client
            - server
          type: string
          nullable: false
        data_type:
          description: Data type of attribute
          enum:
            - string
            - number
            - integer
            - boolean
          type: string
          nullable: true
        description:
          description: Description of attribute from JSON Schema.
          type: string
          nullable: true
        format:
          description: >-
            Format of attribute from JSON Schema. Can be `date-time`, `date`,
            `time`, `duration`, `email`, `uri`, `uuid` or other from JSON Schema
            [specification](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7.3)
          type: string
          nullable: true
        key:
          description: >-
            Name of attribute that is used to identify user’s attribute. Must be
            unique per user.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        permission:
          description: Definition of user’s access level to other users’ attributes.
          enum:
            - public
            - private
          type: string
          nullable: true
        value:
          description: Value of user’s attribute.
          maxLength: 256
          type: string
          nullable: false
      required:
        - key
        - value
      type: object
    shippingAddress:
      description: Shipping address.
      properties:
        address_line1:
          description: Address line 1.
          type: string
        address_line2:
          description: Address line 2.
          type: string
        administrative_area:
          description: Administrative district.
          type: string
        carrier_facility:
          type: string
        comment:
          description: Delivery comment.
          type: string
        company:
          description: Receiver company.
          type: string
        country:
          description: Country.
          type: string
        country_iso:
          description: ISO coutry code.
          type: string
        email:
          description: Receiver email.
          type: string
        first_name:
          description: Receiver first name.
          type: string
        is_primary:
          description: |
            Whether the address is main. Can be `1` or `0`.
          type: integer
        last_name:
          description: Receiver last name.
          type: string
        locality:
          description: Locality.
          type: string
        phone:
          description: >-
            Contact phone number in the [national
            convention](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers)
            format.
          type: string
        room:
          description: Number of the room.
          type: string
        zip:
          description: ZIP code.
          type: string
      required:
        - locality
        - address_line1
        - zip
        - country
        - first_name
      type: object
    socialAuthUrl:
      properties:
        auth_url:
          description: Link for authentication via the social network.
          type: string
        provider:
          description: Name of the social network.
          type: string
      required:
        - provider
        - auth_url
      type: object
    socialFriendsResponse200:
      properties:
        data:
          description: List of data from social friends accounts.
          items:
            properties:
              avatar:
                description: Friend’s avatar from a social provider.
                type: string
                x-isnullable: true
              name:
                description: Friend’s name from a social provider.
                type: string
                x-isnullable: false
              platform:
                description: Name of a social provider.
                type: string
                nullable: false
              tag:
                description: >-
                  User tag without "#" at the beginning. Can have no unique
                  value and can be used in the [Search users by
                  nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
                  call.
                type: string
                x-isnullable: true
              user_id:
                description: User ID from a social provider.
                type: string
                nullable: false
              xl_uid:
                description: >-
                  The Xsolla Login user ID. You can find it in [Publisher
                  Account](https://publisher.xsolla.com/) > your Login project >
                  **Users** > **Username/ID**.
                type: string
                x-isnullable: true
            required:
              - name
              - platform
              - user_id
            type: object
          type: array
        limit:
          description: Maximum number of friends that are returned at a time.
          type: integer
          x-isnullable: false
        offset:
          description: Number of the elements from which the list is generated.
          type: integer
          x-isnullable: false
        platform:
          description: Name of a social provider.
          type: string
          x-isnullable: true
        total_count:
          description: Total number of friends that you can get.
          type: integer
          x-isnullable: false
        with_xl_uid:
          description: Shows whether the social friends are from your game.
          type: boolean
          x-isnullable: false
      required:
        - limit
        - offset
        - total_count
      type: object
    socialProvider:
      properties:
        full_name:
          description: User name in a social network.
          type: string
          nullable: true
        nickname:
          description: User nickname in a social network.
          type: string
          nullable: true
        picture:
          description: Link to the user profile picture in a social network.
          type: string
          nullable: true
        provider:
          description: Name of a social network connected to Login in Publisher Account.
          type: string
          nullable: false
        social_id:
          description: User ID in a social network.
          type: string
          nullable: false
      required:
        - provider
        - full_name
        - social_id
        - picture
        - nickname
      type: object
    socialProviderCustomSettings:
      description: Settings for thin tune provider
      properties:
        auth_content_type:
          description: Custom Content-Type for call url_resource_owner_details
          type: string
          nullable: true
        auth_header:
          default: Authorization
          description: Authorization header name
          type: string
          nullable: true
        auth_param:
          default: access_token
          description: >-
            Authorization query-param name (used at url_resource_owner_details).
            Use it if identity provider wants authorization at query-params
          type: string
          nullable: true
        token_type:
          default: Bearer
          description: Type oauth2, eg. OAuth or Bearer
          type: string
          nullable: true
        use_pkce:
          default: false
          description: Use PKCE
          type: boolean
          nullable: true
      type: object
    socialRelationship:
      description: Details about friends from linked social networks.
      properties:
        avatar:
          description: CDN link with the user avatar.
          type: string
        name:
          description: User name.
          type: string
        provider:
          description: Name of the social network where the user is added to friends.
          type: string
        user_id:
          description: User ID.
          format: uuid
          type: string
      required:
        - user_id
        - name
        - avatar
        - provider
      type: object
    targetAttribute:
      description: Attribute is used to get users’ list.
      properties:
        key:
          description: >-
            Name of attribute that is used to identify user’s attribute. Must be
            unique per user.
          maxLength: 256
          pattern: '[A-Za-z0-9_]+'
          type: string
          nullable: false
        value:
          description: >-
            Value of user’s attribute. Needed for getting users with the `key`
            parameter with this value. If you do not specify it, it returns all
            users with any value for this key.
          type: string
          nullable: true
      required:
        - key
      type: object
    user:
      description: Definition of user object
      properties:
        ban:
          description: User ban definition
          properties:
            date_from:
              type: string
            date_to:
              type: string
            reason:
              type: string
          required:
            - date_from
            - date_to
            - reason
          type: object
          x-isnullable: true
        email:
          description: User email address.
          type: string
          x-isnullable: true
        external_id:
          description: ID of the user in your game.
          type: string
          x-isnullable: true
        first_name:
          description: User first name.
          type: string
          x-isnullable: true
        groups:
          description: List of groups the user belongs to.
          items:
            description: User group
            properties:
              id:
                description: User group ID
                type: integer
              is_default:
                description: Flag whether the group is the default group
                type: boolean
              is_deletable:
                description: Flag whether the group can be deleted
                type: boolean
              name:
                description: User group name
                type: string
            type: object
          type: array
        id:
          description: User ID.
          format: UUID
          type: string
        is_anonymous:
          description: >-
            Shows whether the user is anonymous or not. The anonymous user is a
            user created via device ID or custom ID and doesn’t have an
            alternative authentication method added (e.g., username/email and
            password).
          type: boolean
        is_last_email_confirmed:
          description: >-
            Whether a user comfirmed their email address. If `true`, the email
            address is confirmed.
          type: boolean
        is_user_active:
          description: Shows whether the user is active or not.
          type: boolean
        last_login:
          description: >-
            Date of the last user login in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
          x-isnullable: true
        last_name:
          description: User last name.
          type: string
          x-isnullable: true
        login_type:
          description: >-
            Last used type of authorization. Can be
            xsolla_login/social/server_custom_id and etc
          type: string
          x-isnullable: false
        name:
          description: User name.
          type: string
          x-isnullable: true
        nickname:
          description: User nickname.
          type: string
          x-isnullable: true
        phone_auth:
          description: >-
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
            This phone number is used to authenticate the user. Returned only if
            the `phone_auth` field is specified.
          x-isnullable: true
        picture:
          description: Link to the user profile picture.
          x-isnullable: true
        project_id:
          description: ID of the project associated with a user.
          format: UUID
          type: string
        registered:
          description: >-
            Date of user registration in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
        server_custom_id:
          description: User server_custom_id.
          type: string
          x-isnullable: true
        username:
          description: User username.
          type: string
      required:
        - id
        - last_login
        - username
        - picture
        - phone_auth
        - external_id
        - registered
        - groups
        - is_user_active
        - ban
        - is_last_email_confirmed
        - server_custom_id
        - login_type
    userEmail:
      description: Defenition of user_email object
      properties:
        email:
          type: string
          x-isnullable: false
        is_last_used:
          type: boolean
          x-isnullable: false
        is_primary:
          type: boolean
          x-isnullable: false
      required:
        - email
        - is_primary
        - is_last_used
    userInfo:
      description: User details.
      properties:
        ban:
          description: >-
            Details of the user ban. The value is `null` for the users not from
            the ban list.
          properties:
            date_from:
              description: >-
                Date when the user was banned in the [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601) format.
              type: string
            date_to:
              description: >-
                Date until the user remains banned in the [ISO
                8601](https://en.wikipedia.org/wiki/ISO_8601) format.
              type: string
            reason:
              description: Reason the user ban.
              type: string
          required:
            - date_from
            - date_to
          type: object
          nullable: true
        birthday:
          description: User birth date in the `YYYY-MM-DD` format.
          type: string
          nullable: true
        connection_information:
          description: >-
            User birth date confirmed by [okname](https://www.ok-name.co.kr/).
            For Korean users only.
          type: string
          nullable: true
        country:
          description: User country.
          type: string
          nullable: true
        devices:
          items:
            properties:
              device:
                description: Manufacturer and model name of the device.
                type: string
                x-isnullable: false
              id:
                description: >-
                  Device ID generated by the Xsolla Login server. It **is not**
                  the same as the `device_id` parameter from the Auth via device
                  ID
                  ([JWT](https://developers.xsolla.com/api/login/operation/jwt-auth-via-device-id)
                  and [OAuth
                  2.0](https://developers.xsolla.com/api/login/operation/oauth-20-auth-via-device-id))
                  call.
                type: integer
                x-isnullable: false
              last_used_at:
                description: >-
                  Date and time of the last user login via the device in the
                  [RFC 3339 format](https://www.ietf.org/rfc/rfc3339.txt).
                type: string
                x-isnullable: false
              type:
                description: Type of the device.
                enum:
                  - android
                  - ios
                type: string
                x-isnullable: false
            required:
              - id
              - type
              - device
              - last_used_at
            type: object
          type: array
        email:
          description: User email address.
          type: string
          nullable: true
        external_id:
          description: >-
            ID of the user in your game. To use the ID from your game, link the
            IDs by the [Link user IDs via external
            ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)
            call.
          type: string
          nullable: true
        first_name:
          description: User first name.
          type: string
          nullable: true
        gender:
          description: |
            User gender. Can be:
            * `f` for female
            * `m` for male
            * `other`
            * `prefer not to answer`
          enum:
            - f
            - m
            - other
            - prefer not to answer
          type: string
          nullable: true
        groups:
          description: Details about the groups the user was added to.
          items:
            properties:
              id:
                description: Group ID.
                type: integer
              is_default:
                description: Shows whether the group is default or not.
                type: boolean
              is_deletable:
                description: >-
                  Shows whether the group can be deleted or not. Default groups
                  can’t be deleted.
                type: boolean
              name:
                description: Group name.
                type: string
            required:
              - id
              - name
              - is_default
              - is_deletable
            type: object
          type: array
        id:
          description: User ID.
          type: string
          nullable: false
        is_anonymous:
          description: >-
            Shows whether the user is anonymous or not. The anonymous user is a
            user created via device ID or custom ID and doesn’t have an
            alternative authentication method added (e.g., username/email and
            password).
          type: boolean
        is_last_email_confirmed:
          type: boolean
          nullable: true
        is_user_active:
          type: boolean
          nullable: false
        last_login:
          description: >-
            Date of the last user login in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
          nullable: false
        last_name:
          description: User last name.
          type: string
          nullable: true
        name:
          description: User name in a social network.
          type: string
          nullable: true
        nickname:
          description: User nickname.
          type: string
          nullable: true
        phone:
          description: >-
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
            This phone number is used only for passing the two-factor
            authentication.
          type: string
          nullable: true
        phone_auth:
          description: >-
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
            This phone number is used to authenticate the user.
          type: string
          nullable: true
        picture:
          description: Link to the user profile picture.
          type: string
          nullable: true
        registered:
          description: >-
            Date of user registration in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
          nullable: false
        tag:
          description: >-
            User tag without "#" at the beginning. Can have no unique value and
            can be used in the [Search users by
            nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
            call.
          type: string
          nullable: true
        username:
          description: Username.
          type: string
          nullable: true
      required:
        - id
        - username
        - nickname
        - name
        - tag
        - picture
        - birthday
        - first_name
        - last_name
        - gender
        - email
        - phone
        - phone_auth
        - groups
        - registered
        - external_id
        - last_login
        - ban
        - country
        - connection_information
        - is_anonymous
        - devices
        - is_last_email_confirmed
        - is_user_active
      type: object
    userResponseItem:
      description: User details.
      properties:
        birthday:
          description: User birth date in the `YYYY-MM-DD` format.
          type: string
          nullable: true
        email:
          description: User email address.
          type: string
          nullable: true
        external_id:
          description: >-
            ID of the user in your game. To use the ID from your game, link the
            IDs by the [Link user IDs via external
            ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)
            call.
          type: string
          nullable: true
        first_name:
          description: User first name.
          type: string
          nullable: true
        gender:
          description: |
            User gender. Can be:
            * `f` for female
            * `m` for male
            * `other`
            * `prefer not to answer`
          enum:
            - f
            - m
            - other
            - prefer not to answer
          type: string
          nullable: true
        id:
          description: User ID.
          type: string
          nullable: false
        is_anonymous:
          description: >-
            Shows whether the user is anonymous or not. The anonymous user is a
            user created via device ID or custom ID and doesn’t have an
            alternative authentication method added (e.g., username/email and
            password).
          type: boolean
        last_login:
          description: >-
            Date of the last user login in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
          nullable: false
        last_name:
          description: User last name.
          type: string
          nullable: true
        nickname:
          description: User nickname.
          type: string
          nullable: true
        phone:
          description: >-
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
            This phone number is used only for passing the two-factor
            authentication. Returned only if the `phone` field is specified.
          type: string
          x-omitempty: true
          nullable: true
        phone_auth:
          description: >-
            User phone number according to [national
            conventions](https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers).
            This phone number is used to authenticate the user. Returned only if
            the `phone_auth` field is specified.
          type: string
          x-omitempty: true
          nullable: true
        picture:
          description: Link to the user profile picture.
          type: string
          nullable: true
        registered:
          description: >-
            Date of user registration in the [ISO
            8601](https://en.wikipedia.org/wiki/ISO_8601) format.
          type: string
          nullable: false
        tag:
          description: >-
            User tag without "#" at the beginning. Can have no unique value and
            can be used in the [Search users by
            nickname](https://developers.xsolla.com/api/login/operation/search-users-by-nickname)
            call.
          type: string
          nullable: true
        username:
          description: User username.
          type: string
          nullable: true
      required:
        - id
        - username
        - nickname
        - picture
        - birthday
        - first_name
        - last_name
        - gender
        - email
        - registered
        - external_id
        - last_login
        - tag
      type: object
    whitelist:
      properties:
        created_at:
          format: date-time
          type: string
        domain:
          maxLength: 100
          type: string
        id:
          format: int64
          type: number
        project_id:
          format: uuid
          type: string
      type: object
    whitelistRequestBody:
      properties:
        domain:
          maxLength: 255
          minLength: 5
          type: string
      type: object
