Аутентификация
Для вызова операции передайте в JSON её documentId и variables.
HTTP-заголовки
| Заголовок | Обязательный | Описание |
|---|---|---|
Content-Type | да | application/json |
Accept-Language | нет | Язык ответа в стандартном HTTP-формате |
Authorization | для закрытых операций | Bearer <sessionId> |
X-Project-Context | да | identity.contextToken текущей конфигурации проекта |
X-Request-Id | нет | Идентификатор запроса для трассировки |
Передавайте identity.contextToken из конфигурации проекта без изменений. Для авторизованных операций также необходима пользовательская сессия.
Вход по паролю
{
"documentId": "login",
"variables": {
"password": "account-password",
"rememberMe": true
}
}
{
"data": {
"login": {
"sessionId": "session-token",
"sessionEnd": "2026-07-20 12:00:00",
"twoFactorChallenge": null,
"user": {
"id": "1001",
}
}
}
}
Передавайте полученный sessionId в Authorization всех последующих закрытых запросов.
Вход с двухфакторной проверкой
Если для аккаунта включена двухфакторная аутентификация, login не создаёт сессию. Вместо неё возвращается одноразовый запрос подтверждения:
{
"data": {
"login": {
"sessionId": null,
"twoFactorChallenge": {
"token": "opaque-challenge-token",
"availableMethods": ["totp", "email", "recovery_code"],
"expiresAt": "2026-07-19 12:10:00"
}
}
}
}
Для email сначала вызовите requestTwoFactorChallengeCode, чтобы отправить код по почте. Для totp и recovery_code этот шаг не нужен.
{
"documentId": "verifyTwoFactorChallenge",
"variables": {
"challengeToken": "opaque-challenge-token",
"method": "totp",
"code": "123456"
}
}
{
"data": {
"verifyTwoFactorChallenge": {
"sessionId": "session-token",
"sessionEnd": "2026-07-20 12:00:00",
"user": {
"id": "1001",
}
}
}
}
Используйте запрос подтверждения из текущей попытки входа. Если он истёк или исчерпан лимит попыток, начните вход заново. После успешного подтверждения повторно использовать этот запрос нельзя.
Passkey
Вход через Passkey использует отдельную процедуру WebAuthn:
- Получите параметры через
passkeyAuthOptions. - Передайте их в WebAuthn API браузера.
- Отправьте полученное подтверждение в
loginPasskey.
Успешный вход с Passkey создаёт сессию без дополнительного ввода пароля или кода 2FA.
Публичные операции
Без Authorization доступны операции начала или завершения входа и публичные данные проекта:
| Операция | Назначение |
|---|---|
registerEmail | Начать регистрацию по email |
confirmRegistrationCode | Подтвердить шестизначный код регистрации |
login, loginGameAccount | Вход по паролю |
sendMagicLink, loginMagicLink | Вход по одноразовой ссылке |
sendMagicCode, loginMagicCode | Вход по одноразовому коду |
requestTwoFactorChallengeCode | Отправить код по почте для текущего запроса подтверждения |
verifyTwoFactorChallenge | Завершить вход с двухфакторной проверкой |
passkeyAuthOptions, loginPasskey | Вход через Passkey |
sendPasswordRecoveryEmail, confirmPasswordRecoveryCode | Восстановление пароля |
projectSettings, servers | Публичная конфигурация проекта |
Социальная авторизация настраивается и публикуется конкретным проектом. Она не заменяет локальные правила безопасности аккаунта.
Пример закрытого запроса
curl -X POST https://api.mmo-web.dev/graphql \
-H "Accept-Language: ru" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer session-token" \
-H "X-Project-Context: project-context-token" \
-d '{"documentId":"me","variables":{}}'