Заказы
Методы для чтения и изменения заказов текущего магазина: список с фильтрами, карточка, обновление, смена статуса и отмена. Все методы синхронные — результат возвращается сразу.
Список заказов
GET /api/merchant-service/orders/list
Возвращает заказы текущего магазина постранично. Все фильтры опциональны. Сортировка по умолчанию — по дате создания, новые сверху.
curl "https://admin.mobiusapp.ru/api/merchant-service/orders/list?status_code=in_progress&payed=true&limit=50" \
-H "Authorization: Bearer <token>"
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
limit |
integer | Размер страницы, 1–100 (по умолчанию 25). |
page |
integer | Номер страницы (по умолчанию 1). |
id |
integer | Точное совпадение по id заказа. |
customer |
string | Поиск по контактным данным покупателя (подстрока). |
status_code |
string | Точное совпадение по коду статуса. |
payment_id |
integer | Фильтр по способу оплаты. |
delivery_id |
integer | Фильтр по способу доставки. |
person_type |
string |
individual или legal. |
payed |
boolean | Оплачен / не оплачен. |
canceled |
boolean | Отменён / не отменён. |
created_at_from |
string |
Дата от, в формате d.m.Y (например, 01.06.2026). |
created_at_to |
string |
Дата до, в формате d.m.Y. |
sort_by |
string |
id, created_at или price. |
sort_dir |
string |
asc или desc. |
Ответ
Списочная обёртка с data, links, meta (см.
Пагинация). Каждый элемент data — краткая карточка
заказа:
{
"data": [
{
"id": 1024,
"created_at": "2026-06-20T12:30:00Z",
"price": 3980,
"delivery_price": 300,
"bonus_spent": 0,
"person_type": "individual",
"status_code": "in_progress",
"status_label": "В работе",
"status_updated_at": "2026-06-20T13:00:00Z",
"payed": true,
"payed_updated_at": "2026-06-20T12:35:00Z",
"canceled": false,
"canceled_updated_at": null,
"customer": { "name": "Иван", "phone": "+70000000000", "email": "ivan@example.com" },
"payment": { "id": 3, "title": "Онлайн-оплата" },
"delivery": {
"id": 5,
"title": "Курьер",
"pickup_point": null,
"location": { "id": 77, "name": "Москва" }
}
}
],
"links": { "first": "…", "last": "…", "prev": null, "next": "…" },
"meta": { "current_page": 1, "per_page": 25, "total": 118, "last_page": 5 }
}
Карточка заказа
GET /api/merchant-service/orders/item/{id}
Возвращает полную информацию о заказе: покупатель, поля заказа, оплата, доставка и состав корзины.
curl https://admin.mobiusapp.ru/api/merchant-service/orders/item/1024 \
-H "Authorization: Bearer <token>"
Ключевые поля data:
| Поле | Описание |
|---|---|
id, created_at |
Идентификатор и дата заказа. |
person_type |
individual или legal. |
customer_comment |
Комментарий покупателя. |
status |
Объект { code, label, updated_at }. |
payed, payed_updated_at |
Признак оплаты и когда он менялся. |
canceled, canceled_updated_at |
Признак отмены и когда он менялся. |
price |
Итог заказа. |
items_price |
Сумма товаров без доставки. |
delivery_price |
Стоимость доставки. |
bonus_spent |
Списано бонусов. |
user |
Покупатель: { id, name, phonenumber, email } (или null). |
customer_fields |
Заполненные поля заказа: список { code, title, type, value }. |
payment |
Оплата: { id, title, handler, payload }. |
delivery |
Доставка: { id, title, type, price, pickup_point, location }. |
basket |
Состав корзины: список позиций. |
delivery.type — courier или pickup. Для самовывоза заполняется
delivery.pickup_point ({ id, title, address, phonenumber, worktime }), для
курьера — delivery.location ({ id, name }).
Полная схема — OrderItem в OpenAPI документации.
Если заказ не найден в контексте текущего магазина — 404.
Обновление заказа
POST /api/merchant-service/orders/update/{id}
Все поля опциональны — передавайте только то, что нужно изменить. Поля, не переданные в теле, остаются прежними. Минимум одно поле должно быть передано. В ответе возвращается полная карточка заказа (как в карточке).
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/orders/update/1024 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"payed": true,
"delivery_price": 300,
"basket": [
{ "product_external_id": "SKU-100", "quantity": 2, "price": 1990, "currency": "RUB" }
]
}'
Поля запроса
| Поле | Тип | Описание |
|---|---|---|
person_type |
string |
individual или legal. |
customer_comment |
string | null | Комментарий покупателя. |
customer_payload |
object | Полная замена данных полей заказа. |
payment_id |
integer | null | Способ оплаты. |
delivery_id |
integer | null | Способ доставки. |
delivery_price |
number | null | Стоимость доставки (не меньше 0). |
pickup_point_id |
integer | null | Пункт самовывоза по внутреннему id. |
pickup_point_external_id |
string | null | Пункт самовывоза по внешнему id. |
location_id |
integer | null | Местоположение доставки. |
payed |
boolean | Признак оплаты. |
basket |
array | Полная замена корзины. |
Замена корзины
Если передан basket, корзина перезаписывается целиком, а итог заказа
пересчитывается автоматически: price = sum(quantity × price) + delivery_price.
Передача пустого массива [] очищает корзину.
Позиция корзины (OrderBasketUpdateItem):
| Поле | Тип | Описание |
|---|---|---|
product_id |
integer | null | Товар по внутреннему id. |
product_external_id |
string | null | Товар по внешнему id. |
quantity |
number | Количество, не меньше 0 (обязательно). |
price |
number | null | Цена за единицу. Если не задана — берётся минимальная цена товара по умолчанию. |
currency |
string | Код валюты. |
Для товара укажите хотя бы одно из product_id / product_external_id — поиск
идёт сначала по внутреннему id, затем по внешнему id в рамках текущего магазина.
Так же работает пункт самовывоза: pickup_point_id / pickup_point_external_id.
Метки времени
Если передан payed и он отличается от текущего значения, метка
payed_updated_at обновится на текущий момент.
Ошибки
422 — ошибка валидации (формат) или бизнес-ошибка (например, не найден товар
или пункт самовывоза по переданному id). 404 — заказ не найден.
Смена статуса
POST /api/merchant-service/orders/status/{id}
Меняет статус заказа. Статус задаётся полем status — это код статуса. Поиск
идёт сначала по внутреннему коду статуса, затем по внешнему коду статуса в рамках
текущего магазина.
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/orders/status/1024 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "status": "in_progress" }'
Ответ:
{
"success": true,
"data": {
"id": 1024,
"status_code": "in_progress",
"status_label": "В работе",
"status_updated_at": "2026-06-21T10:20:00Z"
}
}
Если переданный статус совпадает с текущим, запись не обновляется и
status_updated_at остаётся прежним. Если статус с таким кодом не найден —
бизнес-ошибка (422). Если заказ не найден — 404.
Отмена заказа
POST /api/merchant-service/orders/cancel/{id}
Помечает заказ отменённым (canceled = true) и обновляет метку времени отмены.
Метод идемпотентный: повторный вызов для уже отменённого заказа не меняет
данные. Статус заказа при этом не меняется — для смены статуса используйте
отдельный метод.
curl -X POST https://admin.mobiusapp.ru/api/merchant-service/orders/cancel/1024 \
-H "Authorization: Bearer <token>"
{
"success": true,
"data": {
"id": 1024,
"canceled": true,
"canceled_updated_at": "2026-06-21T10:25:00Z"
}
}
Если заказ не найден — 404.
Связанные разделы
- Импорт цен и остатков
- Ошибки, лимиты и пагинация
- Вебхуки — получать события заказов (создан, оплачен, отменён) в реальном времени.
- OpenAPI документация — схемы
OrderListItem,OrderItem,OrderUpdateRequest.