Создать заказ в системе ресторана

  • YandexOrder – схема заказа при доставке Яндекс Еды.
  • MarketplaceOrder – схема заказа при доставке партнера.
  • PickupOrder – схема заказа при самовывозе.

Актуальная версия модели запроса – application/vnd.eats.order.v2+json.

Request

POST

/order

Body

application/vnd.eats.order.v2+json
{
    "platform": "YE",
    "discriminator": "yandex",
    "eatsId": "190330-12345678",
    "restaurantId": "937c57f6-4508-4858-be7f-20691a16fbb0",
    "deliveryInfo": {
        "clientName": "Иванов Иван Иванович",
        "phoneNumber": "+79031111111 доб. 4432",
        "additionalPhoneNumbers": [
            "+79031111111 доб. 4432"
        ],
        "courierArrivementDate": "1937-01-01T12:00:27.870000+00:20",
        "realPhoneNumber": "79031111111",
        "pickupCode": 123
    },
    "paymentInfo": {
        "itemsCost": 100,
        "paymentType": "CARD"
    },
    "items": [
        {
            "id": "937c57f6-4508-4858-be7f-20691a16fbb0",
            "name": "Пицца Пепперони",
            "quantity": 3.5,
            "price": 100,
            "modifications": [
                {
                    "id": "937c57f6-4508-4858-be7f-20691a16fbb0",
                    "group_id": "937c57f6-4508-4858-be7f-20691a16fbb1",
                    "name": "Европейские приборы",
                    "quantity": 3,
                    "price": 100
                }
            ],
            "promos": [
                {
                    "type": "GIFT",
                    "discount": 200,
                    "partner_discount": 100,
                    "yandex_discount": 100
                }
            ],
            "comboInfo": {
                "id": "937c57f6-4508-4858-be7f-20691a16fbb0",
                "componentId": "937c57f6-4508-4858-be7f-20691a16fbb0"
            }
        }
    ],
    "persons": 2,
    "comment": "Дополнительная информация о заказе: ...",
    "promos": [
        {
            "type": "GIFT",
            "discount": 200,
            "partner_discount": 100,
            "yandex_discount": 100
        }
    ]
}

Name

Description

...rest

oneOf YandexOrderV2

Актуальная версия модели заказа по схеме доставки "yandex".

...rest

oneOf MarketplaceOrderV2

Актуальная версия модели заказа по схеме доставки "marketplace"

...rest

oneOf PickupOrderV1

Актуальная версия модели заказа по схеме доставки "pickup"

YandexOrderV2

Актуальная версия модели заказа по схеме доставки "yandex".

Name

Description

comment*

Type: string

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

Example: Дополнительная информация о заказе: ...

deliveryInfo*

Type: YandexOrderDeliveryInfo

Информация о доставке.

discriminator*

Type: string

Дискриминатор схемы обьекта. Для YandexOrder равен "yandex".

Example: yandex

eatsId*

Type: string

Сквозной идентификатор заказа на стороне Яндекс.Еды в формате DDDDDD-DDDDDDDD.

Example: 190330-12345678

items*

Type: OrdersItem[]

paymentInfo*

Type: YandexOrderPaymentInfo

promos*

Type: OrdersPromoItem[]

Список акций, действующих на весь заказ. Если у заказа объект "promos" не пустой, значит на него действует акция в системе партнера. Если пустой – это означает, что на заказ не действуют никакие акции

restaurantId*

Type: string

Внутренний идентификатор заведения в системе партнера, в которое передаётся заказ. Формат свободный, рекомендуется UUID4.

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

persons

Type: integer

Количество персон, на которых оформлен заказ. Может влиять на количество комплектов приборов

Example: 2

platform

Type: string

Идентификатор платформы:

  • YE – Yandex Eda.
  • DC – Delivery club.

Enum: YE, DC

MarketplaceOrderV2

Актуальная версия модели заказа по схеме доставки "marketplace"

Name

Description

comment*

Type: string

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

Example: Дополнительная информация о заказе: ...

deliveryInfo*

Type: MarketplaceOrderDeliveryInfo

Информация о доставке

discriminator*

Type: string

Дискриминатор схемы обьекта. Для MarketplaceOrder равен "marketplace"

Example: marketplace

eatsId*

Type: string

Сквозной идентификатор заказа на стороне Яндекс.Еды в формате DDDDDD-DDDDDDDD

Example: 190330-12345678

items*

Type: OrdersItem[]

paymentInfo*

Type: MarketplaceOrderPaymentInfo

promos*

Type: OrdersPromoItem[]

Список акций, действующих на весь заказ. Если у заказа объект "promos" не пустой, значит на него действует акция в системе партнера. Если пустой – это означает, что на заказ не действуют никакие акции

restaurantId*

Type: string

Внутренний идентификатор заведения в системе партнера, в которое передаётся заказ. Формат свободный, рекомендуется UUID4

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

persons

Type: integer

Количество персон, на которых оформлен заказ. Может влиять на количество комплектов приборов

