Сценарий из mcp-everything. Актуально на 2026-10-24.
Заказы из Яндекс Еды сразу попадают на кассу или кухню ресторана. Особенность API: эти методы реализуешь ты, а Яндекс Еда вызывает их на твоём сервере.
import uuid
from datetime import datetime, timezone
from flask import Flask, request, jsonify, abort
app = Flask(__name__)
ORDERS = {}
def now():
return datetime.now(timezone.utc).isoformat(timespec="milliseconds")
@app.before_request
def auth():
if request.path != "/security/oauth/token" and request.headers.get("Authorization") != f"Bearer {TOKEN}":
abort(401)
@app.post("/security/oauth/token")
def token():
if request.form.get("client_id") != CLIENT_ID or request.form.get("client_secret") != CLIENT_SECRET:
abort(401)
return jsonify(access_token=TOKEN, token_type="bearer", expires_in=3600)
@app.post("/order")
def create_order():
order = request.get_json()
order_id = str(uuid.uuid4())
ORDERS[order_id] = {"eatsId": order.get("eatsId"), "status": "NEW", "updatedAt": now(), "payload": order}
send_to_kitchen(order_id, order) # твоя касса или кухонный экран
return jsonify(result="OK", orderId=order_id)
@app.get("/order/<order_id>/status")
def order_status(order_id):
o = ORDERS.get(order_id) or abort(404)
return jsonify(status=o["status"], updatedAt=o["updatedAt"])
@app.put("/order/<order_id>/status")
def status_from_eda(order_id):
o = ORDERS.get(order_id) or abort(404)
o.update(status=request.get_json()["status"], updatedAt=now())
return "", 204
@app.delete("/order/<order_id>")
def cancel(order_id):
o = ORDERS.get(order_id) or abort(404)
o.update(status="CANCELLED", updatedAt=now())
return "", 200
https://dc-partner.eda.yandex.net{host}Тип: OAuth 2.0
На своей стороне партнёр реализует OAuth 2.0 client_credentials: метод POST /security/oauth/token выдаёт токен по client_id, client_secret, grant_type и scope (read, write). Яндекс Еда передаёт токен в каждом запросе как Authorization: Bearer token.
Для push-методов партнёр получает токен на стороне Яндекс Еды (POST /oauth2/token на dc-partner.eda.yandex.net) и передаёт заголовки Authorization и Partner-Name.
Тело — application/x-www-form-urlencoded в одну строку.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
client_id |
body | string | да | Идентификатор клиента |
client_secret |
body | string | да | Секрет |
grant_type |
body | string | да | Тип доступа |
scope |
body | string | да | Права доступа (read, write) |
Модель запроса — application/vnd.eats.order.v2+json; схемы YandexOrder (доставка Яндекс Еды), MarketplaceOrder (доставка партнёра), PickupOrder (самовывоз). В ответе — orderId (рекомендуется UUID4) и result.
Статусы: NEW → ACCEPTED_BY_RESTAURANT → COOKING → READY → TAKEN_BY_COURIER → DELIVERED; в CANCELLED — из любого статуса.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
orderId |
path | string | да | ID заказа в системе партнёра |
Ответ 204. Отмену Яндекс Еда обычно передаёт через DELETE /order/{orderId}.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
orderId |
path | string | да | ID заказа в системе партнёра |
status |
body | string | да | TAKEN_BY_COURIER, DELIVERED или CANCELLED |
attributes |
body | array | нет | Доп. атрибуты, например признак оплаты при отмене |
comment |
body | string | нет | Комментарий |
reason |
body | string | нет | Причина отмены (только для CANCELLED) |
updatedAt |
body | string | нет | Время смены статуса, RFC3339 с долями секунд |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
orderId |
path | string | да | ID заказа в системе партнёра |
eatsId |
body | string | да | Сквозной ID заказа в Яндекс Еде |
comment |
body | string | нет | Причина отмены |
dc-partner.eda.yandex.net.Content-Type/Accept: application/vnd.eats.order.v2+json, application/vnd.eats.menu.composition.v2+json и т. п.POST /v1/feedback, POST /feedback-answer), зон доставки (GET /places/{restaurantId}/zones), графика работы (GET /places/{restaurantId}/schedule) и валидации кода курьера.Если этого недостаточно — официальная документация: https://yandex.ru/dev/eda-vendor/doc/ru/ref/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-eda-vendor.md