Ошибки
Общие соглашения, единые для всех методов Merchant API. На эту страницу ссылаются остальные разделы.
Формат успешного ответа
Методы, возвращающие одну сущность, оборачивают её в поле data:
{ "data": { "id": 1024, "price": 1990 } }
Часть методов дополнительно возвращают флаг success: true. Списки
возвращаются с обёрткой пагинации (см. Пагинация).
HTTP-статусы
| Статус | Значение |
|---|---|
200 |
Успех. |
401 |
Неверные учётные данные (только на входе). |
403 |
Нет валидного bearer-токена. |
404 |
Сущность не найдена в контексте текущего магазина. |
422 |
Ошибка валидации входных данных или бизнес-ошибка. |
429 |
Превышен лимит частоты запросов. |
Форматы ошибок
Тело ошибки зависит от её типа.
Ошибка авторизации (401, 403)
{
"error": "Unauthorized",
"errorCode": "invalid_credentials",
"message": "Неверный email или пароль"
}
Ошибка валидации (422)
Поле messages — словарь, где ключ это имя поля запроса, а значение — список
сообщений по этому полю.
{
"error": "Validation failed",
"messages": {
"0.price": ["Цена должна быть положительной"],
"0.currency": ["Недопустимая валюта"]
}
}
Бизнес-ошибка (422)
Возвращается, когда запрос корректен по форме, но невыполним по сути — например, к учётной записи не привязан активный магазин, или не найден товар при обновлении заказа.
{
"error": "Business error",
"message": "Не найден активный магазин"
}
Не найдено (404)
{ "error": "Not found", "message": "Заказ не найден" }
Лимит частоты запросов
Часть открытых методов (например, получение токена)
защищена от перебора: не более 10 запросов в минуту с одного IP. При
превышении возвращается 429 со следующими заголовками:
| Заголовок | Описание |
|---|---|
Retry-After |
Через сколько секунд можно повторить запрос. |
X-RateLimit-Limit |
Допустимое число запросов в окне. |
X-RateLimit-Remaining |
Сколько запросов осталось в текущем окне. |
Тело:
{ "error": "Too many requests", "message": "Слишком много попыток. Повторите позже." }
Обрабатывайте 429 с уважением к Retry-After: дождитесь указанного времени
перед повторной попыткой.
Пагинация
Списочные методы (например, список заказов)
возвращают данные в обёртке с полями data, links и meta:
{
"data": [ /* элементы списка */ ],
"links": {
"first": "https://admin.mobiusapp.ru/api/merchant-service/orders/list?page=1",
"last": "https://admin.mobiusapp.ru/api/merchant-service/orders/list?page=5",
"prev": null,
"next": "https://admin.mobiusapp.ru/api/merchant-service/orders/list?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"to": 25,
"per_page": 25,
"last_page": 5,
"total": 118,
"path": "https://admin.mobiusapp.ru/api/merchant-service/orders/list"
}
}
Поле meta |
Описание |
|---|---|
current_page |
Текущая страница. |
last_page |
Номер последней страницы. |
per_page |
Размер страницы. |
total |
Всего элементов по фильтру. |
from / to |
Диапазон порядковых номеров на странице (или null, если пусто). |
path |
Базовый путь без параметров страницы. |
Страница и размер страницы задаются параметрами page и limit.