Example: 2

platform

Type: string

Идентификатор платформы. YE - Yandex Eda, DC - Delivery club

Enum: YE, DC

PickupOrderV1

Актуальная версия модели заказа по схеме доставки "pickup"

Name

Description

comment*

Type: string

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

Example: Дополнительная информация о заказе: ...

deliveryInfo*

Type: PickupOrderDeliveryInfo

Информация о доставке

discriminator*

Type: string

Дискриминатор схемы обьекта. Для PickupOrder равен "pickup"

Example: pickup

eatsId*

Type: string

Сквозной идентификатор заказа на стороне Яндекс Еды в формате DDDDDD-DDDDDD

Example: 190330-123456

items*

Type: OrdersItem[]

paymentInfo*

Type: PickupOrderPaymentInfo

promos*

Type: OrdersPromoItem[]

Список акций, действующих на весь заказ. Если у заказа объект "promos" не пустой, значит на него действует акция в системе партнера. Если пустой – это означает, что на заказ не действуют никакие акции

restaurantId*

Type: string

Внутренний идентификатор заведения в системе партнера, в которое передаётся заказ. Формат свободный, рекомендуется UUID4

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

persons

Type: integer

Количество персон, на которых оформлен заказ. Может влиять на количество комплектов приборов

Example: 2

platform

Type: string

Идентификатор платформы. YE - Yandex Eda, DC - Delivery club

Enum: YE, DC

YandexOrderDeliveryInfo

Name

Description

courierArrivementDate*

Type: string<date-time>

Дата, когда придет курьер в ресторан, в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP).

Example: 1937-01-01T12:00:27.870000+00:20

additionalPhoneNumbers

Type: string[]

Список дополнительных номеров для связи с клиентом.
Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

clientName

Type: string

Имя клиента в сервисе Яндекс Еда

Example: Иванов Иван Иванович

phoneNumber

Type: string

Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

pickupCode

Type: string

Код для идентификации курьера

Example: 123

realPhoneNumber

Type: string

Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Указывается в случае если клиент дает согласие на обработку своих персональных данных

Example: 79031111111

OrdersItem

Name

Description

id*

Type: string

ID позиции меню в системе партнера

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

modifications*

Type: OrdersModificationItem[]

Список выбранных модификаций. Может быть пустым, передаётся явно, для каждой отдельной позиции в заказе. При заказе двух позиций одного и того же блюда с разным набором модификаций - передаются разные позиции, с разными списками "modifications"

price*

Type: number<double>

Стоимость одной позиции вместе со стоимостью модификаций. В следующей версии будет исправлено на чистую цену позиции без модификаций

Example: 100

promos*

Type: OrdersPromoItem[]

Список акций, действующих на текущее блюдо. Если у блюда объект "promos" не пустой, значит на него действует акция в системе партнера. Если пустой – это означает, что на блюдо не действуют никакие акции

quantity*

Type: number<float>

Количество позиции в заказе

Example: 3.5

comboInfo

Type: OrderItemComboInfo

Информация о комбо, к которому относится данная позиция. Заполнено только для позиций, которые были выбраны в составе комбо.

name

Type: string

Наименование позиции меню

Example: Пицца Пепперони

YandexOrderPaymentInfo

Name

Description

itemsCost*

Type: number<double>

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

Example: 100

paymentType*

Type: string

Информация о типе оплаты. CARD – оплаченный заказа, CASH – неоплаченный заказ.

Enum: CARD, CASH

OrdersPromoItem

Name

Description

discount*

Type: number

Сумма скидки в валюте, оплачиваемая партнёром

Example: 200

type*

Type: string

Тип акции. Может быть подарок "GIFT", процентная скидка "PERCENTAGE", софинансируемая скидка "COFINANCE", фиксированная скидка "FIXED"

Example: GIFT

Enum: GIFT, PERCENTAGE, COFINANCE, FIXED

partner_discount

Type: number

Часть суммы скидки в валюте, оплачиваемая партнером

Example: 100

yandex_discount

Type: number

Часть суммы скидки в валюте, оплачиваемая Яндекс.Едой

Example: 100

MarketplaceOrderDeliveryInfo

Name

Description

clientName*

Type: string

Имя клиента в сервисе Яндекс Еда

Example: Иванов Иван Иванович

deliveryAddress*

Type: DeliveryAddress

Информация об адресе доставки

deliveryDate*

Type: string<date-time>

Дата доставки (к которой клиент ожидает доставку заказа), в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP)

Example: 1937-01-01T12:00:27.870000+00:20

phoneNumber*

Type: string

Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

additionalPhoneNumbers

Type: string[]

Список дополнительных номеров для связи с клиентом.
Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

MarketplaceOrderPaymentInfo

Name

Description

change*

Type: number<double>

Сумма, с которой потребуется сдача.

Example: 500

deliveryFee*

Type: number<double>

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

Example: 100

itemsCost*

Type: number<double>

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

Example: 100

paymentType*

Type: string

