Orders
Order Management
The order endpoints allow you to manage the restaurant's orders, including the associated dishes.
-
GET /orders: Gets all the orders in the system.- Authorization: Requires JWT authentication (sent automatically 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 (Success - 200 OK):
[{"id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Juan Perez","status": "open","total": 45.50,"created_at": "2025-01-15T14:30:00Z"}]- Response Body (No Content - 204 No Content):
"No orders found" -
GET /orders/{id}: Gets a specific order by its ID.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Path Parameters:
id(string): ID of the order to get
- 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 (Success - 200 OK):
{"id": "76ee1086-b945-4170-b2e6-9fbeb95ae0be","user_id": "262006ea-8782-4b08-ac3b-b3f13270fec3","table_id": "123e4567-e89b-12d3-a456-426614174000","waiter": "Juan Perez","status": "open","total": 45.50,"created_at": "2025-01-15T14:30:00Z"} -
GET /orders/{id}/complete: Gets a complete order with all its dishes.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Path Parameters:
id(string): ID of the order to get
- 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 (Success - 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 Perez","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": "No onion"}]} -
POST /orders: Creates a new order in the system.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Request Body:
{"user_id": "string","table_id": "string","waiter": "string","status": "open | closed | paid","total": 0.0}- 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": "Maria Garcia","status": "open","total": 0.0}'- Response Body (Success - 201 Created):
{"message": "Order added successfully","id": "new-order-uuid"} -
POST /orders/with-dishes: Creates a complete order with dishes included.- Authorization: Requires JWT authentication (sent automatically 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 Lopez","status": "open","total": 0.0},"dishes": [{"dish_id": "pizza-uuid","price_at_order": 15.99,"notes": "Extra cheese"}]}' -
PUT /orders/{id}: Updates an existing order.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Path Parameters:
id(string): ID of the order to update
- 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 Martinez","status": "paid","total": 48.75}'- Response Body (Success - 200 OK):
{"message": "Order updated successfully"} -
DELETE /orders/{id}: Deletes an order from the system.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Path Parameters:
id(string): ID of the order to delete
- 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 (Success - 200 OK):
{"message": "Order deleted successfully"}
Dish Management in Orders
-
GET /orders/{id}/dishes: Gets all the dishes of a specific order.- Authorization: Requires JWT authentication (sent automatically 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: Adds dishes to an existing order.- Authorization: Requires JWT authentication (sent automatically via cookies)
- Request Body:
[{"dish_id": "string","price_at_order": 0.0,"notes": "string"}] -
PUT /orders/{id}/dishes/{dishId}: Updates a specific dish of an order.- Authorization: Requires JWT authentication (sent automatically via cookies)
-
DELETE /orders/{id}/dishes/{dishId}: Deletes a specific dish from an order.- Authorization: Requires JWT authentication (sent automatically via cookies)
-
DELETE /orders/{id}/dishes: Deletes all the dishes from an order.- Authorization: Requires JWT authentication (sent automatically via cookies)
Filters and Additional Actions
-
GET /orders/with-payments: Gets orders along with payment information. Supports filters via query params.- Authorization: Requires JWT authentication.
- Query Parameters (all optional):
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 Perez","status": "paid","total": 45.50,"created_at": "2025-01-15T14:30:00Z","payment_method": "Cash"}] -
GET /orders/user/{userId}: Gets all the orders of a specific user.- Authorization: Requires JWT authentication.
- Path Parameters:
userId(string): User ID.
-
GET /orders/table/{tableId}: Gets all the orders of a specific table.- Authorization: Requires JWT authentication.
- Path Parameters:
tableId(string): Table ID.
-
GET /orders/status/{status}: Gets all the orders with a specific status.- Authorization: Requires JWT authentication.
- Path Parameters:
status(string): Order status (open,closed,paid).
-
GET /orders/date-range: Gets orders within a date range.- Authorization: Requires JWT authentication.
- Query Parameters:
start_date(string): Start date (YYYY-MM-DD format).end_date(string): End date (YYYY-MM-DD format).
-
GET /orders/total-sales/{date}: Gets the total sales for a specific date.- Authorization: Requires JWT authentication.
- Path Parameters:
date(string): Date (YYYY-MM-DD format).
-
PUT /orders/{id}/calculate-total: Recalculates and updates the total of an order.- Authorization: Requires JWT authentication.
- Path Parameters:
id(string): Order ID.
Important notes:
- All order endpoints require JWT authentication.
- IDs are automatically generated UUIDs.
- The order total is calculated automatically based on the dishes.
- Tokens are sent automatically via browser cookies.