Productos del menú
POST
Guardar recetas privadas de varios productos
POST /api/products/set-product-private-recipes
Descripción
Crea o reemplaza la receta privada de hasta 100 productos en una sola llamada.
Detalles
Cada producto recibe su receta propia con sus ingredientes: si ya tenía una, se reemplaza completa; si no, se crea. La receta se descuenta una vez por cada venta del producto en todos sus menús. Valida todo el lote antes de guardar: si uno falla no se guarda ninguno y la respuesta indica la posición y el campo de cada error.
Permisos requeridos
catalog.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| dryRun | bool | No |
default:0
|
| items | array | Sí | — |
| items[].ref | string | No |
max:60
|
| items[].productUuid | string | Sí |
min:36
max:36
|
| items[].name | string | Sí |
min:1
max:150
|
| items[].internalName | string | No |
max:150
|
| items[].description | string | No |
max:2000
|
| items[].quantity | string | Sí |
decimal
min_value:0
|
| items[].unitId | int | Sí |
min_value:1
|
| items[].lines | array | Sí | — |
| items[].lines[].inventoryItemId | int | Sí |
min_value:1
|
| items[].lines[].quantity | string | Sí |
decimal
min_value:0
|
| items[].lines[].unitId | int | Sí |
min_value:1
|
Respuesta
Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.
| Campo | Tipo | Descripción |
|---|---|---|
| dryRun | bool | Si fue una prueba que validó sin guardar nada |
| items | array | Productos del lote, en el mismo orden en que se enviaron |
| items[].index | int | Posición del producto en el lote, desde 0 |
| items[].ref | string Admite vacío | Referencia propia que se envió con el producto |
| items[].productUuid | string | Identificador del producto |
| items[].recipeId | int Admite vacío | Identificador de la receta privada; vacío en una prueba |
Ejemplo de request
curl -X POST https://restofy.pro/api/products/set-product-private-recipes \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"items": [
{
"productUuid": "string",
"name": "string",
"quantity": "string",
"unitId": 1,
"lines": [
{
"inventoryItemId": 1,
"quantity": "string",
"unitId": 1
}
]
}
]
}'
Los valores son demo: reemplázalos por datos reales del negocio.