Авторизация
Доступ к Merchant API — по bearer-токену. Токен выдаётся по email и паролю учётной записи магазина и передаётся в заголовке каждого защищённого запроса.
Получение токена
POST /api/merchant-service/auth/token
Метод открытый (токен для него не нужен). В теле — email и пароль:
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/auth/token \
-H "Content-Type: application/json" \
-d '{"email":"shop@example.com","password":"••••••"}'
Ответ:
{
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token_type": "bearer",
"expires_in": null
}
| Поле | Тип | Описание |
|---|---|---|
token |
string | Bearer-токен для последующих запросов. |
token_type |
string |
Всегда bearer. |
expires_in |
integer | null |
Срок жизни в секундах; null — токен без срока. |
Сохраните токен на своей стороне. Если он скомпрометирован — отзовите его (см. Выход) и получите новый.
Использование токена
Добавляйте токен в заголовок Authorization каждого защищённого запроса:
curl https://admin.mobiusapp.ru/api/merchant-service/orders/list \
-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Запрос без валидного токена к защищённому методу вернёт 403.
Выход
POST /api/merchant-service/auth/logout
Отзывает текущий токен. После выхода токен становится недействительным.
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/auth/logout \
-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
{ "message": "Logged out" }
Контекст магазина
Магазин определяется автоматически по токену — передавать его идентификатор не нужно. Все запросы выполняются в контексте магазина, привязанного к учётной записи. Если активный магазин к учётной записи не привязан, защищённые методы вернут бизнес-ошибку (422).
Лимит на вход
Метод получения токена защищён от перебора: не более 10 запросов в минуту с
одного IP. При превышении возвращается 429 с заголовком Retry-After
(сколько секунд ждать до следующей попытки). Подробнее — в разделе
Ошибки, лимиты и пагинация.
Ошибки авторизации
| Статус | Когда | Тело |
|---|---|---|
401 |
Неверные email или пароль |
{ "error", "errorCode", "message" } |
403 |
Нет валидного токена на защищённом методе |
{ "error", "errorCode", "message" } |
429 |
Превышен лимит запросов на вход | см. Ошибки, лимиты и пагинация |