The Menu API exposes all operations needed to manage a restaurant’s menus and the food items associated with them. Every endpoint is served under the base pathDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/NicolasMPP/restorante-springboot/llms.txt
Use this file to discover all available pages before exploring further.
/api/menu and is CORS-enabled — no authentication token is required. The server runs at http://localhost:8080 by default.
Endpoints
GET /api/menu/{id}
Retrieve a full
Menu object, including its assigned manager and all linked food items.GET /api/menu/{id}/alimentos
List food items with enriched detail — recipe, chef, and ingredient count — sorted alphabetically.
GET /api/menu/{menuId}/alimentos/{alimentoId}
Retrieve a single food item from a menu with its full
Receta association eager-loaded.POST /api/menu/{menuId}/alimentos/{alimentoId}
Link an already-existing food item to a menu without creating any new records.
POST /api/menu/{menuId}/alimento-completo
Create a recipe, link ingredients, create the food item, and add it to the menu in one atomic request.
PUT /api/menu/{menuId}/alimento-completo/{alimentoId}
Update a food item’s name, price, type, recipe, chef, and ingredient list. Supports changing the JPA discriminator type via native SQL.
DELETE /api/menu/{menuId}/alimentos/{alimentoId}
Unlink a food item from a menu. The
Alimento record is kept; only the join-table row is removed.AlimentoCompletoRequest
TheAlimentoCompletoRequest DTO is the request body for both the create and update endpoints. All fields are sent as JSON.
Display name of the food item. Maximum 100 characters. Maps to the
nombre column of the alimentos table.Price of the food item as a decimal value. Maps to a
DECIMAL(10,2) column.Food category. Controls the JPA single-table inheritance discriminator column
tipo_alimento. One of:PLATO_FUERTE— main course (PlatoFuerteentity)POSTRE— dessert (Postresentity)BEBIDA— beverage (Bebidaentity)ADICIONAL— side or add-on (Adicionalesentity)GENERAL— uncategorised baseAlimento
Name for the recipe that will be created or updated alongside the food item.
Free-text description of the preparation process. Stored on the
Receta entity.The cédula (national ID number) of the chef who owns the recipe. The server looks up the chef by this value — the request returns
400 if no match is found.Array of ingredient description strings. Each string must exactly match the
descripcion field of an existing Ingrediente record. Strings that do not match any record are silently skipped rather than causing an error.Response codes
| Status | Meaning |
|---|---|
200 OK | The operation completed successfully. |
400 Bad Request | The operation failed — typically because a referenced menu, food item, or chef could not be found. The response body contains a plain-text error message. |
404 Not Found | A GET request was made for a resource ID that does not exist. |