Skip to content

Интервалы

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

Получение доступных интервалов

Возвращает доступные окна забора и окна доставки в зависимости от типа операции.

Запрос

http
POST /intervals

Заголовки:

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

Типы запросов

В зависимости от типа доставки структура запроса отличается:

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

Параметры запроса

ПолеТипОбязательноеОписание
typestringДаТип доставки: delivery, pickup, pickup_delivery
depot_numberstringДаНомер склада
datestringДаДата доставки в формате d.m.Y
pickup_pointobjectЗависит от типаКоординаты забора (lat, lon)
delivery_pointobjectЗависит от типаКоординаты доставки (lat, lon)

Ответ

Структура ответа зависит от типа запроса:

Для delivery

json
{
  "ok": true,
  "result": [
    {
      "time_window": [
        {
          "type": "delivery",
          "time": "09:00-15:00",
          "price": 0
        },
        {
          "type": "delivery",
          "time": "15:00-18:00",
          "price": 150.50
        }
      ],
      "pickup_windows": [
        "08:00-11:00",
        "11:00-14:00"
      ]
    }
  ]
}

Для pickup

json
{
  "ok": true,
  "result": [
    {
      "time_window": [
        {
          "type": "pickup",
          "time": "07:40-11:00",
          "price": 234.13
        }
      ]
    }
  ]
}

Для pickup_delivery

json
{
  "ok": true,
  "result": [
    {
      "time_window": [
        {
          "type": "pickup",
          "time": "07:40-11:00",
          "price": 234.13
        },
        {
          "type": "delivery",
          "time": "09:00-15:00",
          "price": 0
        }
      ]
    }
  ]
}

Описание полей ответа

ПолеТипОписание
time_windowarrayМассив доступных временных окон
time_window[].typestringТип окна: pickup или delivery
time_window[].timestringИнтервал в формате H:i-H:i
time_window[].pricefloatСтоимость доставки в этом окне
pickup_windowsarrayОкна забора со склада (только для delivery)

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

bash
curl -X POST "https://api.razvezu.pro/integration/v2/intervals" \
  -H "X-API-Key: ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "delivery",
    "depot_number": "14",
    "date": "16.09.2025",
    "delivery_point": {
      "lat": 55.7558,
      "lon": 37.6173
    }
  }'
javascript
const intervalData = {
  type: "delivery",
  depot_number: "14",
  date: "16.09.2025",
  delivery_point: {
    lat: 55.7558,
    lon: 37.6173
  }
};

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

const data = await response.json();
const availableWindows = data.result[0].time_window;
console.log('Доступные окна:', availableWindows);
python
import requests

interval_data = {
    "type": "delivery",
    "depot_number": "14",
    "date": "16.09.2025",
    "delivery_point": {
        "lat": 55.7558,
        "lon": 37.6173
    }
}

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

response = requests.post(
    'https://api.razvezu.pro/integration/v2/intervals',
    json=interval_data,
    headers=headers
)

data = response.json()
available_windows = data['result'][0]['time_window']
print('Доступные окна:', available_windows)

Ошибки

401 Unauthorized

Ошибка аутентификации:

json
{
  "ok": false,
  "errors": {
    "message": "Неверные данные аутентификации"
  }
}

422 Validation Error

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

json
{
  "ok": false,
  "errors": {
    "type": [
      "Поле 'type' должно быть одним из: delivery, pickup, pickup_delivery"
    ],
    "delivery_point": [
      "Поле 'delivery_point' обязательно для type = delivery"
    ]
  }
}

500 Internal Server Error

Внутренняя ошибка сервера:

json
{
  "ok": false,
  "errors": {
    "message": "Ошибка на стороне сервера, попробуйте позже"
  }
}

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

Внимание

  • Используйте только интервалы, полученные из этого эндпоинта, при создании заказа
  • Интервалы могут различаться в зависимости от даты и координат
  • Рекомендуется запрашивать интервалы непосредственно перед созданием заказа
  • Формат времени: HH:mm-HH:mm (например, 09:00-15:00)

Совет

Сохраняйте полученные интервалы и используйте их при создании заказа через /orders/upload.