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 y por estado activo o pausado. 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
|
Paginación
| defaultLimit | 25 |
| maxLimit | 100 |
| allowedSorts | sortKey, name, sku, basePriceCents, createdAt |
| defaultSort | sortKey |
| defaultDir | asc |
| withTotal | true |
Respuesta
Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.
| Campo | Tipo | Descripción |
|---|---|---|
| products | array | Productos del catálogo, en el orden en que se muestran |
| products[].uuid | string | Identificador del producto |
| products[].name | string | Nombre del producto |
| products[].sku | string | Código SKU |
| products[].internalName | string Admite vacío | Nombre interno para cocina y reportes |
| products[].description | string Admite vacío | Descripción para la carta |
| products[].kitchenDefaultNotes | string Admite vacío | Notas sugeridas para cocina |
| products[].basePriceCents | int | Precio base, en centavos |
| products[].prepTimeMinutes | int | Tiempo de preparación en minutos |
| products[].stockMin | decimal | Existencia mínima antes de avisar |
| products[].iconFontAwesome | string Admite vacío | Ícono de Font Awesome |
| products[].color | string Admite vacío | Color en hexadecimal |
| products[].isActive | bool | Si se ofrece para vender |
| products[].productCategoryUuid | string | Identificador de la categoría |
| products[].productCategoryName | string | Nombre de la categoría |
| products[].unitId | int | Unidad en que se vende |
| products[].defaultCourseId | int | Tiempo de servicio por defecto |
| products[].revenueAccountId | int Admite vacío | Cuenta de ingresos; vacío si usa la del restaurante |
| products[].createdAt | datetime | Cuándo se creó el producto |
| products[].pricesCount | int | Cantidad de precios configurados |
| pagination | pagination | Página devuelta y total de resultados |
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-11-02T19:00:57Z
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
}
}
}