{
  "openapi": "3.0.0",
  "info": {
    "description": "# Overview {% #overview %}\n\n* **Version:** 1.0.0\n* **Servers**: `https://login.xsolla.com/api`\n* **Protocols**: https\n* **Accepts**: application/json\n* **Responds with**: application/json\n* **[Contact us by email](mailto:integration@xsolla.com)**\n* **Contact URL:** https://xsolla.com/\n\nThis 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.\n\n# IP addresses {% #ip-addresses %}\nThe full list of IP addresses that login.xsolla.com may use:\n* 34.94.0.85\n* 34.94.14.95\n* 34.94.25.33\n* 34.94.115.185\n* 34.94.154.26\n* 34.94.173.132\n* 34.102.48.30\n* 35.235.99.248\n* 35.236.32.131\n* 35.236.35.100\n* 35.236.117.164\n\n# Glossary {% #glossary %}\nYou have access to the following Login project types in Publisher Account:\n* Standard Login project\n* Shadow Login project\n\nTo find more information on it, see [Cross-platform account](https://developers.xsolla.com/doc/login/features/cross-platform-account/) feature.\n\n## Rate limits {% #glossary-rate-limits %}\nAre the restrictions applied by Xsolla API on the frequency of access by a user within a defined timeframe.\n\n## Standard Login project {% #glossary-standard-login-project %}\nIs a Login project that is used to store main accounts.\n\n## Shadow Login project {% #glossary-shadow-login-project %}\nIs a Login project that is used to store platform accounts.\n\n## Main account {% #glossary-main-account %}\nIs 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.\n\n## Platform account {% #glossary-platform-account %}\nIs 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.\n\n## Publishing platform {% #glossary-publishing-platform %}\nIs a game platform that is used for game distribution (e.g. Steam, PlayStation, Xbox, etc.).\n\n# Authentication {% #authentication %}\nLogin API supports the following token types:\n* User token. It is used for sending requests to the following user resources:\n    * profile\n    * friends\n    * attributes\n* Server token. It is used for sending requests to application resources such as settings or user data. The following requests are available:\n    * [Create platform accounts](https://developers.xsolla.com/api/login/operation/auth-by-custom-id)\n    * [Get user data](https://developers.xsolla.com/api/login/operation/get-users-ids-by-social-id-and-platform)\n    * [Link accounts](https://developers.xsolla.com/api/login/operation/link-accounts-by-code)\n    * [Link user accounts via external ID](https://developers.xsolla.com/api/login/operation/link-user-ids-via-external-id)\n\n## Authentication schemes {% #authentication-schemes %}\nYou can determine whether an API call is client or server-side by the scheme of authentication:\n\n- Client-side — are called without authentication or with the `Authorization` header: `Bearer <user_JWT>` header, where `<user_JWT>` — is the user token.\n- 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.\n\n## Getting a user token {% #getting-user-token %}\nTo get the token, send one of the following requests:\n* 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))\n* 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))\n* 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))\n* 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))\n* [authentication via a social network access token](https://developers.xsolla.com/api/login/operation/jwt-auth-via-access-token-of-social-network)\n* [authentication via a publishing platform](https://developers.xsolla.com/api/login/operation/auth-by-custom-id)\n\nAfter JWT authentication, the user is redirected to the Callback URL with a token in a query-parameter: `<Callback URL>?token=<User token (JWT)>`.\n\nAfter 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`).\n\nWhen 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:\n- `grant_type` — JWT grant type, pass the `refresh_token` value.\n- `client_id` — OAuth 2.0 client ID.\n- `refresh_token` — refresh token received in response to the user authorization request.\n\n## Getting a server token {% #getting-server-token %}\n\nTo get a server token:\n1. [Set up server OAuth 2.0 client](#set-up-server-oauth-20-client).\n2. [Generate server JWT](#generate-server-jwt).\n\n### Set up server OAuth 2.0 client {% #set-up-server-oauth-20-client %}\n1. Open your project in [Publisher Account](https://publisher.xsolla.com/) and go to the **Login section**.\n2. Click **Configure** in the panel of a **Login** project.\n3. Go to the **Security** block and select the **OAuth 2.0** section.\n4. Click **Add OAuth 2.0 Client**.\n5. Check the **Server (server-to-server connection)** box.\n6. Specify **Token lifetime**.\n7. Click **Connect**.\n8. Copy and save the client ID and secret key.\n\n### Generate server JWT {% #generate-server-jwt %}\nOn 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:\n* `grant_type` is the type of getting JWT, pass the `client_credentials` value.\n* `client_secret` is the secret key that is received when you set up the server OAuth 2.0 client.\n* `client_id` is the client ID received when you set up the server OAuth 2.0 client.\n\nWhen 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:\n- `grant_type` — JWT grant type, pass the `client_credentials` value.\n- `client_id` — OAuth 2.0 client ID.\n- `client_secret` — OAuth 2.0 client secret key.\n\n# Rate limits {% #rate-limits %}\nTo 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.\n\nRate limits vary by method, IP-address, authentication scheme, and other factors.\n\nRate 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.\n\nRate 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.\n\n**Example of a method with server-side authentication:**\n![Example of a method with server-side authentication](https://cdn.xsolla.net/developers/current/images/api_docs/login-rate-limits-1.png)\n**Example of a method with client-side authentication:**\n![Example of a method with server-side authentication](https://cdn.xsolla.net/developers/current/images/api_docs/login-rate-limits-2.png)\n\nRate 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.\nYou can refer to the recommendations on how to manage rate limits in the [documentation](https://developers.xsolla.com/api/getting-started/#api_rate_limits).\n\n{% html name=\"div\" attrs={\"class\": \"note\"} %}\n**Note**\n\nIn 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).\n{% /html %}\n\n# JWT structure {% #jwt-structure %}\nEvery token has a [JWT](https://jwt.io/) format and contains a definite information in a payload.\n\n## User JWT {% #user-jwt %}\nUser JWT is a token received as a result of authentication or registration. A token payload contains information about the user and authentication call.\n\nGetting 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.\n\n## Main claims {% #jwt-main-claims %}\nA 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.\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `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. |\n| `iss` | string | Yes | Service that signed the token: `https://login.xsolla.com`. |\n| `iat` | [Unix Timestamp](https://www.unixtimestamp.com/) | Yes | Date and time of giving the token. |\n| `sub` | string (UUID) | Yes | User ID written on the Xsolla Login server side. |\n| `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. |\n| `xsolla_login_project_id` | string (UUID) | Yes | Login project ID. |\n| `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. |\n| `avatar` | string | | User avatar URL. |\n| `username` | string | | Username. |\n| `publisher_id` | integer | | ID of a merchant who owns a Login project. |\n| `email` | string | | User email address. |\n| `payload` | string | | Additional information that is passed in the payload parameter during authentication. |\n| `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). |\n| `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. |\n\n## PlayFab storage {% #playfab-storage %}\nClaims that are contained in the token after authentication if you use [PlayFab storage](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/).\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `external_account_id` | string | Yes | User PlayFab ID. |\n| `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. |\n| `entity_token` | string | Yes | An **EntityToken.EntityToken** parameter. |\n| `entity_type` | string | Yes | An **EntityToken.Entity.Type** parameter. Can have only the `title_player_account` value. |\n| `entity_id` | string | Yes | An **EntityToken.Entity.Id** parameter. |\n\n## Custom storage {% #custom-storage %}\nClaims that are contained in the token after authentication if you use [custom storage](https://developers.xsolla.com/doc/login/integration-guide/connect-users-storage/).\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `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. |\n| `external_account_id` | string | | User ID on your server side. |\n| `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). |\n| `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). |\n\n## Social authentication {% #social-authentication %}\nClaims that are contained in the token after authentication via a social network.\nPresence of these claims does not depend on the user database.\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `provider` | string | Yes | Name of a social network used for authentication. |\n| `id` | string | Yes | User ID in a social network. |\n| `is_cross_auth` | boolean | | Shows that the silent authentication request is in progress. |\n| `social_access_token` | string | | Social network account `access_token` parameter used for authentication. Contact your Account Manager to set up the feature. |\n| `picture` | string (URL) | | Link to the user profile picture in a social network. |\n| `birthday` | date ([RFC3339](https://www.ietf.org/rfc/rfc3339.txt)) | | User birth date in a social network. |\n| `gender` | string | | User gender in a social network. |\n| `name` | string | | User nickname in a social network. |\n\n## Authentication via the OAuth 2.0 protocol {% #authentication-via-oauth-protocol %}\nClaims that are contained in the token after OAuth 2.0 authentication.\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `jti` | string | Yes | Unique token ID. |\n\n## Authentication via a phone number {% #authentication-via-phone-number %}\nClaim which is contained in the token after authentication via a phone number.\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `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. |\n\n## Server JWT {% #server-jwt %}\nThe server token is passed in the `X-SERVER-AUTHORIZATION` header.\n\nThe 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.\n\n| Claim | Type | Required | Description |\n|---|---|---|---|\n| `xsolla_login_project_id` | string (UUID) | Yes | ID of a Login project that owns the OAuth 2.0 client. |\n| `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. |\n| `jti` | string | Yes | Unique token ID. |\n\n# JWT validation {% #jwt-validation %}\nTo validate the JWT, use the following Login API calls:\n - [User JWT validate](/api/login/operation/validate-jwt) — for a user token.\n - [Server JWT validate](/api/login/operation/validate-server-jwt) — for a server token.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nDo not reveal your secret key to anyone. If it was compromised, please update it.\n{% /html %}\n\n# Errors {% #errors %}\n\nRefer to the [documentation](/doc/login/references/errors/) for information about Xsolla Login API errors.\n",
    "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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/custom_id/get \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\nWhen 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.\nIt is used for API pagination.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/attributes/users/get \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/users/me/get \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/users/me/get_read_only \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "update-users-attributes-from-client",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "attributes": {
                    "description": "List of attributes of the specified game.\nTo add attribute which does not exist, set this attribute to the `key` parameter.\nTo update `value` of the attribute, specify its `key` parameter and set the new `value`. You can change several attributes at a time.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/attributes/users/me/update \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/users/{user_id}/get \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/users/{user_id}/get_read_only \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"keys\":[\"string\"],\"publisher_id\":0,\"publisher_project_id\":0}'"
          }
        ]
      }
    },
    "/attributes/users/{user_id}/update": {
      "post": {
        "description": "Updates and creates user’s attributes.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/attributes/users/{user_id}/update \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\nTo add attribute which does not exist, set this attribute to the `key` parameter.\nTo update `value` of the attribute, specify its `key` parameter and set new `value`. You can change several attributes at a time.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/attributes/users/{user_id}/update_read_only \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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 \\\n  --url 'https://login.xsolla.com/api/blank?token=SOME_STRING_VALUE&error_code=SOME_STRING_VALUE&error_description=SOME_STRING_VALUE' \\\n  --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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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\n",
        "tags": [
          "login-and-password"
        ],
        "x-client": true,
        "x-tags": [
          "login-and-password"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/login?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \\\n  --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).\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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\n",
        "tags": [
          "device-id"
        ],
        "x-client": true,
        "x-tags": [
          "device-id"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/login/device/{device_type}?projectId=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \\\n  --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.\n\nThis call is used only with the [Start auth by email](https://developers.xsolla.com/api/login/operation/jwt-start-auth-by-email) call.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their email address.\n2. The user enters their email address.\n3. 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:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.\n4. The Xsolla Login server sends the email and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. The application sends this request to the Xsolla Login server with the received ID.\n8. The user is considered as authorized.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/login/email/confirm?projectId=SOME_STRING_VALUE' \\\n  --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.\n\nThis call is used only with the [Complete auth by email](https://developers.xsolla.com/api/login/operation/jwt-complete-auth-by-email) call.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their email address.\n2. The user enters their email address.\n3. The application sends this request to the Xsolla Login server:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.\n4. The Xsolla Login server sends the email and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the linke.\n7. 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.\n8. The user is considered as authorized.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\nThis 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.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their phone number.\n2. The user enters their phone number.\n3. 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:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.\n4. The Xsolla Login server sends the SMS and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. The application sends this request to the Xsolla Login server.\n8. The user is considered as authorized.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/login/phone/confirm?projectId=SOME_STRING_VALUE' \\\n  --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.\n\nThis 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.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their phone number.\n2. The user enters their phone number.\n3. The application sends this request to the Xsolla Login server:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.\n4. The Xsolla Login server sends the SMS and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. 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.\n8. The user is considered as authorized.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --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' \\\n  --header 'accept: application/x-www-form-urlencoded'"
          }
        ]
      }
    },
    "/oauth2/clear_sso": {
      "get": {
        "description": "Deletes user's SSO cookie for given project.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "sso"
        ],
        "x-client": true,
        "x-tags": [
          "sso"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "consent-management"
        ],
        "x-client": true,
        "x-tags": [
          "consent-management"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url https://login.xsolla.com/api/oauth2/consent \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "consent-management"
        ],
        "x-client": true,
        "x-tags": [
          "consent-management"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url https://login.xsolla.com/api/oauth2/consent/validate \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "login-and-password"
        ],
        "x-client": true,
        "x-tags": [
          "login-and-password"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --data '{\"password\":\"password123\",\"username\":\"John\"}'"
          }
        ]
      }
    },
    "/oauth2/login/device/{device_type}": {
      "post": {
        "description": "Authenticates a user via a particular device ID.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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\n",
        "tags": [
          "device-id"
        ],
        "x-client": true,
        "x-tags": [
          "device-id"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\nThis call is used only with the [Start auth by email](https://developers.xsolla.com/api/login/operation/oauth-20-start-auth-by-email) call.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their email address.\n2. The user enters their email address.\n3. 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:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.\n4. The Xsolla Login server sends the email and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. The application sends this request to the Xsolla Login server with the received ID.\n8. The user is considered as authorized.\n",
        "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/oauth2/login/email/confirm?client_id=SOME_INTEGER_VALUE' \\\n  --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.\n\nThis call is used only with the [Complete auth by email](https://developers.xsolla.com/api/login/operation/oauth-20-complete-auth-by-email) call.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their email address.\n2. The user enters their email address.\n3. The application sends this request to the Xsolla Login server:\n   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.\n   b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.\n4. The Xsolla Login server sends the email and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. 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.\n8. The user is considered as authorized.\n",
        "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.\n\nCan be:\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\nThis 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.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their phone number.\n2. The user enters their phone number.\n3. 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:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.\n4. The Xsolla Login server sends the SMS and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. The application sends this request to the Xsolla Login server.\n8. The user is considered as authorized.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/oauth2/login/phone/confirm?client_id=SOME_INTEGER_VALUE' \\\n  --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.\n\nThis 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.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their phone number.\n2. The user enters their phone number.\n3. The application sends this request to the Xsolla Login server:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the SMS will contain the confirmation code only.\n4. The Xsolla Login server sends the SMS and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. 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.\n8. The user is considered as authorized.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\nCan be:\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "passwordless"
        ],
        "x-client": true,
        "x-tags": [
          "passwordless"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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\n",
        "tags": [
          "login-and-password"
        ],
        "x-client": true,
        "x-tags": [
          "login-and-password"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/oauth2/login/token?client_id=SOME_INTEGER_VALUE&scope=SOME_STRING_VALUE' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `sso` is used for deleting only the SSO user session.\n* `all` is used for deleting the SSO user session and invalidating all access and refresh tokens.\n",
            "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\n",
        "tags": [
          "sso"
        ],
        "x-client": true,
        "x-tags": [
          "sso"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --url 'https://login.xsolla.com/api/oauth2/logout?sessions=SOME_STRING_VALUE' \\\n  --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`).\n\nYou will get the link to redirect the user to your project.\n\nTo enable silent authentication, use the [instruction](https://developers.xsolla.com/doc/login/features/silent-authentication).\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "oauth-20-silent-authentication",
        "parameters": [
          {
            "description": "Name of the platform the user authorized in. Can be `steam`, `xbox`, `epicgames`.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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`\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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.\n",
            "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:\n* `true` value, the Xsolla Login server returns the 302 response code. URL for user redirection with user JWT will be in the `Location` header.\n* `false` value, the Xsolla Login server returns the 200 response code. URL for user redirection with user JWT will be in the response body.\n",
            "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.\nNote: You must use this unique identifier to use the Ecommerce APIs, and to request access tokens used by game clients.\n",
            "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\n",
        "tags": [
          "cross-platform"
        ],
        "x-client": true,
        "x-tags": [
          "cross-platform"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n\nWhen the `email` is requested and the social network did not respond with the `email` value:\n* 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),\n* 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.\n\nAfter 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.\n",
            "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).\n\nIf 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.\n",
            "in": "path",
            "name": "provider_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Region in the `<language code>_<country code>` format, where:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of social networks will be sorted from most to least used, according to the variable value.\n",
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string",
              "minLength": 2
            }
          },
          {
            "description": "Arrange xsolla wallet form behaivior values:\n* `true` show only passwordless by phone,\n* `false` all auth methods.\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n\nYou can get the link by this call and add it to your button for authentication via a social network.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n\nWhen the `email` is requested and the social network did not respond with the `email` value:\n* 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),\n* 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.\n\nAfter 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.\n",
            "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).\n\nIf 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.\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "oauth-20-auth-via-access-token-of-social-network",
        "parameters": [
          {
            "description": "Name of the social network connected to the Login in Publisher Account.\n\nCan 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).\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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).\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "sso"
        ],
        "x-client": true,
        "x-tags": [
          "sso"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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:\n* To get a [user JWT](/api/login/getting-user-token).\n* To refresh the JWT when it expires. Works only if `scope=offline` is passed in the registration or authentication call.\n* To get a [server JWT](/api/login/getting-server-token). The user participation isn’t needed.\n* To exchange user JWT for a new one with different scope.\n\nUsage of this call depends on the value of the `grant_type` parameter.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `authorization_code` to exchange the code received in the authentication call to the JWT. The value of the `code` parameter must be specified.\n* `refresh_token` to get the refreshed JWT when the previous value is expired. The value of the `refresh_token` parameter must be specified.\n* `client_credentials` to get the server JWT. The values of the `client_id` and `client_secret` parameters must be specified.\n* `urn:ietf:params:oauth:grant-type:token_exchange` to exchange existing user JWT with different scope.\n",
                    "type": "string"
                  },
                  "client_secret": {
                    "description": "Your secret key. The value for this parameter depends on the value of the `grant_type` parameter:\n* 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.\n* 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.\n\nNote that values for `client_secret` and `client_id` parameters should be used from the same client.\n",
                    "type": "string"
                  },
                  "client_id": {
                    "description": "Your application ID. The value for this parameter depends on the value of the `grant_type` parameter:\n* 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/).\n* If it’s `client_credentials`, contact your Customer Success Manager to create a server OAuth 2.0 client and get its client ID.\n\nNote that values for `client_secret` and `client_id` parameters should be used from the same client.\n",
                    "type": "string"
                  },
                  "redirect_uri": {
                    "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
                    "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\n",
                    "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\n",
        "tags": [
          "token-management"
        ],
        "x-client": true,
        "x-tags": [
          "token-management"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url https://login.xsolla.com/api/oauth2/token \\\n  --header 'accept: application/x-www-form-urlencoded'"
          }
        ]
      }
    },
    "/oauth2/token/revoke": {
      "post": {
        "description": "Revokes an obtained access token\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "token-management"
        ],
        "x-client": true,
        "x-tags": [
          "token-management"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/oauth2/token/revoke?revoke_all=SOME_BOOLEAN_VALUE' \\\n  --header 'accept: application/x-www-form-urlencoded'"
          }
        ]
      }
    },
    "/oauth2/user": {
      "post": {
        "description": "Creates a new user.\n\n* 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/).\n* 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.\n* If you store user data at Firebase, the user will receive an account confirmation message from Firebase side.\n\nSee the [Comparison of user data storages](https://developers.xsolla.com/doc/login/references/users-storages-comparison/) page for more information about user data storages.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "login-and-password"
        ],
        "x-client": true,
        "x-tags": [
          "login-and-password"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "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\n",
        "tags": [
          "user-profile"
        ],
        "x-client": true,
        "x-tags": [
          "user-profile"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --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.\n\nThe workflow of using this call:\n1. The application opens an authentication form so the user can enter their email address.\n2. The user enters their email address.\n3. The application sends the **Start auth by email or phone number** (JWT or OAuth 2.0) request to the Xsolla Login server:\n  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.\n  b. If the parameter `send_link` is `false` or not passed, the email will contain the confirmation code only.\n4. The Xsolla Login server sends an email or SMS to the user and returns the ID of the confirmation code.\n5. The application shows a field so the user can fill in the confirmation code.\n6. The user enters the received confirmation code or follows the link.\n7. 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.\n8. The user is considered as authorized.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --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.\n\nYou 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.\n\nThe workflow of using this call with your own forms:\n1. The application opens a form so the user can enter their email or username.\n2. The user enters their email or username.\n3. The application sends the [Reset password](https://developers.xsolla.com/api/login/operation/reset-password) request to the Xsolla Login server.\n4. The Xsolla Login server sends a confirmation email to the user.\n5. The user follows the link in the email and proceeds to the form for setting a new password.\n6. The user enters a new password and clicks **Set new password**.\n7. The application or Login widget sends this request to the Xsolla Login server.\n\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/password/reset/confirm?projectId=SOME_STRING_VALUE' \\\n  --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.\n\nThe workflow of using this call:\n1. The application opens a form so the user can enter their email or username.\n2. The user enters their email or username.\n3. The application sends this request to the Xsolla Login server.\n4. The Xsolla Login server sends a confirmation email to the user.\n5. The user follows the link in the email and proceeds to the form for setting a new password.\n6. The user enters a new password and clicks **Set new password**.\n7. The application sends the [Confirm password reset](https://developers.xsolla.com/api/login/operation/confirm-password-reset) request to the Xsolla Login server.\n\nIf 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.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of social networks will be sorted from most to least used, according to the variable value.\n",
            "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 \\\n  --url 'https://login.xsolla.com/api/password/reset/request?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&locale=SOME_STRING_VALUE' \\\n  --data '{\"username\":\"John\"}'"
          }
        ]
      }
    },
    "/project/{project_id}/attribute_schema": {
      "delete": {
        "description": "Deletes [JSON Schema](https://json-schema.org/) of user attributes from the Login project.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "get": {
        "description": "Gets [JSON Schema](https://json-schema.org/) of user attributes.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "put": {
        "description": "Updates [JSON Schema](https://json-schema.org/) of user attributes.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/project/{project_id}/attribute_schema \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{}'"
          }
        ]
      }
    },
    "/projects/{project_id}/age_rating": {
      "delete": {
        "description": "Deletes age restriction for a selected country in a project.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/projects/{project_id}/age_rating?code=SOME_STRING_VALUE' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "get": {
        "description": "Returns a list of countries with age restrictions in a project.\n \n\n {% html name=\"div\" attrs={\"class\": \"notice\"} %}\n **Notice**\n\n [Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n {% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/age_rating \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Creates or updates existing age restriction for a selected country in a project.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.<br>[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/age_rating \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nEach new call overrides previous settings.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/age_rating/batch \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `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.\n* `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).\n* `email_confirmation` is used for user email address confirmation.\n* `link_social_account` is used for linking user’s social account.\n* `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.\n",
            "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Creates a webhook for the specified event. The webhook has the following format:\n```json\n{\n    \"event_type\": \"Event type\",\n    \"event_time\": \"Date and time when the event occurred in the ISO 8601 format\",\n    \"project_id\": \"Login project ID\",\n    \"data\": {\n         // Some other data, can be different for different events and include nested objects\n     }\n}\n```\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `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.\n* `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).\n* `email_confirmation` is used for user email address confirmation.\n* `link_social_account` is used for linking user’s social account.\n* `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.\n",
            "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `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.\n* `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).\n* `email_confirmation` is used for user email address confirmation.\n* `link_social_account` is used for linking user’s social account.\n* `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.\n",
            "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/events/{event_type}/webhooks/{webhook_id} \\\n  --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.\n\nThe call can be requested 1 time per hour.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/export_users \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/jwks.json"
          }
        ]
      }
    },
    "/projects/{project_id}/keys": {
      "get": {
        "description": "Gets a list of the public RSA project keys.\n\nTo validate user JWT, choose the library and pass an appropriate public key from the response to this call to the validation function.\n\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/keys"
          }
        ]
      }
    },
    "/projects/{project_id}/mfa": {
      "get": {
        "description": "Gets project two-factor authentication settings.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/mfa \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/mfa \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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`).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/server_custom_id/{server_custom_id}/attributes \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 settings for connected social provider",
        "tags": [
          "product-configuration-social"
        ],
        "x-server": true,
        "x-tags": [
          "product-configuration-social"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request PUT \\\n  --url https://login.xsolla.com/api/projects/{project_id}/social/provider_token \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"add_social_token\":true}'"
          }
        ]
      }
    },
    "/projects/{project_id}/social/{provider_name}/custom_scope": {
      "put": {
        "description": "Manage custom Oauth2 scopes for provider.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\nIf 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.\n",
            "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 settings for connected social provider",
        "tags": [
          "product-configuration-social"
        ],
        "x-server": true,
        "x-tags": [
          "product-configuration-social"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request PUT \\\n  --url https://login.xsolla.com/api/projects/{project_id}/social/{provider_name}/custom_scope \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %} \n",
        "operationId": "get-custom-email-template",
        "parameters": [
          {
            "description": "type of template\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
                      "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "create-custom-email-template",
        "parameters": [
          {
            "description": "type of template\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
                      "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "update-custom-email-template",
        "parameters": [
          {
            "description": "type of template\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
            "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
                      "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/templates/email/{template_id}/{locale}/{template_type} \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Adds a new user group to a project.\n \n\n {% html name=\"div\" attrs={\"class\": \"notice\"} %}\n **Notice**\n\n [Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.<br>[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n {% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"name\":\"string\"}'"
          }
        ]
      }
    },
    "/projects/{project_id}/user_groups/{group_id}": {
      "delete": {
        "description": "Deletes a user group.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nA user group can't be deleted if it contains users.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/user_groups/{group_id} \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "put": {
        "description": "Changes a user group name.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/user_groups/{group_id} \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"new_name\":\"string\"}'"
          }
        ]
      }
    },
    "/projects/{project_id}/user_import": {
      "post": {
        "description": "Imports user data from a CSV format file to the Login project.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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": "\nCSV file containing user data. Maximum file size: 64 MB.\n \n Phone format: [E.123](https://en.wikipedia.org/wiki/E.123).\n",
                    "type": "string",
                    "format": "binary"
                  },
                  "mapping": {
                    "description": "A JSON object mapping CSV column indexes (starting from 0) to user field names.\n\nAllowed keys:\n  - email\n  - email_verified\n  - user_id\n  - is_active\n  - is_banned\n  - username\n  - birth_date\n  - gender\n  - full_name\n  - last_name\n  - first_name\n  - nickname\n  - picture\n  - password_hash\n  - phone_number\n  - server_custom_id\n  - last_login_date\n  - provider|{provider_name}\n\nAllowed provider names:\n  - steam\n\nExample:\n```json\n{\n  \"username\": 0,\n  \"email\": 1,\n  \"is_active\": 2,\n  \"is_banned\": 3,\n  \"email_verified\": 4,\n  \"birth_date\": 5,\n  \"gender\": 6,\n  \"full_name\": 7,\n  \"last_name\": 8,\n  \"first_name\": 9,\n  \"nickname\": 10,\n  \"picture\": 11,\n  \"phone_number\": 12,\n  \"server_custom_id\": 13,\n  \"provider|steam\": 14,\n  \"last_login_date\": 15\n}\n```\n",
                    "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/user_import \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --header 'accept: multipart/form-data'"
          }
        ]
      }
    },
    "/projects/{project_id}/users": {
      "get": {
        "description": "Gets user data by user ID.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --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' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      }
    },
    "/projects/{project_id}/users/search": {
      "get": {
        "description": "Searches users by criteria. Returns results with pagination and ordering.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --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' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      }
    },
    "/projects/{project_id}/users/search/by_id/{user_id}": {
      "get": {
        "description": "Gets user data by user ID.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/search/by_id/{user_id} \\\n  --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.\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/attributes \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      }
    },
    "/projects/{project_id}/users/{user_id}/ban": {
      "delete": {
        "description": "Removes the ban from the user.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/ban \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Add a ban to the user, either for a specific period or permanently.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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').\n",
                    "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').\n",
                    "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/ban \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/mfa \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Updates user's two-factor authentication settings from server.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n",
                    "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.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/mfa \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/server_custom_id \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"server_custom_id\":\"string\"}'"
          }
        ]
      }
    },
    "/projects/{project_id}/users/{user_id}/social_profile": {
      "get": {
        "description": "Gets all user's social profiles.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\nIf 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.\n",
                        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/social_profile \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      }
    },
    "/projects/{project_id}/users/{user_id}/user_groups": {
      "delete": {
        "description": "Deletes user groups.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n<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><li>[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.</li></ul>\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"user_groups\":[1,2,3]}'"
          }
        ]
      },
      "get": {
        "description": "Gets all user's groups.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "patch": {
        "description": "Updates user's groups.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n<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><li>[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.</li></ul>\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --data '{\"user_groups\":[1,2,3]}'"
          }
        ]
      },
      "put": {
        "description": "Manages groups for a user. A default group cannot be passed to this method.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n<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><li>[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.</li></ul>\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/users/{user_id}/user_groups \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/welcome_email \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Switches on a welcome email.\n \n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/projects/{project_id}/welcome_email \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN'"
          }
        ]
      }
    },
    "/server/token/validate": {
      "post": {
        "description": "Validates a server JWT. Checks the following criteria:\n- the lifetime of the token\n- existence of the Login project\n- presence of an authentic signature from the `login.xsolla.com` server\n- value of the `request_type` field: `gateway_token`\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/server/token/validate?projectId=SOME_STRING_VALUE' \\\n  --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`).\n\nYou will get the link to redirect the user to your project.\n\nTo enable silent authentication, use the [instruction](https://developers.xsolla.com/doc/login/features/silent-authentication).\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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`.\n",
            "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`.\n\nWhen the `email` is requested and the social network did not respond with the `email` value:\n* 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),\n* 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.\n\nAfter 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.\n",
            "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`\n",
            "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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:\n* `true` value, the Xsolla Login server returns the 302 response code. URL for user redirection with user JWT will be in the `Location` header.\n* `false` value, the Xsolla Login server returns the 200 response code. URL for user redirection with user JWT will be in the response body.\n",
            "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.\nNote: You must use this unique identifier to use the Ecommerce APIs, and to request access tokens used by game clients.\n",
            "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\n",
        "tags": [
          "cross-platform"
        ],
        "x-client": true,
        "x-tags": [
          "cross-platform"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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`.\n\nWhen the `email` is requested and the social network did not respond with the `email` value:\n* 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),\n* 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.\n\nAfter 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.\n",
            "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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).\n\nIf 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.\n",
            "in": "path",
            "name": "provider_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Region in the `<language code>_<country code>` format, where:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of social networks will be sorted from most to least used, according to the variable value.\n",
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string",
              "minLength": 2
            }
          },
          {
            "description": "Arrange xsolla wallet form behaivior values:\n* `true` show only passwordless by phone,\n* `false` all auth methods.\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n\nYou can get the link by this call and add it to your button for authentication via the social network.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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`.\n\nWhen the `email` is requested and the social network did not respond with the `email` value:\n* 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),\n* 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.\n\nAfter 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.\n",
            "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).\n\nIf 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.\n",
            "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "in": "query",
            "name": "with_logout",
            "x-isnullable": true,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "description": "Arrange xsolla wallet form behaivior values:\n* `true` show only passwordless by phone,\n* `false` all auth methods.\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request GET \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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.\n\nCan 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).\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/social/{provider_name}/login_with_token?projectId=SOME_STRING_VALUE&payload=SOME_STRING_VALUE&with_logout=0' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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/).\n",
            "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\n",
        "tags": [
          "social-login"
        ],
        "x-client": true,
        "x-tags": [
          "social-login"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/social/{provider_name}/refresh_token?projectId=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
                        "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.\n\n// If you created body of the template with\n<pre>\nHi {{first_name}} {{last_name}}!<br>We will be glad to see you on the {{site_link}} page.\n</pre>\n// Pass the following JSON here\n<pre>\n\"params\": {\n  \"first_name\": \"John\",\n  \"last_name\": \"Smith\",\n  \"site_link\": \"https://example.com/\"\n}\n</pre>\n",
                        "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-server": true,
        "x-tags": [
          "custom-email-templates"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/templates/email/send?projectId=SOME_STRING_VALUE' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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:\n- the lifetime of the token\n- existence of the Login project\n- presence of an authentic signature from the `login.xsolla.com` server\n- user existence\n- Validates the user JWT.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/token/validate \\\n  --data '{\"token\":\"jwtToken\"}'"
          }
        ]
      }
    },
    "/user": {
      "post": {
        "description": "Creates a new user.\n\n* 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/).\n* 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/).\n* If you store user data at Firebase, the user will receive an account confirmation message from Firebase side.\n\nSee the [Comparison of user data storages](https://developers.xsolla.com/doc/login/references/users-storages-comparison/) page for more information about user data storages.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "login-and-password"
        ],
        "x-client": true,
        "x-tags": [
          "login-and-password"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/user?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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\n",
        "tags": [
          "user-profile"
        ],
        "x-client": true,
        "x-tags": [
          "user-profile"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --url 'https://login.xsolla.com/api/user/resend_confirmation_link?projectId=SOME_STRING_VALUE&login_url=SOME_STRING_VALUE&payload=SOME_STRING_VALUE' \\\n  --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).\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/users?projectId=SOME_STRING_VALUE' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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/glossary-platform-account) to the existing [main account](/api/login/glossary-main-account) when the user logs in to the game via a gaming console.\n\nThe call is used with [Link accounts by code request](https://developers.xsolla.com/api/login/operation/link-accounts-by-code).\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/account/code \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/account/link": {
      "post": {
        "description": "Links the [platform account](/api/login/glossary-platform-account) to the existing [main account](/api/login/glossary-main-account) by the code.\n\nTo 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.\n\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\n**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.\n",
                    "format": "uuid",
                    "type": "string",
                    "x-isnullable": true
                  },
                  "publisher_project_id": {
                    "description": "Project ID from Publisher Account which you make a request for.\n\nIf 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`.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/users/account/link \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\nYou can find an external ID in:\n* a user JWT after successful authentication as a value of the `external_account_id` claim,\n* 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.\n\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/account/link_external_id \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/age/check \\\n  --data '{\"dob\":\"2019-08-24\",\"project_id\":\"405d8375-3514-403b-8c43-83ae74cfe0e9\"}'"
          }
        ]
      }
    },
    "/users/linking_info": {
      "post": {
        "description": "The call will return:\n* user ID if the user has linked the [main account](/api/login/glossary-main-account).\n* user ID if the user has linked the [platform account](/api/login/glossary-platform-account).\n* `xl_uid=null` if the user does not have a linked account.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n\nIf 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`.\n",
                    "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 \\\n  --url https://login.xsolla.com/api/users/linking_info \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for server-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "auth-by-custom-id",
        "parameters": [
          {
            "description": "Login project ID from Publisher Account. If you do not specify it, [shadow Login](/api/login/glossary-shadow-login-project) will be used for the specified `publisher_project_id` parameter.\n\nShadow Login ID you do not need to pass to this call.\n",
            "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.\n\nIf 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`.\n",
            "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:\n* `1` to deactivate the existing values and activate a new one,\n* `0` to keep the existing values activated.\n",
            "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:\n  * `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.\n  * `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.\n",
                          "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\n",
        "tags": [
          "server-custom-id"
        ],
        "x-server": true,
        "x-tags": [
          "server-custom-id"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request POST \\\n  --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' \\\n  --header 'X-SERVER-AUTHORIZATION: YOUR_SERVER_TOKEN' \\\n  --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.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `f` for female\n* `m` for male\n* `other`\n* `prefer not to answer`\n",
                      "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 \\\n  --url https://login.xsolla.com/api/users/me \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      },
      "patch": {
        "description": "Updates the details of the authenticated user by JWT.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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.\n",
                    "type": "string",
                    "x-isnullable": true
                  },
                  "first_name": {
                    "description": "User first name.",
                    "maxLength": 255,
                    "type": "string",
                    "x-isnullable": true
                  },
                  "gender": {
                    "description": "User gender. Can be:\n* `f` for female\n* `m` for male\n* `other`\n* `prefer not to answer`\n",
                    "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:\n* `f` for female\n* `m` for male\n* `other`\n* `prefer not to answer`\n",
                      "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --data '{\"birthday\":\"1990-12-12\",\"first_name\":\"John\",\"gender\":\"f\",\"nickname\":\"Johny\"}'"
          }
        ]
      }
    },
    "/users/me/devices": {
      "get": {
        "description": "Gets a list of user’s devices.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/devices \\\n  --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).\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/devices/{device_type} \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/devices/{id} \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/me/email": {
      "get": {
        "description": "Gets the email of the authenticated user by JWT.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/email \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/users/me/link_email_password?login_url=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\nYou can get the link by this call and add it to your button for authentication via the social network.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "get-links-for-social-auth",
        "parameters": [
          {
            "description": "Region in the `<language code>_<country code>` format, where:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of the links will be sorted from most to least used social networks, according to the variable value.\n",
            "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url 'https://login.xsolla.com/api/users/me/login_urls?locale=SOME_STRING_VALUE' \\\n  --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.\n",
                        "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 \\\n  --url https://login.xsolla.com/api/users/me/mfa \\\n  --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.\n\nThe workflow of using this call:\n1. The user enables or disables two-factor authentication.\n2. The application sends the request to the Xsolla Login server.\n3. The Xsolla Login server sends the one-time confirmation code to the user and returns the URL of the two-factor authentication page.\n4. The application redirects the user to the URL.\n5. The user enters the one-time code.\n6. New two-factor authentication settings are applied.\n\nYou must enable two-factor authentication for the Login project. Contact your Customer Success Manager to enable it.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country or region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n",
                    "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.\n",
                    "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 \\\n  --url 'https://login.xsolla.com/api/users/me/mfa?login_url=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --data '{\"enabled\":true,\"mfa_type\":\"email\"}'"
          }
        ]
      }
    },
    "/users/me/phone": {
      "get": {
        "description": "Gets the phone number of the authenticated user by JWT.\n\nThe phone number in this call is used only for passing the two-factor authentication.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n",
                      "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 \\\n  --url https://login.xsolla.com/api/users/me/phone \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Updates the phone number of the authenticated user by JWT.\n\nThe phone number in this call is used only for passing the two-factor authentication.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n",
                    "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/phone \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --data '{\"phone_number\":\"+79091091076\"}'"
          }
        ]
      }
    },
    "/users/me/phone/{phoneNumber}": {
      "delete": {
        "description": "Deletes the phone number of the authenticated user by JWT.\n\nThe phone number in this call is used only for passing the two-factor authentication.\n\n \n\n {% html name=\"div\" attrs={\"class\": \"notice\"} %}\n **Notice**\n\n [Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n {% /html %}\n",
        "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).\n",
            "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/phone/{phoneNumber} \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/me/phone_link/confirm": {
      "post": {
        "description": "{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n\n1. Call the method /users/me/phone_link/request\n2. Put your phone number in the body of the request\n3. Then u will receive the sms code\n4. Call method /users/me/phone_link/confirm with the code\n",
        "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/phone_link/confirm \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --data '{\"code\":\"1234\",\"operation_id\":\"1ks4las34g\",\"phone_number\":\"+1234567890\"}'"
          }
        ]
      }
    },
    "/users/me/phone_link/request": {
      "post": {
        "description": "\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n\n1. Call the method /users/me/phone_link/request\n2. Put your phone number in the body of the request\n3. Then u will receive the sms code\n4. Call method /users/me/phone_link/confirm with the code\n",
        "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/phone_link/request \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --data '{\"phone_number\":\"+1234567890\"}'"
          }
        ]
      }
    },
    "/users/me/picture": {
      "delete": {
        "description": "Deletes the profile picture of the authenticated user by JWT.\n \n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/picture \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Uploads the profile picture of the authenticated user by JWT.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/picture \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --header 'accept: multipart/form-data'"
          }
        ]
      }
    },
    "/users/me/relationships": {
      "get": {
        "description": "Gets a list of users added as friends of the authenticated user.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n* `friends` to get the list of the users added to the friend list\n* `friend_requested` to get the list of the users to who got the friend request\n* `friend_requested_by` to get the list of the users from who sent a friend request\n* `blocked` to get the list of the users added to the friend list, but blocked\n* `blocked_by` to get the list of the users who blocked this user\n",
            "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:\n* `by_nickname` to sort the list alphabetically by the nickname\n* `by_updated` to sort the list by the date when users recently added someone to their friend list or blocked them\n",
            "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:\n* `asc` to apply the `sort_by` value in ascending order\n* `desc` to apply the `sort_by` value in descending order\n",
            "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:\n  * `none` if there is no action initiated for the user\n  * `friend` if the user is in the friend list of the requested one\n  * `friend_requested` if the friend request is sent to the user by the requested one\n  * `blocked` if the user is blocked by the requested one\n",
                            "type": "string"
                          },
                          "status_outgoing": {
                            "description": "Type of the requested user. Can be:\n  * `none` if there is no action initiated for the user\n  * `friend` if the user is in the friend list of the one with the specified JWT\n  * `friend_requested` if the friend request is sent to the user by the one with the specified JWT\n  * `blocked` if the user is blocked by the one with the specified JWT\n",
                            "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --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' \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      },
      "post": {
        "description": "Updates the friend list of the authenticated user.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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:\n\n* `friend_request_add` to send a friend request,\n* `friend_request_cancel` to cancel the friend request that was sent,\n* `friend_request_approve` to confirm the friend request,\n* `friend_request_deny` to cancel the friend request that was received,\n* `friend_remove` to delete the user from the friend list,\n* `block` to block the user,\n* `unblock` to unblock the user.\n",
                    "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'\nviolated a constraint (This is not a valid UUID).\n"
                      }
                    }
                  }
                }
              }
            }
          },
          "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 \\\n  --url https://login.xsolla.com/api/users/me/relationships \\\n  --header 'Authorization: Bearer BEARER_TOKEN' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/users/me/social_friends?platform=SOME_STRING_VALUE&offset=0&limit=500&with_xl_uid=false' \\\n  --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.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url 'https://login.xsolla.com/api/users/me/social_friends/update?platform=SOME_STRING_VALUE' \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/me/social_providers": {
      "get": {
        "description": "Gets a list of the social networks linked to the user account.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/me/social_providers \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/me/social_providers/{providerName}": {
      "delete": {
        "description": "Deletes social network linked to the user account.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\nIf 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.\n",
            "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\n",
        "tags": [
          "social-networks"
        ],
        "x-client": true,
        "x-tags": [
          "social-networks"
        ],
        "x-codeSamples": [
          {
            "lang": "Curl",
            "source": "curl --request DELETE \\\n  --url https://login.xsolla.com/api/users/me/social_providers/{providerName} \\\n  --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.\n\nThe linking flow:\n1. The user authenticates on the game website.\n2. The UI offers to link the social network to the user account.\n3. The Xsolla Login server redirects the user to the social network.\n4. The user authenticates in the social network.\n5. The Xsolla Login server links the social network to the user account.\n6. The Xsolla Login server redirects the user to the game website.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "in": "query",
            "name": "redirect_uri",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Arrange xsolla wallet form behaivior values:\n* `true` show only passwordless by phone,\n* `false` all auth methods.\n",
            "in": "query",
            "name": "phone_only",
            "x-isnullable": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "description": "Region in the `<language code>_<country code>` format, where:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of social networks will be sorted from most to least used, according to the variable value.\n",
            "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 \\\n  --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' \\\n  --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.\n\nThe linking flow:\n1. The user authenticates on the game website.\n2. The UI offers to link the social network to the user account.\n3. The Xsolla Login server returns social network URL.\n4. The game website redirects the user to the social network.\n5. The user authenticates in the social network.\n6. The Xsolla Login server links the social network to the user account.\n7. The Xsolla Login server redirects the user to the game website.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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).\n\nIf 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.\n",
            "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).\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\nThe parameter is required if you have more than one redirect URI in your project settings.\n{% /html %}\n",
            "in": "query",
            "name": "redirect_uri",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Arrange xsolla wallet form behaivior values:\n* `true` show only passwordless by phone,\n* `false` all auth methods.\n",
            "in": "query",
            "name": "phone_only",
            "x-isnullable": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "description": "Region in the `<language code>_<country code>` format, where:\n\n* `language code`: language code in the [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format;\n* `country code`: country/region code in the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.\n\nThe list of social networks will be sorted from most to least used, according to the variable value.\n",
            "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 \\\n  --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' \\\n  --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.\n\nThe workflow of using this call:\n1. The user enters a nickname or tag, or nickname and tag.\n2. The Xsolla Login server searches for users in the Login project data of the user who initiated a search.\n\nThe current user can execute this call only one time per second.\n\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "operationId": "search-users-by-nickname",
        "parameters": [
          {
            "description": "The search string that may contain:\n* nickname only. Search is performed by substring at the beginning of the nickname.\n* tag only, is used with \"#\" at the beginning. Search is performed by substring at the beginning of the tag.\n* nickname and tag together, is used with \"#\" and without space. Search is performed by full nickname and substring at the beginning of the tag.\n",
            "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 \\\n  --url 'https://login.xsolla.com/api/users/search/by_nickname?nickname=SOME_STRING_VALUE&offset=0&limit=100' \\\n  --header 'Authorization: Bearer BEARER_TOKEN'"
          }
        ]
      }
    },
    "/users/{user_id}/public": {
      "get": {
        "description": "Gets the user information from their public profile by the user ID.\n\n\n{% html name=\"div\" attrs={\"class\": \"notice\"} %}\n**Notice**\n\n[Rate limits for client-side methods](/api/login/rate-limits) are applied to this method.\n{% /html %}\n",
        "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 \\\n  --url https://login.xsolla.com/api/users/{user_id}/public \\\n  --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",
        "webhook v2"
      ]
    },
    {
      "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.\n\nThe link can be used instead of the confirmation code to log in.\n\nIf the parameter has the `true` value, the link is sent in the email.\n",
                  "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.\nTo add attribute which does not exist, set this attribute to the `key` parameter.\nTo update `value` of the attribute, specify its `key` parameter and set new `value`. You can change several attributes at a time.\n",
                  "items": {
                    "properties": {
                      "attr_type": {
                        "default": "client",
                        "description": "Definition of user’s access level to service attributes:\n  * `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.\n  * `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.\n",
                        "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:\n* For Android, it is an [ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID) constant.\n* For iOS, it is an [identifierForVendor](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor?language=objc) property.\n",
                  "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.\n\nThe link can be used instead of the confirmation code to log in.\n\nIf the parameter has the `true` value, the link is sent in the SMS.\n",
                  "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/getting-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/getting-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.\n",
            "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:\n* `authorization_code` to exchange the code received in the authentication call to the JWT. The value of the `code` parameter must be specified.\n* `refresh_token` to get the refreshed JWT when the previous value is expired. The value of the `refresh_token` parameter must be specified.\n* `client_credentials` to get the server JWT. The values of the `client_id` and `client_secret` parameters must be specified.\n* `password` to get the JWT by authentication via login and password directly, `is_public` must have the `true` value.\n",
            "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.\n\nCan be:\n* `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.\n* `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.\n* `playfab` to write **SessionTicket** to the `session_ticket` claim of the JWT if you store user data at PlayFab.\n\nIf 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.\n",
            "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:\n  * `none` if there is no action initiated for the user\n  * `friend` if the user is in the friend list of the requested one\n  * `friend_requested` if the friend request is sent to the user by the requested one\n  * `blocked` if the user is blocked by the requested one\n",
            "type": "string"
          },
          "status_outgoing": {
            "description": "Type of the requested user. Can be:\n  * `none` if there is no action initiated for the user\n  * `friend` if the user is in the friend list of the one with the specified JWT\n  * `friend_requested` if the friend request is sent to the user by the one with the specified JWT\n  * `blocked` if the user is blocked by the one with the specified JWT\n",
            "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:\n  * `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.\n  * `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.\n",
            "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`.\n",
            "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:\n* `f` for female\n* `m` for male\n* `other`\n* `prefer not to answer`\n",
            "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:\n* `f` for female\n* `m` for male\n* `other`\n* `prefer not to answer`\n",
            "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"
      }
    }
  }
}