Получение вариантов доставки (для РФ)

  • Метод возвращает доступные варианты доставки.
  • Каждый вариант содержит цену, временной интервал забора посылки на точке А, временной интервал доставки на точку B.
  • После получения вариантов доставки можно выбрать оптимальный и создать заказ с использованием выбранного варианта.
  • Получить варианты доставки можно только в России.

Request

POST

b2b.taxi.yandex.net/b2b/cargo/integration/v2/offers/calculate

Адрес сервиса

Headers

Name

Description

Accept-Language*

Type: string

Предпочитаемый язык ответа. Примеры:«ru» - русский, «en» - английский

Example: ru

Body

application/json
{
    "items": [
        {
            "size": {
                "length": 0.1,
                "width": 0.2,
                "height": 0.3
            },
            "weight": 2.105,
            "quantity": 1,
            "pickup_point": 1,
            "dropoff_point": 2
        }
    ],
    "route_points": [
        {
            "id": 1,
            "coordinates": [
                0.1,
                0.1
            ],
            "fullname": "Санкт-Петербург, Большая Монетная улица, 1к1А"
        }
    ],
    "requirements": {
        "taxi_classes": [
            "cargo"
        ],
        "cargo_type": "lcv_m",
        "cargo_loaders": 1,
        "pro_courier": false,
        "cargo_options": [
            "thermobag"
        ],
        "skip_door_to_door": false,
        "due": "2020-01-01T00:00:00+00:00"
    }
}

Name

Description

route_points*

Type: RoutePointWithAddress[]

Точки маршрута. Отсортированы в порядке посещения А-Б1....БN

Min items: 2

items

Type: Item[]

Параметры товаров

Min items: 1

requirements

Type: OfferRequirements

Требования к доставке

RoutePointWithAddress

Name

Description

coordinates

Type: number[]

Координаты точек в виде массива из двух вещественных чисел: долгота, широта — именно в таком порядке.

Example: 0.1,0.1

Max items: 2

Min items: 2

fullname

Type: string

Полный адрес с указанием города, улицы и номера дома.
Номер квартиры, подъезда и этаж указывать не нужно.

Example: Санкт-Петербург, Большая Монетная улица, 1к1А

id

Type: integer<int64>

Числовой id точки(int64). Параметр обязательный, если в заказе несколько точек доставки

Example: 1

Item

Name

Description

quantity*

Type: integer<int64>

Количество единиц товара

Example: 1

Min value: 1

dropoff_point

Type: integer<int64>

Идентификатор точки (int64), куда нужно доставить товар.
Может быть любым числом. Должен соответствовать значению route_points[].id у точки назначения.
Параметр обязательный, если в заказе несколько точек доставки.

Example: 2

pickup_point

Type: integer<int64>

Идентификатор точки (int64), откуда нужно забрать товар.
Может быть любым числом. Должен соответствовать значению route_points[].id у точки отправки.
Параметр обязательный, если в заказе несколько точек доставки.

Example: 1

size

Type: CargoItemSizes

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

Если габариты не были переданы, заказ оформляется с учетом
максимально допустимых габаритов для выбранного тарифа.

Если фактические характеристики товара превысят допустимые,
курьер вправе отказаться от выполнения такого заказа на месте.
В этом случае будет удержана стоимость подачи.

Курьер (courier): до 0.80 м × 0.50 м × 0.50 м
Экспресс (express): до 1.00 м × 0.60 м × 0.50 м
Грузовой (cargo):

  • Маленький кузов: до 1.70 м × 0.96 м × 0.90 м
  • Средний кузов: до 2.60 м × 1.30 м × 1.50 м
  • Большой кузов: до 3.80 м × 1.80 м × 1.80 м

weight

Type: number

Вес товара в килограммах.
Пример: 2.105

Example: 2.105

OfferRequirements

Требования к доставке

Name

Description

cargo_loaders

Type: integer<int64>

Число грузчиков для грузового тарифа.
Возможные значения: 0, 1, 2.

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Example: 1

cargo_options

Type: string[]

Список дополнительных опций тарифа.

