Restofy Docs
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.