Отмены

Сценарии отмены заказа со стороны покупателя и мерчанта.

Отмена заказа

Отмена в DBS реализуется двумя путями. Запрос покупателя идёт через витрину → заявка в cancellation/*, которую мерчант одобряет или отклоняет. Если отменяет мерчант — он меняет статус заказа напрямую через POST /v1/order/dbs/status/update → CANCELLED.

Путь A — отмена по запросу покупателя (через витрину)

  1. Покупатель инициирует отмену на витрине; витрина создаёт заявку.
  2. POST /v1/cancellation/list — CancellationListRequest.required: filter, limit. Пример: filter.status: ["NEW"].
  3. POST /v1/cancellation/update — status: "APPROVED_CANCEL" или "DECLINED". Поле comment — опционально.
  4. При одобрении заказ переходит в CANCELLED на стороне витрины.

Витрина и мерчант могут согласовать отмену без подтверждения заявки до отгрузки — условия обсуждаются при интеграции.

Путь B — отмена мерчантом

  1. Мерчант принимает решение об отмене (товар недоступен, ошибка и т.д.).
  2. POST /v1/order/dbs/status/update — status: "CANCELLED", changed_by: "MERCHANT".
  3. Отдельная заявка cancellation/* не требуется.

JSON — POST /v1/cancellation/list

{
  "cursor": "",
  "limit": 100,
  "filter": {
    "status": ["NEW"]
  }
}

JSON — POST /v1/cancellation/update

CancellationUpdateRequest.required: cancellation_id, status. comment опционален.

{
  "cancellation_id": 10042,
  "status": "APPROVED_CANCEL",
  "comment": "Товар не собран, отмена одобрена"
}

Поле comment в cancellation/update — необязательное. Его можно передать при отклонении заявки для пояснения покупателю.

В dbs.json нет enum причин отмены. В cancellation/list причина приходит свободным текстом description; при решении мерчанта — опциональный comment.

JSON — отмена мерчантом через статус

{
  "merchant_order_id": "ORD-DBS-2026-301",
  "status": "CANCELLED",
  "changed_at": "2026-06-14T12:00:00+03:00",
  "changed_by": "MERCHANT"
}