Skip to content

Заказы

Эндпоинты для работы с заказами: создание, получение статуса и отслеживание.

Создание заказа

Создание нового заказа на доставку или забор.

Запрос

http
POST /orders/upload

Заголовки:

http
X-API-Key: ваш_api_ключ
Content-Type: application/json

Тело запроса:

json
{
  "locations": [
    {
      "depot_number": "14",
      "number_order": "ORDER-123",
      "type": "delivery",
      "title": "Заказ #123",
      "date": "16.09.2025",
      "time_window": "09:00-15:00",
      "pickup_windows": "08:00-11:00",
      "name_client": "Иванов Иван Иванович",
      "phone": "79998882000",
      "address_info": {
        "address": "г. Новосибирск ул. Примерная 12 корп 1",
        "apartment": 5,
        "floor": 2,
        "entrance": 1,
        "rise": true,
        "point": {
          "lat": 55.7558,
          "lon": 37.6173
        }
      },
      "shipment_size": {
        "weight_kg": 10.5,
        "volume": {
          "width_m": 1.2,
          "height_m": 0.8,
          "depth_m": 1.5
        }
      },
      "package": 1,
      "delivery_location_category": 0
    }
  ]
}

Обязательные поля

Важно

Следующие поля обязательны для всех заказов:

  • depot_number — номер склада
  • number_order — уникальный номер заказа (в рамках склада)
  • type — тип доставки: delivery или pickup
  • title — название заказа
  • date — дата доставки в формате d.m.Y
  • time_window — интервал доставки из /intervals
  • name_client — ФИО клиента
  • package — количество упаковок
  • address_info.address — адрес доставки
  • shipment_size.weight_kg — вес в килограммах
  • delivery_location_category — категория пункта доставки

Типы доставки

json
{
  "type": "delivery",
  "depot_number": "14",
  "delivery_point": { "lat": 55.7558, "lon": 37.6173 }
}
json
{
  "type": "pickup",
  "depot_number": "14",
  "pickup_point": { "lat": 55.7558, "lon": 37.6173 }
}
json
{
  "type": "pickup_delivery",
  "depot_number": "14",
  "pickup_point": { "lat": 55.7558, "lon": 37.6173 },
  "delivery_point": { "lat": 55.7558, "lon": 37.6173 }
}

Примеры использования

bash
curl -X POST "https://api.razvezu.pro/integration/v2/orders/upload" \
  -H "X-API-Key: ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "locations": [{
      "depot_number": "14",
      "number_order": "ORDER-123",
      "type": "delivery",
      "title": "Заказ #123",
      "date": "16.09.2025",
      "time_window": "09:00-15:00",
      "name_client": "Иванов Иван Иванович",
      "phone": "79998882000",
      "address_info": {
        "address": "г. Новосибирск ул. Примерная 12"
      },
      "shipment_size": {
        "weight_kg": 10.5
      },
      "package": 1,
      "delivery_location_category": 0
    }]
  }'
javascript
const orderData = {
  locations: [{
    depot_number: "14",
    number_order: "ORDER-123",
    type: "delivery",
    title: "Заказ #123",
    date: "16.09.2025",
    time_window: "09:00-15:00",
    name_client: "Иванов Иван Иванович",
    phone: "79998882000",
    address_info: {
      address: "г. Новосибирск ул. Примерная 12"
    },
    shipment_size: {
      weight_kg: 10.5
    },
    package: 1,
    delivery_location_category: 0
  }]
};

