Orders
Gestión de Órdenes
Los endpoints de órdenes permiten gestionar los pedidos del restaurante, incluyendo los platos asociados.
-
GET /orders: Obtiene todas las órdenes del sistema.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- cURL Example:
curl -X GET "http://127.0.0.1:9154/orders" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json"- Response Body (Éxito - 200 OK):
[{"id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Juan Pérez","status": "open","total": 45.50,"created_at": "2025-01-15T14:30:00Z"}]- Response Body (Sin contenido - 204 No Content):
"No orders found" -
GET /orders/{id}: Obtiene una orden específica por su ID.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Path Parameters:
id(string): ID de la orden a obtener
- cURL Example:
curl -X GET "http://127.0.0.1:9154/orders/76ee1086-b945-4170-b2e6-9fbeb95ae0be" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json"- Response Body (Éxito - 200 OK):
{"id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Juan Pérez","status": "open","total": 45.50,"created_at": "2025-01-15T14:30:00Z"} -
GET /orders/{id}/complete: Obtiene una orden completa con todos sus platos.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Path Parameters:
id(string): ID de la orden a obtener
- cURL Example:
curl -X GET "http://127.0.0.1:9154/orders/76ee1086-b945-4170-b2e6-9fbeb95ae0be/complete" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json"- Response Body (Éxito - 200 OK):
{"order": {"id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Juan Pérez","status": "open","total": 45.50,"created_at": "2025-01-15T14:30:00Z"},"dishes": [{"id": "dish-uuid-1","order_id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","dish_id": "pizza-uuid","price_at_order": 15.99,"notes": "Sin cebolla"}]} -
POST /orders: Crea una nueva orden en el sistema.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Request Body:
{"user_id": "string","table_id": "string (opcional)","waiter": "string","status": "open | closed | paid","total": 0.0,"created_at": "ISO 8601 (e.g. 2025-01-15T14:30:00Z)"}- cURL Example:
curl -X POST "http://127.0.0.1:9154/orders" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json" \-d '{"user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "María García","status": "open","total": 0.0}'- Response Body (Éxito - 201 Created):
{"message": "Order added successfully","id": "new-order-uuid"} -
POST /orders/with-dishes: Crea una orden completa con platos incluidos.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Request Body:
{"order": {"user_id": "string","table_id": "string","waiter": "string","status": "string","total": 0.0},"dishes": [{"dish_id": "string","price_at_order": 0.0,"notes": "string"}]}- cURL Example:
curl -X POST "http://127.0.0.1:9154/orders/with-dishes" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json" \-d '{"order": {"user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Carlos López","status": "open","total": 0.0},"dishes": [{"dish_id": "pizza-uuid","price_at_order": 15.99,"notes": "Extra queso"}]}' -
PUT /orders/{id}: Actualiza una orden existente.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Path Parameters:
id(string): ID de la orden a actualizar
- Request Body:
{"user_id": "string","table_id": "string","waiter": "string","status": "string","total": 0.0}- cURL Example:
curl -X PUT "http://127.0.0.1:9154/orders/76ee1086-b945-4170-b2e6-9fbeb95ae0be" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json" \-d '{"user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Ana Martínez","status": "paid","total": 48.75}'- Response Body (Éxito - 200 OK):
{"message": "Order updated successfully"} -
DELETE /orders/{id}: Elimina una orden del sistema.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Path Parameters:
id(string): ID de la orden a eliminar
- cURL Example:
curl -X DELETE "http://127.0.0.1:9154/orders/76ee1086-b945-4170-b2e6-9fbeb95ae0be" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json"- Response Body (Éxito - 200 OK):
{"message": "Order deleted successfully"}
Gestión de Platos en Órdenes
-
GET /orders/{id}/dishes: Obtiene todos los platos de una orden específica.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- cURL Example:
curl -X GET "http://127.0.0.1:9154/orders/76ee1086-b945-4170-b2e6-9fbeb95ae0be/dishes" \-H "Cookie: accessToken=$ACCESS_TOKEN" \-H "Cookie: refreshToken=$REFRESH_TOKEN" \-H "Content-Type: application/json" -
POST /orders/{id}/dishes: Agrega platos a una orden existente.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
- Request Body:
[{"dish_id": "string","price_at_order": 0.0,"notes": "string"}] -
PUT /orders/{id}/dishes/{dishId}: Actualiza un plato específico de una orden.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
-
DELETE /orders/{id}/dishes/{dishId}: Elimina un plato específico de una orden.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
-
DELETE /orders/{id}/dishes: Elimina todos los platos de una orden.- Authorization: Requiere autenticación JWT (enviado automáticamente via cookies)
Filtros y Acciones Adicionales
-
GET /orders/with-payments: Obtiene órdenes junto con información de pago. Soporta filtros por query params.- Authorization: Requiere autenticación JWT.
- Query Parameters (todos opcionales):
start_date/end_date(string, YYYY-MM-DD)status(string)user_id(string)payment_method(string)min_total/max_total(number)sort_by(string)sort_order(asc|desc)
- cURL Example:
curl -X GET "http://127.0.0.1:9154/orders/with-payments?status=paid&start_date=2025-01-01&end_date=2025-01-31" \-H "Cookie: accessToken=$ACCESS_TOKEN"- Response Body (200 OK):
[{"id": "order-uuid","user_id": "user-uuid","table_id": null,"waiter": "Juan Pérez","status": "paid","total": 45.50,"created_at": "2025-01-15T14:30:00Z","payment_method": "Efectivo"}] -
GET /orders/user/{userId}: Obtiene todas las órdenes de un usuario específico.- Authorization: Requiere autenticación JWT.
- Path Parameters:
userId(string): ID del usuario.
-
GET /orders/table/{tableId}: Obtiene todas las órdenes de una mesa específica.- Authorization: Requiere autenticación JWT.
- Path Parameters:
tableId(string): ID de la mesa.
-
GET /orders/status/{status}: Obtiene todas las órdenes con un estado específico.- Authorization: Requiere autenticación JWT.
- Path Parameters:
status(string): Estado de la orden (open,closed,paid).
-
GET /orders/date-range: Obtiene órdenes dentro de un rango de fechas.- Authorization: Requiere autenticación JWT.
- Query Parameters:
start_date(string): Fecha de inicio (formato YYYY-MM-DD).end_date(string): Fecha de fin (formato YYYY-MM-DD).
-
GET /orders/total-sales/{date}: Obtiene el total de ventas para una fecha específica.- Authorization: Requiere autenticación JWT.
- Path Parameters:
date(string): Fecha (formato YYYY-MM-DD).
-
PUT /orders/{id}/calculate-total: Recalcula y actualiza el total de una orden.- Authorization: Requiere autenticación JWT.
- Path Parameters:
id(string): ID de la orden.
Notas importantes:
- Todos los endpoints de órdenes requieren autenticación JWT
- Los IDs son UUID generados automáticamente
- El total de la orden se calcula automáticamente basado en los platos
- Los tokens se envían automáticamente via cookies del navegador