Информация о типе оплаты. CARD – уже оплаченный заказа, CASH – неоплаченный заказ.

Enum: CARD, CASH

total

Type: number<double>

Общая стоимость заказа. То есть itemsCost + deliveryFee

Example: 200

PickupOrderDeliveryInfo

Name

Description

clientArrivementDate*

Type: string<date-time>

Дата, когда придет клиент в ресторан, в формате RFC3339 с дробной частью секунд (Y-m-d\TH:i:s.uP)

Example: 1937-01-01T12:00:27.870000+00:20

clientName*

Type: string

Имя клиента в сервисе Яндекс Еда

Example: Иванов Иван Иванович

phoneNumber*

Type: string

Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

additionalPhoneNumbers

Type: string[]

Список дополнительных номеров для связи с клиентом.
Номер телефона для связи с клиентом в международном формате. Состоит из частей "+<код страны><номер>". Может содержать добавочный номер: "+<код страны><номер> доб. <добавочный номер>".

Example: +79031111111 доб. 4432

PickupOrderPaymentInfo

Name

Description

change*

Type: number<double>

Сумма, с которой потребуется сдача.

Example: 500

itemsCost*

Type: number<double>

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

Example: 100

paymentType*

Type: string

Информация о типе оплаты

Enum: CARD, CASH

total

Type: number<double>

Общая стоимость заказа

Example: 200

OrdersModificationItem

Name

Description

id*

Type: string

ID модификатора в системе партнера

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

price*

Type: number<double>

Цена модификатора для пункта меню (например - дополнительный соус)

Example: 100

quantity*

Type: integer

Количество в заказе

Example: 3

group_id

Type: string

ID группы в системе партнера, к которой принадлежит модификатор. Используется для однозначной идентификации модификатора при его дублировании.

Example: 937c57f6-4508-4858-be7f-20691a16fbb1

name

Type: string

Наименование модификатора

Example: Европейские приборы

OrderItemComboInfo

Информация о комбо, к которому относится данная позиция. Заполнено только для позиций, которые были выбраны в составе комбо.

Name

Description

componentId*

Type: string

ID компонента комбо, к которому относится данная позиция.

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

id*

Type: string

ID комбо из меню, к которому относится данная позиция.

Example: 937c57f6-4508-4858-be7f-20691a16fbb0

DeliveryAddress

Name

Description

full*

Type: string

Полный адрес

Example: Москва, улица Тверская, дом 1 строение 4, подъезд 2. 4-й этаж, код домофона: 123 К 4567

latitude*

Type: string

Широта точки доставки

Example: 55.756994

longitude*

Type: string

Долгота точки доставки

Example: 37.614006

Responses

200 OK

Заказ успешно обработан внутренней системой ресторана

Body

application/json
{
    "result": "OK",
    "orderId": "03d3b69b-331c-4f84-b2c4-888b30320e63"
}

Name

Description

orderId*

Type: string

Идентификатор созданного заказа в системе партнера. Формат свободный. Рекомендуется UUID4.

Example: 03d3b69b-331c-4f84-b2c4-888b30320e63

result

Type: string

Example: OK

400 Bad Request

Bad request. Ошибка в параметрах. В теле ответа ожидается массив с объектом из списка ошибок

Body

application/json
[
    {
        "code": 100,
        "description": "Description of error"
    }
]

ErrorItem[]

ErrorItem

Name

Description

code

Type: integer

Согласованный с Яндекс.Еда числовой код ошибки

Example: 100

description

Type: string

Сообщение об ошибке

Example: Description of error

401 Unauthorized

Не пройдена авторизация – истек токен либо не был передан в запросе. Будет сделан ретрай.

Body

application/json
{
    "reason": "Access token has been expired. You should request a new one"
}

Name

Description

reason*

Type: string

Причина, по которой не прошла авторизация

Example: Access token has been expired. You should request a new one

406 Not Acceptable

Какие-то блюда в заказе находятся в стоплисте у партнёра. Переданные партнером блюда будут поставлены в стоп-лист. Если при следующем опросе стоп-листов этих блюд в нем не будет - то они вновь станут доступны. После этого клиенту предложат изменить заказ с учетом отсутствующих блюд. Если он согласится, то заказ вновь отправиться в ресторан со скорректированным составом.

Body

application/json
{
    "type": "unavailable_goods",
    "message": "На данный момент товар недоступен для заказа: Омлет с крем-чизом и авокадо",
    "goods": "{\"10000000003998\": \"Омлет с крем-чизом и авокадо\"}"
}

Name

Description

goods

Type: object

Словарь, где ключи – строковые идентификаторы блюд, значения – имена бюлюд

Example: {"10000000003998": "Омлет с крем-чизом и авокадо"}

message

Type: string

Example: На данный момент товар недоступен для заказа: Омлет с крем-чизом и авокадо

type

Type: string

Example: unavailable_goods

500 Internal Server Error

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

Body

application/json
[
    {
        "code": 100,
        "description": "Description of error"
    }
]

ErrorItem[]

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