# Достависта Business API: Отменить или изменить заказ

Сценарий из mcp-everything. Актуально на 2026-10-24.

Покупатель передумал или поменял адрес — поправить или отменить заказ, пока курьер не выехал.

1. Изменить параметры созданного заказа можно методом POST /edit-order. Если менять уже нельзя, придёт ошибка order_cannot_be_edited.
2. Отменить заказ: POST /cancel-order с order_id. Отмена возможна в статусах new, available, active и delayed.
3. Если курьер уже посетил хотя бы одну точку, отменить нельзя — придёт order_cannot_be_canceled; в этом случае свяжись с поддержкой.
4. Проверь итог: GET /orders с order_id — статус должен смениться на отменённый.

```bash
curl -X POST https://robot.dostavista.ru/api/business/1.5/cancel-order \
  -H 'X-DV-Auth-Token: <токен>' \
  -H 'Content-Type: application/json' \
  -d '{"order_id": 123456}'
```

## Базовые URL

- Боевой: `https://robot.dostavista.ru/api/business/1.5`
- Тестовый: `https://robotapitest.dostavista.ru/api/business/1.5`

## Авторизация

Тип: API-ключ

Секретный токен из личного кабинета передаётся в заголовке `X-DV-Auth-Token` в каждом запросе. Используются только методы GET (параметры в строке запроса) и POST (JSON в UTF-8), только по HTTPS.

Ответ:

```
curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.dostavista.ru/api/business/1.5'
```

## Методы сценария

### POST /edit-order — Редактирование заказа

Изменение параметров созданного заказа.

### POST /cancel-order — Отмена заказа

Отменить можно в статусах `new`, `available`, `active` или `delayed`; если курьер посетил хотя бы одну точку — нельзя.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `order_id` | body | integer | да | Полный номер заказа |

### GET /orders — Список заказов

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `order_id` | query | integer | нет | Номер заказа или список номеров |
| `status` | query | string | нет | Статус заказов |
| `created_datetime_from` | query | datetime | нет | Создан от (в GET — url-кодировать) |
| `created_datetime_to` | query | datetime | нет | Создан до |
| `offset` | query | integer | нет | Смещение |
| `count` | query | integer | нет | Число заказов, максимум 50 |
| `next_page_id` | query | integer | нет | ID заказа, с которого начинать страницу |

## Нюансы

- Успешный ответ — HTTP 200 и `is_successful: true`; ошибка — HTTP 400, `is_successful: false`, список `errors` и при `invalid_parameters` — объект `parameter_errors` той же структуры, что запрос.
- Неизвестные ключи в запросе дают предупреждение `invalid_schema` в `schema_warnings`; неизвестные поля в ответах нужно игнорировать.
- Даты — ISO 8601 (`YYYY-MM-DDThh:mm:ss±hh:mm` или с `Z`); в GET-запросах дату нужно url-кодировать (`+` → `%2B`).
- Callback-уведомления о заказах (`order_created`, `order_changed`), доставках и местоположении курьера приходят POST с JSON на URL из личного кабинета. Подпись — заголовок `X-DV-Signature`: HMAC-SHA256 от тела с ключом Callback Secret Key из кабинета.
- Новые поля и методы добавляются без смены версии; версия меняется только при несовместимых изменениях.

## Другие сценарии

- [Рассчитать стоимость срочной доставки](https://mcp-everything.ru/integrations/dostavista/scenarios/rasschitat-stoimost-srochnoy-dostavki.md)
- [Создать заказ на курьерскую доставку](https://mcp-everything.ru/integrations/dostavista/scenarios/sozdat-zakaz-na-kurerskuyu-dostavku.md)
- [Следить за заказом и курьером](https://mcp-everything.ru/integrations/dostavista/scenarios/sledit-za-zakazom-i-kurerom.md)

---

Если этого недостаточно — официальная документация: https://apitest.dostavista.ru/business-api/doc
Вся интеграция одним документом: https://mcp-everything.ru/integrations/dostavista.md