Возможные отдельные опции:

  • auto_courier (курьер только на автомобиле)
  • thermobag (курьер с термосумкой)

Пример списка опций: ["auto_courier"].

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Example: thermobag

cargo_type

Type: CargoType

Тип (размер) кузова для грузового тарифа.
Возможные значения:
- van ("Маленький кузов")
- lcv_m ("Средний кузов")
- lcv_l ("Большой кузов").

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Example: lcv_m

Enum: van, lcv_m, lcv_l, lcv_xl

due

Type: string<date-time>

Расчетное время прибытия курьера (отложить расчетное время подачи можно на 30-60 минут от текущего момента) — значение по умолчанию.

Example: 2020-01-01T00:00:00+00:00

pro_courier

Type: boolean

Включить опцию "Профи" для тарифов "Экспресс" и "Курьер".
Поиск исполнителя будет происходить только среди опытных курьеров.

skip_door_to_door

Type: boolean

Отключить доставку до двери (выключить опцию "От двери до двери").

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

  • true (курьер доставит заказ только на улицу, до подъезда)
  • false (курьер доставит заказ до двери)

taxi_classes

Type: string[]

Класс автомобиля для доставки.
Возможные значения: courier, express, cargo.

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Класс автомобиля для доставки.
Возможные значения: courier, express, cargo.

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Example: cargo

Min items: 1

CargoItemSizes

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

Если габариты не были переданы, заказ оформляется с учетом
максимально допустимых габаритов для выбранного тарифа.

Если фактические характеристики товара превысят допустимые,
курьер вправе отказаться от выполнения такого заказа на месте.
В этом случае будет удержана стоимость подачи.

Курьер (courier): до 0.80 м × 0.50 м × 0.50 м
Экспресс (express): до 1.00 м × 0.60 м × 0.50 м
Грузовой (cargo):

  • Маленький кузов: до 1.70 м × 0.96 м × 0.90 м
  • Средний кузов: до 2.60 м × 1.30 м × 1.50 м
  • Большой кузов: до 3.80 м × 1.80 м × 1.80 м

Name

Description

height*

Type: number

Высота в метрах

Example: 0.3

length*

Type: number

Длина в метрах

Example: 0.1

width*

Type: number

Ширина в метрах

Example: 0.2

CargoType

Тип (размер) кузова для грузового тарифа.
Возможные значения:
- van ("Маленький кузов")
- lcv_m ("Средний кузов")
- lcv_l ("Большой кузов").

Точный список возможных значений для конкретной геоточки
уточните с помощью метода получения тарифов tariffs

Type

Description

CargoType

Example: lcv_m

Enum: van, lcv_m, lcv_l, lcv_xl

Responses

200 OK

OK

Body

application/json
{
    "offers": [
        {
            "price": {
                "total_price": "673.0",
                "total_price_with_vat": "807.6",
                "base_price": "611.8",
                "surge_ratio": 1.1,
                "currency": "RUB"
            },
            "taxi_class": "express",
            "pickup_interval": {
                "from": "2023-07-17T08:02:26.607358+00:00",
                "to": "2023-07-17T08:42:26.607358+00:00"
            },
            "delivery_interval": {
                "from": "2023-07-17T08:02:26.607358+00:00",
                "to": "2023-07-17T09:15:43.607358+00:00"
            },
            "description": "express_30min_longer",
            "payload": "5e2TPP5f7Yqyv19yRZ+QVas4JK+lhwa17ncxA3VCGI8hvnFS+CIySbmfHQlR6vhC2S4XsW+M7TbEV0EQl1/1Z0PO3QQX8KbGb6rtKay",
            "offer_ttl": "2020-01-02T00:00:00+00:00"
        }
    ]
}

Name

Description

offers*

Type: CalculatedOffer[]

Массив предложений доставки
Варианты доставки

CalculatedOffer

Варианты доставки

Name

Description

delivery_interval*

Type: DeliveryTimeInterval

Временной интервал доставки (по точке B)

payload*

Type: string

payload оффера доставки. Чтобы заказать доставку по выбранному офферу, нужно передать payload в методе claims/create.

