Productos del menú
POST
Activar o desactivar producto del catálogo
POST /api/products/toggle-active
Descripción
Cambia el estado activo o inactivo de un producto sin modificar el resto de sus datos.
Detalles
Activa o desactiva un producto del catálogo identificado por su uuid. Un producto inactivo sigue existiendo en el catálogo pero no se ofrece para asignar a órdenes nuevas. El resto de los campos del producto no se modifican. Falla si el producto no existe o fue eliminado.
Permisos requeridos
catalog.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| uuid | string | Sí |
min:36
max:36
|
| isActive | int | Sí |
enum:0,1
|
Respuesta
Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.
| Campo | Tipo | Descripción |
|---|---|---|
| product | object | Producto con su nuevo estado |
| product.uuid | string | Identificador del producto |
| product.name | string | Nombre del producto |
| product.sku | string | Código SKU |
| product.internalName | string Admite vacío | Nombre interno para cocina y reportes |
| product.description | string Admite vacío | Descripción para la carta |
| product.kitchenDefaultNotes | string Admite vacío | Notas sugeridas para cocina |
| product.basePriceCents | int | Precio base, en centavos |
| product.prepTimeMinutes | int | Tiempo de preparación en minutos |
| product.stockMin | decimal | Existencia mínima antes de avisar |
| product.iconFontAwesome | string Admite vacío | Ícono de Font Awesome |
| product.color | string Admite vacío | Color en hexadecimal |
| product.isActive | bool | Si se ofrece para vender |
| product.productCategoryUuid | string | Identificador de la categoría |
| product.productCategoryName | string | Nombre de la categoría |
| product.unitId | int | Unidad en que se vende |
| product.defaultCourseId | int | Tiempo de servicio por defecto |
| product.revenueAccountId | int Admite vacío | Cuenta de ingresos; vacío si usa la del restaurante |
| product.consumptionTaxCents | int | Impuesto al consumo por unidad, en centavos |
| product.menuCardStyle | string | Estilo de la tarjeta en la carta |
| product.taxRuleIds | array<int> | Reglas de impuesto del producto |
| product.barcodes | array<string> | Códigos de barras con que se reconoce al escanearlo |
| product.costCenterUuid | string Admite vacío | Centro de costos forzado del producto; vacío si sigue al del menú |
Ejemplo de request
curl -X POST https://restofy.pro/api/products/toggle-active \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"uuid": "string",
"isActive": 1
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-11-02T19:00:57Z
HTTP 200
Request
{
"uuid": "3662ba46-18be-11f1-9da2-b627060a1ebe",
"isActive": 0
}
Response
{
"success": true,
"message": "Estado actualizado",
"data": {
"product": {
"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,
"consumptionTaxCents": 0,
"prepTimeMinutes": 1,
"stockMin": "0.0000",
"sortKey": "0u",
"iconFontAwesome": "fa-solid fa-droplet",
"color": "#3b82f6",
"menuCardStyle": "auto",
"isActive": 0,
"productCategoryUuid": "d88163ca-a221-493d-9907-b7c6cafdc34b",
"productCategoryName": "Bebidas Frías",
"unitId": 3,
"defaultCourseId": 3,
"taxRuleIds": [],
"revenueAccountId": 13
}
}
}