# Comida

Busca restaurantes, supermercados y tiendas, lee un menú, cotiza una canasta y haz un pedido. No hay carrito del lado servidor: envías los artículos que quieres con la cotización, y la cotización que recibiste es el pedido que haces.

Busca restaurantes, supermercados y tiendas, lee un menú, cotiza una canasta y haz un pedido. No hay carrito del lado servidor: envías los artículos que quieres con la cotización, y la cotización que recibiste es el pedido que haces.

## Ciclo de vida

```
  QUOTED
     |
  PLACED
     |
  MERCHANT ACCEPTED  ----> rejected
     |
  PREPARING
     |
  READY FOR PICKUP
     |
  COURIER ASSIGNED        (skipped when the customer collects it)
     |
  PICKED UP
     |
  DELIVERING
     |
  DELIVERED                (or CANCELLED, before pickup)
```

## Operaciones

### `GET /v1/food/merchants`

Encuentra restaurantes, supermercados y tiendas abiertos cerca de un punto.

- operation: `search_restaurants`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `search_restaurants`
- status: planned

```bash
curl -s 'https://sandbox-api.ryde.us.com/v1/food/merchants' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN"
```

### `GET /v1/food/merchants/{merchant_id}/menu`

El catálogo público de un comercio. El costo, el inventario, los códigos de barras y los identificadores de proveedor son asunto del comercio y nunca se devuelven aquí.

- operation: `get_restaurant_menu`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `get_restaurant_menu`
- status: planned

```bash
curl -s 'https://sandbox-api.ryde.us.com/v1/food/merchants/$merchant_id/menu' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN"
```

### `POST /v1/food/orders/quote`

Cotiza una canasta exactamente como lo haría el checkout: artículos, cargos, impuestos, cualquier descuento de miembro y el total. Devuelve el quote_id que requiere place_food_order.

- operation: `quote_food_order`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `quote_food_order`
- status: planned

```bash
curl -sX POST 'https://sandbox-api.ryde.us.com/v1/food/orders/quote' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{ … }'
```

### `POST /v1/food/orders`

Realiza el pedido que el cliente confirmó, a partir de un quote_id que se le mostró.

- operation: `place_food_order`
- scope: `food.order`
- entitlement: ryde_one
- creates a transaction: yes
- idempotency key: required
- MCP tool: `place_food_order`
- status: planned

```bash
curl -sX POST 'https://sandbox-api.ryde.us.com/v1/food/orders' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  -d '{ … }'
```

### `GET /v1/food/orders/{order_id}`

Estado en vivo de un pedido, incluido el avance del mensajero. Deliberadamente SIN restricción de membresía: un pedido que existe sigue siendo rastreable.

- operation: `get_food_order`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `get_food_order`
- status: planned

```bash
curl -s 'https://sandbox-api.ryde.us.com/v1/food/orders/$order_id' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN"
```

### `GET /v1/food/orders`

El historial de pedidos del propio cliente, del más reciente al más antiguo.

- operation: `list_food_orders`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: not required
- MCP tool: `list_food_orders`
- status: planned

```bash
curl -s 'https://sandbox-api.ryde.us.com/v1/food/orders' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN"
```

### `POST /v1/food/orders/{order_id}/cancel`

Cancela un pedido, cuando su estado actual aún lo permite. Nunca restringido por membresía: SALIR de una transacción no debe requerir un derecho.

- operation: `cancel_food_order`
- scope: `food.read`
- entitlement: none
- creates a transaction: no
- idempotency key: supported
- MCP tool: `cancel_food_order`
- status: planned

```bash
curl -sX POST 'https://sandbox-api.ryde.us.com/v1/food/orders/$order_id/cancel' \
  -H "Authorization: Bearer $RYDE_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{ … }'
```
