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

  • Метод возвращает доступные варианты доставки.
  • Каждый вариант содержит цену, временной интервал забора посылки на точке А, временной интервал доставки на точку 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А",
      "country": "Россия",
      "city": "Санкт-Петербург",
      "street": "Большая Монетная улица",
      "building": "23к1А",
      "porch": "A",
      "sfloor": "1",
      "sflat": "1"
    },
    {
      "id": 1,
      "coordinates": [
        0.1,
        0.1
      ],
      "fullname": "Санкт-Петербург, Большая Монетная улица, 1к1А",
      "country": "Россия",
      "city": "Санкт-Петербург",
      "street": "Большая Монетная улица",
      "building": "23к1А",
      "porch": "A",
      "sfloor": "1",
      "sflat": "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",
    "rental_duration": 0
  }
}

Name

Description

items

Type: Item[]

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

Min items: 1

Example
[
  {
    "size": {
      "length": 0.1,
      "width": 0.2,
      "height": 0.3
    },
    "weight": 2.105,
    "quantity": 1,
    "pickup_point": 1,
    "dropoff_point": 2
  }
]

route_points

Type: RoutePointWithAddress[]

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

Min items: 2

Example
[
  {
    "id": 1,
    "coordinates": [
      0.1,
      0.1
    ],
    "fullname": "Санкт-Петербург, Большая Монетная улица, 1к1А",
    "country": "Россия",
    "city": "Санкт-Петербург",
    "street": "Большая Монетная улица",
    "building": "23к1А",
    "porch": "A",
    "sfloor": "1",
    "sflat": "1"
  },
  {
    "id": 1,
    "coordinates": [
      0.1,
      0.1
    ],
    "fullname": "Санкт-Петербург, Большая Монетная улица, 1к1А",
    "country": "Россия",
    "city": "Санкт-Петербург",
    "street": "Большая Монетная улица",
    "building": "23к1А",
    "porch": "A",
    "sfloor": "1",
    "sflat": "1"
  }
]

requirements

Type: OfferRequirements

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

Example
{
  "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",
  "rental_duration": 0
}

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

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

Min value: 0

Max value: 500

length

Type: number

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

Min value: 0

Max value: 500

width

Type: number

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

Min value: 0

Max value: 500

Example
{
  "length": 0.1,
  "width": 0.2,
  "height": 0.3
}

Item

Name

Description

quantity

Type: integer

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

Min value: 1

dropoff_point

Type: integer

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

pickup_point

Type: integer

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

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 м
Example
{
  "length": 0.1,
  "width": 0.2,
  "height": 0.3
}

weight

Type: number

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

Example
{
  "size": {
    "length": 0.1,
    "width": 0.2,
    "height": 0.3
  },
  "weight": 2.105,
  "quantity": 1,
  "pickup_point": 1,
  "dropoff_point": 2
}

Point

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

Type: number[]

Min items: 2

Max items: 2

Example
[
  0.1,
  0.1
]

AddressFullname

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

Type: string

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

RoutePointWithAddress

Name

Description

building

Type: string

Строение

Example: 23к1А

city

Type: string

Город

Example: Санкт-Петербург

coordinates

Type: Point

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

Min items: 2

Max items: 2

Example
[
  0.1,
  0.1
]

country

Type: string

Страна

Example: Россия

fullname

Type: AddressFullname

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

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

id

Type: integer

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

porch

Type: string

Подъезд (может быть A)

Example: A

sflat

Type: string

Квартира

Example: 1

sfloor

Type: string

Этаж

Example: 1

street

Type: string

Улица

Example: Большая Монетная улица

Example
{
  "id": 1,
  "coordinates": [
    0.1,
    0.1
  ],
  "fullname": "Санкт-Петербург, Большая Монетная улица, 1к1А",
  "country": "Россия",
  "city": "Санкт-Петербург",
  "street": "Большая Монетная улица",
  "building": "23к1А",
  "porch": "A",
  "sfloor": "1",
  "sflat": "1"
}

CargoType

Тип (размер) кузова для грузового тарифа.
Возможные значения:

  • van ("Маленький кузов")
  • lcv_m ("Средний кузов")
  • lcv_l ("Большой кузов")
  • lcv_xl ("Кузов XL")
    Точный список возможных значений для конкретной геоточки уточняйте с помощью метода получения тарифов tariffs