Example: 5e2TPP5f7Yqyv19yRZ+QVas4JK+lhwa17ncxA3VCGI8hvnFS+CIySbmfHQlR6vhC2S4XsW+M7TbEV0EQl1/1Z0PO3QQX8KbGb6rtKay

pickup_interval*

Type: PickupTimeInterval

Временной интервал забора (по точке A)

price*

Type: CalculatedOfferPrice

Стоимость доставки

taxi_class*

Type: string

Тарифный класс

Example: express

description

Type: string

Описание варианта доставки. Пример: express_30min_longer (экспресс с замедлением на 30 минут)

Example: express_30min_longer

offer_ttl

Type: string<date-time>

Время, до которого оффер можно использовать для создания заявки. Если
создать заявку после этого момента, то заявка перейдет в
статус 'estimating_failed'

Example: 2020-01-02T00:00:00+00:00

DeliveryTimeInterval

Временной интервал доставки (по точке B)

Name

Description

from*

Type: string<date-time>

Начало интервала (UTC)

Example: 2023-07-17T08:02:26.607358+00:00

to*

Type: string<date-time>

Окончание интервала (дата и время)

Example: 2023-07-17T09:15:43.607358+00:00

PickupTimeInterval

Временной интервал забора (по точке A)

Name

Description

from*

Type: string<date-time>

Начало интервала (UTC)

Example: 2023-07-17T08:02:26.607358+00:00

to*

Type: string<date-time>

Окончание интервала (дата и время)

Example: 2023-07-17T08:42:26.607358+00:00

CalculatedOfferPrice

Стоимость доставки

Name

Description

currency*

Type: string

Трехзначный код валюты, в которой ведется расчет

Example: RUB

Min length: 3

Max length: 3

surge_ratio*

Type: number

Коэффициент роста стоимости заказа (в зависимости от нагрузки на систему)

Example: 1.1

total_price*

Type: string

Цена c учетом коэффициента роста стоимости заказа (без НДС)

Example: 673.0

Pattern: ^-?[0-9]{1,14}(\.[0-9]{0,4})?$

total_price_with_vat*

Type: string

Цена с учетом коэффициента роста стоимости заказа (с НДС)

Example: 807.6

Pattern: ^-?[0-9]{1,14}(\.[0-9]{0,4})?$

base_price

Type: string

Базовая цена доставки

Example: 611.8

Pattern: ^-?[0-9]{1,14}(\.[0-9]{0,4})?$

400 Bad Request

Неверный запрос

Body

application/json
{
    "code": "bad_request",
    "message": "bad request"
}

Name

Description

code*

Type: string

Код ошибки

Example: bad_request

Enum: bad_request, address_not_found, validation_error

message*

Type: string

Описание ошибки

Example: bad request

409 Conflict

Не удалось рассчитать офферы

Body

application/json
{
    "code": "estimating.requirement_unavailable",
    "message": "requirement unavailable"
}

Name

Description

code*

Type: string

Код ошибки

Example: estimating.requirement_unavailable

Enum: errors.suitable_offer_not_found, estimating.cargocorp_payment_failure, estimating.limited_by_claims_creation_overflow, estimating.no_pickup_point, estimating.payment_method_cant_order, estimating.permitted_tariffs_not_enough, estimating.requirement_unavailable, estimating.route_too_long, estimating.tariff.no_categories_in_zone, estimating.tariff.no_sdd_tariff, estimating.too_large_linear_size, estimating.too_many_loaders, estimating.warning.too_heavy_item, estimating.warning.too_large_item, estimating.zone_unavailable, estimating.payment_method_zone_unavailable

message*

Type: string

Описание ошибки

Example: requirement unavailable

429 Too Many Requests

Слишком много запросов

Body

application/json
{
    "code": "too_many_requests",
    "message": "Слишком много запросов"
}

Name

Description

code*

Type: string

Код ошибки

Example: too_many_requests

Enum: too_many_requests

message*

Type: string

Описание ошибки

Example: Слишком много запросов

Предыдущая