Токены
Роут token добавляется к пути интерфейса API и работает при включённых нативных роутах.
| Запрос | Авторизация | Результат |
|---|---|---|
| GET token | Basic: логин и пароль пользователя | Активные токен-сессии пользователя, HTTP 200 |
| POST token | Basic: логин и пароль пользователя | Новая пара access/refresh, HTTP 201 |
| PUT token | Bearer: refresh-токен | Замена пары токенов, HTTP 200 |
| DELETE token?client_id=… | Bearer: access-токен | Отзыв токенов указанного клиента, HTTP 200 |
Используйте HTTPS. При AUTH_MFA_REQUIRED завершите вход с MFA на сайте и повторите запрос с cookie этой сессии.
Выпуск и обновление
POST и PUT возвращают в result массив из двух объектов:
| Поле | Значение |
|---|---|
type | access или refresh |
token | Значение токена для заголовка Authorization |
active_to | Дата окончания действия |
timestamp.active_to | Срок действия в Unix timestamp |
timestamp.expires_in | Срок действия в секундах |
expires_in | Срок действия в текстовом виде |
POST для того же клиента и PUT заменяют прежнюю пару. Сохраните оба новых токена. Схема жизненного цикла, сроки действия.
Привязка к клиенту
Токены, полученные при выпуске через API, привязаны к клиенту. Используйте одинаковые
User-Agent, Accept-Language, Sec-CH-UA, Sec-CH-UA-Mobile и Sec-CH-UA-Platform
при выпуске, обновлении и обращении к защищённым роутам. Для серверной интеграции
задайте постоянный User-Agent.
При изменении этих заголовков access- и refresh-токены могут быть отклонены с
AUTH_INVALID (HTTP 401). Например, после смены браузера или языка может потребоваться
получить новую пару. Если все перечисленные заголовки пусты, возвращается AUTH_REQUIRED (HTTP 401).
Для использования в другом приложении можно выпустить пару вручную.
Такие токены не привязаны к заголовкам клиента; передавайте User-Agent и соблюдайте их срок действия.
Список и отзыв
GET возвращает даты date_create, active_to, их Unix timestamp в timestamp и объект client: id, name, ip, type, agent. Значения токенов не выдаются. Если сессий нет, result может отсутствовать.
В DELETE передайте client.id из списка в параметре client_id. Ответ: result.delete — удалены ли токены, result.client_id — переданный ID. Если у пользователя нет токенов этого клиента, delete равен false, а result.code содержит CLIENT_NOT_FOUND. HTTP-статус остаётся 200. Для чужого и отсутствующего клиента ответ одинаков. При delete = true поле code отсутствует. Отмена удаления обработчиком события и ошибка записи возвращаются отдельными ошибками.
При отключённом техническом конверте результат возвращается без обёртки result.
Пример данных result, когда токены клиента не найдены:
{
"delete": false,
"client_id": "client-id",
"code": "CLIENT_NOT_FOUND"
}В XML те же данные представлены элементами (фрагмент ответа):
<result>
<delete></delete>
<client_id>client-id</client_id>
<code>CLIENT_NOT_FOUND</code>
</result>