Productos del menú
POST
Listar productos del catálogo
POST /api/products/list-products
Descripción
Retorna los productos disponibles del catálogo del restaurante, paginados, con búsqueda y filtros opcionales.
Detalles
Lista los productos disponibles del catálogo respetando el orden configurado del restaurante. Permite buscar por coincidencia parcial en el nombre del producto, su código de identificación o el nombre de su categoría. Admite además filtrar por categoría, por estado activo o pausado y por un rango de precio base. Incluye datos de presentación, precio base, categoría asociada y estado operativo de cada producto. Los productos eliminados no se incluyen en la respuesta.
Permisos requeridos
catalog.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| query | string | No |
max:100
|
| categoryUuid | string | No |
min:36
max:36
|
| status | string | No |
enum:active,inactive
|
| minPriceCents | int | No |
min_value:0
|
| maxPriceCents | int | No |
min_value:0
|
Paginación
| defaultLimit | 25 |
| maxLimit | 100 |
| allowedSorts | sortKey, name, sku, basePriceCents, createdAt |
| defaultSort | sortKey |
| defaultDir | asc |
| withTotal | true |
Ejemplo de request
curl -X POST https://restofy.pro/api/products/list-products \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>"
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-09-13T21:05:19Z
HTTP 200
Request
{
"limit": 5
}
Response
{
"success": true,
"message": "Operación realizada correctamente",
"data": {
"products": [
{
"uuid": "3661c9fa-18be-11f1-9da2-b627060a1ebe",
"name": "Sopa del Día",
"sku": "SOP-001",
"internalName": "sopa-dia",
"description": "Sopa casera preparada según disponibilidad del día",
"kitchenDefaultNotes": "Caliente; Tibia; Sin sal; Aparte el pan",
"basePriceCents": 700000,
"prepTimeMinutes": 15,
"stockMin": "0.0000",
"sortKey": "02",
"iconFontAwesome": "fa-solid fa-bowl-hot",
"color": "#f59e0b",
"isActive": 1,
"productCategoryUuid": "ef52bb1b-f81b-44f8-a33c-119ca3d557ce",
"productCategoryName": "Sopas y Cremas",
"unitId": 1,
"defaultCourseId": 1,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "3661f2f0-18be-11f1-9da2-b627060a1ebe",
"name": "Ajiaco Bogotano",
"sku": "SOP-002",
"internalName": "ajiaco",
"description": "Ajiaco tradicional con pollo, papas y mazorca",
"kitchenDefaultNotes": "Con alcaparras; Sin alcaparras; Extra crema; Extra mazorca; Aparte el aguacate; Bien caliente; Sin cilantro",
"basePriceCents": 1100000,
"prepTimeMinutes": 20,
"stockMin": "0.0000",
"sortKey": "04",
"iconFontAwesome": "fa-solid fa-bowl-food",
"color": "#eab308",
"isActive": 1,
"productCategoryUuid": "ef52bb1b-f81b-44f8-a33c-119ca3d557ce",
"productCategoryName": "Sopas y Cremas",
"unitId": 1,
"defaultCourseId": 1,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 6
},
{
"uuid": "36620cf6-18be-11f1-9da2-b627060a1ebe",
"name": "Bandeja Paisa",
"sku": "CAR-001",
"internalName": "bandeja",
"description": "Bandeja típica con carne molida, chicharrón, chorizo, huevo, arroz, frijoles y aguacate",
"kitchenDefaultNotes": "Carne término medio; Carne bien cocida; Carne tres cuartos; Sin chicharrón; Extra arepa; Sin frijoles; Huevo frito; Huevo revuelto; Aparte el aguacate",
"basePriceCents": 1800000,
"prepTimeMinutes": 20,
"stockMin": "0.0000",
"sortKey": "06",
"iconFontAwesome": "fa-solid fa-plate-wheat",
"color": "#ef4444",
"isActive": 1,
"productCategoryUuid": "f13d2b64-a2cd-4b6c-836a-7ac52b63a463",
"productCategoryName": "Carnes",
"unitId": 1,
"defaultCourseId": 2,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "366221e3-18be-11f1-9da2-b627060a1ebe",
"name": "Churrasco a la Parrilla",
"sku": "CAR-002",
"internalName": "churrasco",
"description": "Corte de churrasco 300g a la parrilla con papas y chimichurri",
"kitchenDefaultNotes": "Término rojo; Término medio; Término bien cocido; Sin sal; Extra chimichurri; Aparte la guarnición",
"basePriceCents": 2200000,
"prepTimeMinutes": 25,
"stockMin": "0.0000",
"sortKey": "08",
"iconFontAwesome": "fa-solid fa-fire-burner",
"color": "#f43f5e",
"isActive": 1,
"productCategoryUuid": "f13d2b64-a2cd-4b6c-836a-7ac52b63a463",
"productCategoryName": "Carnes",
"unitId": 1,
"defaultCourseId": 2,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "3662326a-18be-11f1-9da2-b627060a1ebe",
"name": "Lomo de Res al Vino",
"sku": "CAR-003",
"internalName": "lomo-res",
"description": "Lomo de res con reducción de vino tinto y puré de papa",
"kitchenDefaultNotes": null,
"basePriceCents": 2500000,
"prepTimeMinutes": 30,
"stockMin": "0.0000",
"sortKey": "0a",
"iconFontAwesome": "fa-solid fa-drumstick-bite",
"color": "#ef4444",
"isActive": 1,
"productCategoryUuid": "f13d2b64-a2cd-4b6c-836a-7ac52b63a463",
"productCategoryName": "Carnes",
"unitId": 1,
"defaultCourseId": 2,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
}
],
"pagination": {
"page": 1,
"limit": 5,
"total": 17,
"totalPages": 4,
"hasNext": true,
"hasPrev": false
}
}
}