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 | Í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-10-09T02:12:12Z
HTTP 200
Request
{
"query": "Cazuela de Mariscos"
}
Response
{
"success": true,
"message": "Operación realizada correctamente",
"data": {
"products": [
{
"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
}
],
"pagination": {
"page": 1,
"limit": 25,
"total": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
}
}
}