REST API · JWT

rest-auth REST API: вход, токены и аккаунт

REST API работает от имени пользователя, который вошёл по email и паролю: метод user/auth выдаёт JWT, дальше он передаётся в HTTP-заголовке token. Так устроено мобильное приложение Пиксель Тулс — API подходит для клиентов, где каждый пользователь входит в свой аккаунт сам: регистрация, тариф, баланс, лимиты, сводка по проектам.

Для своих скриптов и интеграций удобнее API по ключу: инструменты (/api/<метод>?key=…) и SEO-проекты (/projects/api/v1/…?token=…) работают с постоянным ключом из настроек аккаунта, без пароля и обновления токенов. Ключ API и JWT не взаимозаменяемы: ключ в заголовке token REST не примет.

Адрес
/api-rest/<метод>
Авторизация
JWT в заголовке token
Тело запроса
JSON или форма
Лимиты
методы этой страницы не тратят

Выпуск токенов по email и паролю

POST /api-rest/user/auth

Проверяет email и пароль и выпускает пару токенов: access на час и refresh на год. Каждый вызов выпускает новую пару; прежние токены продолжают работать. Заголовок token этому методу не нужен.

Параметры query и JSON-тело

  • email string обязательный
    Email аккаунта Пиксель Тулс.
  • password string обязательный
    Пароль аккаунта.

Ответ

Успех — code: 201.

  • data.jwt_token string
    Access token — его передают в заголовке token всех остальных методов. Живёт 1 час.
  • data.refresh_token string
    Refresh token для user/refresh-token. Живёт 1 год — сохраните его.
  • data.valid datetime
    Когда истекает access token, ГГГГ-ММ-ДД чч:мм:сс.

Новый access token по refresh token

POST /api-rest/user/refresh-token

Выпускает новый access token на час, не спрашивая пароль. Refresh token передаётся в заголовке refresh-token и возвращается в ответе тот же — новый не выпускается. Когда он истечёт, получите новую пару через user/auth.

Параметры query и тело формы

  • refresh-token string обязательный заголовок
    Refresh token из ответа user/auth.

Ответ

Успех — code: 201, message: Token has been updated successfully.

  • data.jwt_token string
    Access token — его передают в заголовке token всех остальных методов. Живёт 1 час.
  • data.refresh_token string
    Refresh token для user/refresh-token. Живёт 1 год — сохраните его.
  • data.valid datetime
    Когда истекает access token, ГГГГ-ММ-ДД чч:мм:сс.

Регистрация нового аккаунта

POST /api-rest/user/register

Создаёт аккаунт Пиксель Тулс и сразу выпускает для него токены — отдельно вызывать user/auth не нужно. Токены лежат на уровень глубже, чем в user/auth: в data.data.

Параметры query и JSON-тело

  • email string обязательный
    Email нового аккаунта. Нельзя: & = + < > , ' и две точки подряд.
  • password string обязательный
    Пароль. Проверяется только, что он не пустой.
  • name string
    Имя пользователя.
  • username string
    Логин. Без него — не задаётся.
  • mobile_phone string
    Телефон.

Ответ

Успех — code: 201. В data вложен целиком ответ выпуска токенов: data.data — токены, data.code, data.status, data.message — его статус.

  • data.data.jwt_token string
    Access token, 1 час.
  • data.data.refresh_token string
    Refresh token, 1 год.
  • data.data.valid datetime
    Когда истекает access token.

Отключение своего аккаунта

POST /api-rest/user/delete

Отключает аккаунт, которому принадлежит токен из заголовка token. Данные не стираются, но войти больше нельзя: user/auth вернёт 418 User has been deleted. Вернуть аккаунт — через поддержку.

Отключить можно только свой аккаунт: без действующего токена метод ответит 401 Token is not authorized.

Параметры query и тело формы

  • token string обязательный заголовок
    Access token из user/auth.

Ответ

Успех — code: 202, data пустой.

Ошибки

КодСообщениеКогда
401 Token is not authorized. Check api documentation on /api-rest/doc Любой метод, кроме этих трёх (auth, refresh-token, register): заголовок token не передан, подпись неверна или пользователь не найден.
400 Incorrect user email! auth: email не передан или некорректен.
404 User not found or incorrect credentials auth: нет такого пользователя или пароль неверный.
418 User has been deleted auth: аккаунт отключён через user/delete.
404 Refresh token field is empty refresh-token: нет заголовка refresh-token.
404 Invalid refresh token! refresh-token: подпись токена неверна или его пользователь не найден.
400 Email is not correct! register: email некорректен.
400 Ampersand (&), equal sign (=), … are not allowed in email register: в email запрещённый символ или две точки подряд.
400 User already exists register: аккаунт с таким email уже есть.
400 Password cannot be empty. register: пароль пустой.
404 Path: "…" does not found Метода по такому адресу нет.

Формат ответа

Все методы REST отвечают одной обёрткой: status (success или error), message, code, data и dt — время ответа сервера. HTTP-код всегда 200: успех и ошибка различаются полями status и code в теле. status: success ставится при code от 200 до 299.

Как передавать параметры

Методы принимают GET и POST, но параметры читают из тела запроса — передавайте их POST-ом: JSON с заголовком Content-Type: application/json или обычной формой. Массивы в форме — как project[]=1&project[]=2, в JSON — обычными массивами. Строку JSON внутри поля формы методы не разбирают.

Жизненный цикл токенов

  1. user/auth — получить jwt_token и refresh_token.
  2. Передавать jwt_token в заголовке token всех методов.
  3. Когда до valid остаётся мало времени — user/refresh-token.
  4. Раз в год, когда истечёт refresh token, — снова user/auth.
Обратная связь и помощь
Если у вас есть идеи, как улучшить данный инструмент или остались вопросы по работе с ним, напишите в нашу службу поддержки, мы обязательно вам поможем.