const response = await fetch(
  'https://api.razvezu.pro/integration/v2/orders/upload',
  {
    method: 'POST',
    headers: {
      'X-API-Key': 'ваш_api_ключ',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(orderData)
  }
);

const data = await response.json();
python
import requests

order_data = {
    "locations": [{
        "depot_number": "14",
        "number_order": "ORDER-123",
        "type": "delivery",
        "title": "Заказ #123",
        "date": "16.09.2025",
        "time_window": "09:00-15:00",
        "name_client": "Иванов Иван Иванович",
        "phone": "79998882000",
        "address_info": {
            "address": "г. Новосибирск ул. Примерная 12"
        },
        "shipment_size": {
            "weight_kg": 10.5
        },
        "package": 1,
        "delivery_location_category": 0
    }]
}

headers = {
    'X-API-Key': 'ваш_api_ключ',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.razvezu.pro/integration/v2/orders/upload',
    json=order_data,
    headers=headers
)

data = response.json()
print(data)

Дополнительные поля

Информация о товарах

json
{
  "order_info": [
    {
      "name": "Бумага",
      "amount": 4,
      "price_for_one_piece": 145.12,
      "shipment_size": {
        "weight_kg": 2.5,
        "volume": {
          "width_m": 0.3,
          "height_m": 0.2,
          "depth_m": 0.4
        }
      }
    }
  ]
}

Дополнительная информация

json
{
  "data": {
    "comments": "Позвонить у ворот",
    "intercom_code": 123456,
    "handover_code": "[CDK]32424"
  }
}

Доверенные лица

json
{
  "trusted_people": [
    {
      "name": "Иван Иванов",
      "phone": "79876543210",
      "comment": "Отдать только Ивану!"
    }
  ]
}

Получение статуса заказа

Получить актуальную информацию о статусе одного или нескольких заказов.

Запрос

http
POST /orders/status

Заголовки:

http
X-API-Key: ваш_api_ключ
Content-Type: application/json

Тело запроса:

json
{
  "orders_number": ["ORDER-123", "ORDER-456"]
}

Ответ

json
{
  "ok": true,
  "result": [
    {
      "number": "ORDER-123",
      "status": "in_progress",
      "date": "2025-09-16",
      "route_id": "J8nJ",
      "queue": 3,
      "delivery_time": null,
      "reason_cancellation": null,
      "message": null,
      "courier_info": {
        "phone": "79991234567",
        "full_name": "Иванов Иван Иванович"
      }
    }
  ]
}

Статусы заказа

СтатусОписание
newНовый заказ, ожидает обработки
in_progressЗаказ в работе, назначен курьер
finishedЗаказ успешно завершён
cancelledЗаказ отменён

Примеры использования

bash
curl -X POST "https://api.razvezu.pro/integration/v2/orders/status" \
  -H "X-API-Key: ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "orders_number": ["ORDER-123"]
  }'
javascript
const response = await fetch(
  'https://api.razvezu.pro/integration/v2/orders/status',
  {
    method: 'POST',
    headers: {
      'X-API-Key': 'ваш_api_ключ',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      orders_number: ['ORDER-123']
    })
  }
);

const data = await response.json();
console.log(data.result);
python
import requests

status_data = {
    "orders_number": ["ORDER-123"]
}

headers = {
    'X-API-Key': 'ваш_api_ключ',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.razvezu.pro/integration/v2/orders/status',
    json=status_data,
    headers=headers
)

data = response.json()
print(data['result'])

Ошибки

400 Bad Request

Заказ не найден:

json
{
  "ok": false,
  "errors": {
    "message": "Заказ: 'number', не найден"
  }
}

422 Validation Error

Ошибка валидации данных:

json
{
  "ok": false,
  "errors": {
    "orders_number": [
      "Поле 'orders_number' должно быть массивом"
    ]
  }
}

Важные замечания

Внимание

  • number_order должен быть уникальным в рамках одного склада
  • Адрес указывайте в формате: город, населённый пункт, улица, дом (без квартиры)
  • Рекомендуется указывать координаты для точного определения адреса
  • Используйте только интервалы, полученные из /intervals
  • Телефон в формате 7[0-9]{10} (например, 79998882000)

Совет

Для получения доступных интервалов доставки используйте эндпоинт /intervals перед созданием заказа.