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 и паролю
/api-rest/user/auth
Проверяет email и пароль и выпускает пару токенов: access на час и refresh на год. Каждый вызов выпускает новую пару; прежние токены продолжают работать. Заголовок token этому методу не нужен.
Параметры query и JSON-тело
-
emailstring обязательныйEmail аккаунта Пиксель Тулс. -
passwordstring обязательныйПароль аккаунта.
Ответ
Успех — code: 201.
-
data.jwt_tokenstringAccess token — его передают в заголовкеtokenвсех остальных методов. Живёт 1 час. -
data.refresh_tokenstringRefresh token для user/refresh-token. Живёт 1 год — сохраните его. -
data.validdatetimeКогда истекает access token,ГГГГ-ММ-ДД чч:мм:сс.
Новый access token по refresh token
/api-rest/user/refresh-token
Выпускает новый access token на час, не спрашивая пароль. Refresh token передаётся в заголовке refresh-token и возвращается в ответе тот же — новый не выпускается. Когда он истечёт, получите новую пару через user/auth.
Параметры query и тело формы
-
refresh-tokenstring обязательный заголовокRefresh token из ответа user/auth.
Ответ
Успех — code: 201, message: Token has been updated successfully.
-
data.jwt_tokenstringAccess token — его передают в заголовкеtokenвсех остальных методов. Живёт 1 час. -
data.refresh_tokenstringRefresh token для user/refresh-token. Живёт 1 год — сохраните его. -
data.validdatetimeКогда истекает access token,ГГГГ-ММ-ДД чч:мм:сс.
Регистрация нового аккаунта
/api-rest/user/register
Создаёт аккаунт Пиксель Тулс и сразу выпускает для него токены — отдельно вызывать user/auth не нужно. Токены лежат на уровень глубже, чем в user/auth: в data.data.
Параметры query и JSON-тело
-
emailstring обязательныйEmail нового аккаунта. Нельзя:& = + < > , 'и две точки подряд. -
passwordstring обязательныйПароль. Проверяется только, что он не пустой. -
namestringИмя пользователя. -
usernamestringЛогин. Без него — не задаётся. -
mobile_phonestringТелефон.
Ответ
Успех — code: 201. В data вложен целиком ответ выпуска токенов: data.data — токены, data.code, data.status, data.message — его статус.
-
data.data.jwt_tokenstringAccess token, 1 час. -
data.data.refresh_tokenstringRefresh token, 1 год. -
data.data.validdatetimeКогда истекает access token.
Отключение своего аккаунта
/api-rest/user/delete
Отключает аккаунт, которому принадлежит токен из заголовка token. Данные не стираются, но войти больше нельзя: user/auth вернёт 418 User has been deleted. Вернуть аккаунт — через поддержку.
Отключить можно только свой аккаунт: без действующего токена метод ответит 401 Token is not authorized.
Параметры query и тело формы
-
tokenstring обязательный заголовок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 внутри поля формы методы не разбирают.
Жизненный цикл токенов
user/auth— получитьjwt_tokenиrefresh_token.- Передавать
jwt_tokenв заголовкеtokenвсех методов. - Когда до
validостаётся мало времени —user/refresh-token. - Раз в год, когда истечёт refresh token, — снова
user/auth.