# Подтверждение 2FA при входе

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Подтверждение 2FA при входе

`POST /api/v1/security/auth/verify-totp`

**Параметры**

| Имя | Где | Обязательный | Тип | Описание |
| --- | --- | --- | --- | --- |
| `idempotency-key` | header | нет | string | Ключ идемпотентности для безопасного повтора запроса: 8–255 символов из набора A-Za-z0-9_.:+/=-, ответ кэшируется на 24 ч |

**Тело запроса** (`application/json`, обязательное): VerifyTotpBody
- `challengeId`: string, обязательное — Идентификатор 2FA-челленджа из ответа POST /login
- `code`: string, обязательное — Шестизначный TOTP-код из приложения или резервный код

**Ответы**

- `200` — Второй фактор подтверждён, вход выполнен (`application/json`, AuthSuccess и object)
  - `accessToken`: string, обязательное — JWT access-токен; refresh-токен устанавливается в HttpOnly-cookie
  - `session`: Session, обязательное — Кто вошёл и в какой команде; меняется только новым входом или сменой команды
    - `teamId`: string, обязательное — Команда, в которой действует сессия
    - `userId`: string, обязательное — Пользователь сессии
  - `refreshToken`: string — Refresh-токен для Telegram Mini App
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `429` — Превышен лимит запросов, повторите через Retry-After секунд (`application/problem+json`, ProblemDetails)

    </>
  );
}