Type: string

Enum: van, lcv_m, lcv_l, lcv_xl

CargoOptions

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

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

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

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

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

Type: string[]

Example
[
  "thermobag"
]

OfferRequirements

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

Name

Description

cargo_loaders

Type: integer

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

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

cargo_options

Type: CargoOptions

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

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

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

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

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

Example
[
  "thermobag"
]

cargo_type

Type: CargoType

Тип (размер) кузова для грузового тарифа.
Возможные значения:

  • van ("Маленький кузов")
  • lcv_m ("Средний кузов")
  • lcv_l ("Большой кузов")
  • lcv_xl ("Кузов XL")
    Точный список возможных значений для конкретной геоточки уточняйте с помощью метода получения тарифов tariffs

Enum: van, lcv_m, lcv_l, lcv_xl

due

Type: string<date-time>

Желаемое время прибытия исполнителя на точку А (source).
В РФ отложить расчетное время прибытия исполнителя можно:
- на 30-240 минут от текущего момента – для тарифа express;
- на пять суток от текущего момента – для тарифа cargo.

Параметр не совместим с опциями замедления в тарифе express на территории РФ.
Если этот параметр не задан, то запустится поиск исполнителя на ближайшее время.

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

pro_courier

Type: boolean

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

rental_duration

Type: integer

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

skip_door_to_door

Type: boolean

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

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

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

Default: false

taxi_classes

Type: string[]

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

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

Min items: 1

Example
[
  "cargo"
]
Example
{
  "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",
  "rental_duration": 0
}

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[]

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

Example
[
  {
    "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"
  }
]

Currency

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

Type: string

Min length: 3

Max length: 3

Example: RUB

CalculatedOfferPrice

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

Name

Description

currency

Type: Currency

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

Min length: 3

Max length: 3

Example: RUB

surge_ratio

Type: number

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

total_price

Type: string

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

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

Example: 673.0

total_price_with_vat

Type: string

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

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

Example: 807.6

base_price

Type: string

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

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

Example: 611.8

Example
{
  "total_price": "673.0",
  "total_price_with_vat": "807.6",
  "base_price": "611.8",
  "surge_ratio": 1.1,
  "currency": "RUB"
}

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

Example
{
  "from": "2023-07-17T08:02:26.607358+00:00",
  "to": "2023-07-17T08:42:26.607358+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

Example
{
  "from": "2023-07-17T08:02:26.607358+00:00",
  "to": "2023-07-17T09:15:43.607358+00:00"
}

CalculatedOffer

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

Name

Description

delivery_interval

Type: DeliveryTimeInterval

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

Example
{
  "from": "2023-07-17T08:02:26.607358+00:00",
  "to": "2023-07-17T09:15:43.607358+00:00"
}

payload

Type: string

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

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

pickup_interval

Type: PickupTimeInterval

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

Example
{
  "from": "2023-07-17T08:02:26.607358+00:00",
  "to": "2023-07-17T08:42:26.607358+00:00"
}

price

Type: CalculatedOfferPrice

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

Example
{
  "total_price": "673.0",
  "total_price_with_vat": "807.6",
  "base_price": "611.8",
  "surge_ratio": 1.1,
  "currency": "RUB"
}

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

Example
{
  "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"
}

400 Bad Request

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

Body

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

Name

Description

code

Type: string

Код ошибки

Enum: unknown_error, 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

Код ошибки

Enum: unknown_error, 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.route_too_short, estimating.tariff.not_available_in_zone, estimating.tariff.not_present_in_tariff_line_strategy, estimating.tariff.no_sdd_tariff, estimating.too_large_linear_size, estimating.too_many_loaders, estimating.cargo_type_unavailable, estimating.warning.too_heavy_item, estimating.warning.too_large_item, estimating.zone_unavailable, estimating.swapped_coordinates, estimating.payment_method_zone_unavailable, estimating.route_is_prohibited

message

Type: string

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

Example: requirement unavailable

429 Too Many Requests

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

Body

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

Name

Description

code

Type: string

Код ошибки

Enum: unknown_error, too_many_requests

message

Type: string

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

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

No longer supported, please use an alternative and newer version.

Предыдущая