Recetas de productos
POST
Crear varias recetas de una vez
POST /api/recipes/create-recipes
Descripción
Registra hasta 100 recetas nuevas en una sola llamada, cada una con sus ingredientes y sub-recetas.
Detalles
Valida todo el lote antes de guardar: si una sola receta o uno de sus componentes tiene un problema no se crea nada y la respuesta indica la posición y el campo de cada error. Cada receta lleva al menos un ingrediente o una sub-receta, y cada ingrediente usa una unidad de su misma medida base. Las recetas nacen activas y permite una prueba previa que valida sin guardar nada.
Permisos requeridos
catalog.module
recipes.module
El usuario solo necesita uno de los permisos listados.
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| dryRun | bool | No |
default:0
|
| items | array | Sí | — |
| items[].ref | string | No |
max:60
|
| 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
|
| items[].subRecipes | array | No | — |
| items[].subRecipes[].subRecipeId | int | Sí |
min_value:1
|
| items[].subRecipes[].quantity | string | Sí |
decimal
min_value:0
|
Ejemplo de request
curl -X POST https://restofy.pro/api/recipes/create-recipes \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"items": [
{
"name": "string",
"quantity": "string",
"unitId": 1,
"lines": [
{
"inventoryItemId": 1,
"quantity": "string",
"unitId": 1
}
]
}
]
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-11-02T19:00:57Z
HTTP 200
Request
{
"items": [
{
"name": "Hamburguesa clásica 6ae8dda932641",
"quantity": 1,
"unitId": 3,
"lines": [
{
"inventoryItemId": 24,
"quantity": 0.2,
"unitId": 3
}
],
"ref": "hamburguesa"
},
{
"name": "Hamburguesa clásica 6ae8dda932646",
"quantity": 1,
"unitId": 3,
"lines": [
{
"inventoryItemId": 24,
"quantity": 0.2,
"unitId": 3
}
],
"ref": "lasana",
"subRecipes": [
{
"subRecipeId": 1,
"quantity": 0.25
}
]
}
]
}
Response
{
"success": true,
"message": "Recetas creadas",
"data": {
"dryRun": false,
"items": [
{
"index": 0,
"ref": "hamburguesa",
"recipeId": 6,
"recipeUuid": "2f29ca3b-7f9e-4d48-a0b2-a56a327ed633"
},
{
"index": 1,
"ref": "lasana",
"recipeId": 7,
"recipeUuid": "62717051-fdf1-473a-b8f8-dbb6d4205786"
}
]
}
}