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>" \
-H "X-Tenant-Key: <tenantKey>"
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-09-08T16:35:34Z
HTTP 200
Request
[]
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
},
{
"uuid": "36624424-18be-11f1-9da2-b627060a1ebe",
"name": "Cazuela de Mariscos",
"sku": "MAR-001",
"internalName": "cazuela",
"description": "Camarones, calamar y mejillones en salsa de coco y cúrcuma",
"kitchenDefaultNotes": null,
"basePriceCents": 2300000,
"prepTimeMinutes": 20,
"stockMin": "0.0000",
"sortKey": "0c",
"iconFontAwesome": "fa-solid fa-fish",
"color": "#06b6d4",
"isActive": 1,
"productCategoryUuid": "bacf4e3d-70fb-425f-9ede-1fdb924aed80",
"productCategoryName": "Mariscos",
"unitId": 1,
"defaultCourseId": 2,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "366262db-18be-11f1-9da2-b627060a1ebe",
"name": "Filete de Tilapia",
"sku": "MAR-002",
"internalName": "tilapia",
"description": "Filete de tilapia a la plancha con arroz y ensalada",
"kitchenDefaultNotes": null,
"basePriceCents": 1600000,
"prepTimeMinutes": 18,
"stockMin": "0.0000",
"sortKey": "0e",
"iconFontAwesome": "fa-solid fa-fish-fins",
"color": "#0ea5e9",
"isActive": 1,
"productCategoryUuid": "bacf4e3d-70fb-425f-9ede-1fdb924aed80",
"productCategoryName": "Mariscos",
"unitId": 1,
"defaultCourseId": 2,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "36626e5c-18be-11f1-9da2-b627060a1ebe",
"name": "Ensalada César",
"sku": "ENS-001",
"internalName": "cesar",
"description": "Lechuga romana, crutones, parmesano y aderezo César",
"kitchenDefaultNotes": "Aparte la salsa; Sin champiñones; Bien cocido; Término medio",
"basePriceCents": 1000000,
"prepTimeMinutes": 8,
"stockMin": "0.0000",
"sortKey": "0g",
"iconFontAwesome": "fa-solid fa-seedling",
"color": "#10b981",
"isActive": 1,
"productCategoryUuid": "5eca3294-1826-4735-9caa-a84736fd34f6",
"productCategoryName": "Ensaladas",
"unitId": 1,
"defaultCourseId": 1,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "3662794a-18be-11f1-9da2-b627060a1ebe",
"name": "Ensalada Tropical",
"sku": "ENS-002",
"internalName": "tropical",
"description": "Espinaca, mango, fresas y aderezo de maracuyá",
"kitchenDefaultNotes": null,
"basePriceCents": 1100000,
"prepTimeMinutes": 8,
"stockMin": "0.0000",
"sortKey": "0i",
"iconFontAwesome": "fa-solid fa-leaf",
"color": "#14b8a6",
"isActive": 1,
"productCategoryUuid": "5eca3294-1826-4735-9caa-a84736fd34f6",
"productCategoryName": "Ensaladas",
"unitId": 1,
"defaultCourseId": 1,
"revenueAccountId": 12,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "3662837e-18be-11f1-9da2-b627060a1ebe",
"name": "Tres Leches",
"sku": "POS-001",
"internalName": "tres-leches",
"description": "Bizcocho húmedo bañado en tres tipos de leche",
"kitchenDefaultNotes": "Sin lactosa; Extra dulce de leche; Porción pequeña",
"basePriceCents": 900000,
"prepTimeMinutes": 5,
"stockMin": "0.0000",
"sortKey": "0k",
"iconFontAwesome": "fa-solid fa-cake-candles",
"color": "#ec4899",
"isActive": 1,
"productCategoryUuid": "8e8c547a-0b6c-4a2a-a49d-6de5611f4a82",
"productCategoryName": "Postres",
"unitId": 1,
"defaultCourseId": 3,
"revenueAccountId": 15,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "36628d62-18be-11f1-9da2-b627060a1ebe",
"name": "Mousse de Maracuyá",
"sku": "POS-002",
"internalName": "mousse-maracuya",
"description": "Mousse cremoso de maracuyá con coulis de fruta",
"kitchenDefaultNotes": null,
"basePriceCents": 850000,
"prepTimeMinutes": 5,
"stockMin": "0.0000",
"sortKey": "0m",
"iconFontAwesome": "fa-solid fa-lemon",
"color": "#eab308",
"isActive": 1,
"productCategoryUuid": "8e8c547a-0b6c-4a2a-a49d-6de5611f4a82",
"productCategoryName": "Postres",
"unitId": 1,
"defaultCourseId": 3,
"revenueAccountId": 15,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "36629787-18be-11f1-9da2-b627060a1ebe",
"name": "Churros con Chocolate",
"sku": "POS-003",
"internalName": "churros",
"description": "Churros artesanales con salsa de chocolate caliente",
"kitchenDefaultNotes": "Extra chocolate; Sin azúcar adicional; Caliente; Tibio",
"basePriceCents": 750000,
"prepTimeMinutes": 10,
"stockMin": "0.0000",
"sortKey": "0o",
"iconFontAwesome": "fa-solid fa-cookie",
"color": "#f59e0b",
"isActive": 1,
"productCategoryUuid": "8e8c547a-0b6c-4a2a-a49d-6de5611f4a82",
"productCategoryName": "Postres",
"unitId": 1,
"defaultCourseId": 3,
"revenueAccountId": 15,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 2
},
{
"uuid": "3662a28e-18be-11f1-9da2-b627060a1ebe",
"name": "Limonada Natural",
"sku": "BEV-001",
"internalName": "limonada",
"description": "Limonada natural con hielo y menta",
"kitchenDefaultNotes": null,
"basePriceCents": 500000,
"prepTimeMinutes": 3,
"stockMin": "0.0000",
"sortKey": "0q",
"iconFontAwesome": "fa-solid fa-glass-citrus",
"color": "#84cc16",
"isActive": 1,
"productCategoryUuid": "d88163ca-a221-493d-9907-b7c6cafdc34b",
"productCategoryName": "Bebidas Frías",
"unitId": 3,
"defaultCourseId": 2,
"revenueAccountId": 13,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 3
},
{
"uuid": "3662ae66-18be-11f1-9da2-b627060a1ebe",
"name": "Jugo de Naranja",
"sku": "BEV-002",
"internalName": "jugo-naranja",
"description": "Jugo de naranja natural recién exprimido",
"kitchenDefaultNotes": null,
"basePriceCents": 550000,
"prepTimeMinutes": 3,
"stockMin": "0.0000",
"sortKey": "0s",
"iconFontAwesome": "fa-solid fa-glass-water",
"color": "#f97316",
"isActive": 1,
"productCategoryUuid": "d88163ca-a221-493d-9907-b7c6cafdc34b",
"productCategoryName": "Bebidas Frías",
"unitId": 3,
"defaultCourseId": 3,
"revenueAccountId": 13,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 3
},
{
"uuid": "3662ba46-18be-11f1-9da2-b627060a1ebe",
"name": "Agua con Gas",
"sku": "BEV-003",
"internalName": "agua-gas",
"description": "Agua mineral con gas 350ml",
"kitchenDefaultNotes": null,
"basePriceCents": 350000,
"prepTimeMinutes": 1,
"stockMin": "0.0000",
"sortKey": "0u",
"iconFontAwesome": "fa-solid fa-droplet",
"color": "#3b82f6",
"isActive": 1,
"productCategoryUuid": "d88163ca-a221-493d-9907-b7c6cafdc34b",
"productCategoryName": "Bebidas Frías",
"unitId": 3,
"defaultCourseId": 3,
"revenueAccountId": 13,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 3
},
{
"uuid": "3662c515-18be-11f1-9da2-b627060a1ebe",
"name": "Café Negro",
"sku": "BEV-010",
"internalName": "cafe-negro",
"description": "Café espresso doble preparado al momento",
"kitchenDefaultNotes": null,
"basePriceCents": 400000,
"prepTimeMinutes": 3,
"stockMin": "0.0000",
"sortKey": "0w",
"iconFontAwesome": "fa-solid fa-mug-hot",
"color": "#78716c",
"isActive": 1,
"productCategoryUuid": "09c72918-06ae-444b-859f-ec3c4b4c0cbf",
"productCategoryName": "Bebidas Calientes",
"unitId": 3,
"defaultCourseId": 3,
"revenueAccountId": 13,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 3
},
{
"uuid": "3662d290-18be-11f1-9da2-b627060a1ebe",
"name": "Café Latte",
"sku": "BEV-011",
"internalName": "cafe-latte",
"description": "Espresso con leche vaporizada y espuma",
"kitchenDefaultNotes": null,
"basePriceCents": 600000,
"prepTimeMinutes": 4,
"stockMin": "0.0000",
"sortKey": "0y",
"iconFontAwesome": "fa-solid fa-mug-saucer",
"color": "#f59e0b",
"isActive": 1,
"productCategoryUuid": "09c72918-06ae-444b-859f-ec3c4b4c0cbf",
"productCategoryName": "Bebidas Calientes",
"unitId": 3,
"defaultCourseId": 3,
"revenueAccountId": 13,
"createdAt": "2026-04-15T17:05:02.000Z",
"pricesCount": 3
},
{
"uuid": "65b775d3-726c-45b6-b2bd-8f998891c383",
"name": "Prod Listado 6aa0391954f60",
"sku": "SOP-003",
"internalName": null,
"description": null,
"kitchenDefaultNotes": null,
"basePriceCents": 1000,
"prepTimeMinutes": 0,
"stockMin": "0.0000",
"sortKey": "h",
"iconFontAwesome": "fa-solid fa-bowl-food",
"color": "#FF4500",
"isActive": 1,
"productCategoryUuid": "ef52bb1b-f81b-44f8-a33c-119ca3d557ce",
"productCategoryName": "Sopas y Cremas",
"unitId": 1,
"defaultCourseId": 5,
"revenueAccountId": null,
"createdAt": "2026-09-08T16:34:33.000Z",
"pricesCount": 0
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 18,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}
}