Saltar al contenido principal

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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "pending",
    "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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "pending",
    "total": 45.50,
    "created_at": "2025-01-15T14:30:00Z"
    }
    • Response Body (Error - 400 Bad Request):
    "Missing or malformed ID"
    • Response Body (Error - 404 Not Found):
    "Order not found"
  • 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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "pending",
    "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",
    "waiter": "string",
    "status": "string",
    "total": 0.0
    }
    • cURL Example:
    curl -X POST "http://127.0.0.1:9154/orders" \
    -H 'Cookie: accessToken=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "pending",
    "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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "pending",
    "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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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": "completed",
    "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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here'
    -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=your_access_token_here' \
    -H 'Cookie: refreshToken=your_refresh_token_here' \
    -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)

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