# Создать персональный токен

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Создать персональный токен

`POST /api/v1/security/tokens`

**Авторизация:** dpop

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

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

**Тело запроса** (`application/json`, обязательное): CreatePatBody
- `expiresInDays`: integer — Срок действия в днях, до 3650; без значения — бессрочный
- `name`: string, обязательное — Название токена (для чего используется)
- `scopes`: массив string — Scope токена (см. GET /api/v1/scopes); пусто — все права владельца

**Ответы**

- `201` — Токен создан (`application/json`, CreatePatResponse)
  - `pat`: PersonalAccessToken, обязательное
    - `createdAt`: string (date-time), обязательное — Когда создан, ISO 8601
    - `expiresAt`: string (date-time), nullable, обязательное — Срок действия, ISO 8601; null — бессрочный
    - `id`: string, обязательное — Идентификатор токена
    - `lastUsedAt`: string (date-time), nullable, обязательное — Последнее использование, ISO 8601; null — не использовался
    - `name`: string, обязательное — Название токена
    - `prefix`: string, обязательное — Первые символы токена для узнавания в списке
    - `scopes`: массив string, обязательное — Scope токена; пусто — все права владельца
  - `token`: string, обязательное — Значение токена — показывается только один раз, сохраните его
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)
- `429` — Превышен лимит запросов, повторите через Retry-After секунд (`application/problem+json`, ProblemDetails)

    </>
  );
}
