Productos del menú
POST
Crear varios productos de una vez
POST /api/products/create-products
Descripción
Registra hasta 100 productos nuevos en una sola llamada, con su código único generado automáticamente.
Detalles
Valida todo el lote antes de guardar: si un solo producto tiene un problema no se crea ninguno y la respuesta indica la posición y el campo de cada error. Los productos quedan al final del catálogo y en todos los menús, salvo que se indiquen menús puntuales. Permite una prueba previa que valida sin guardar nada.
Permisos requeridos
catalog.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| dryRun | bool | No |
default:0
|
| menuIds | string | No |
array_int
|
| items | array | Sí | — |
| items[].ref | string | No |
max:60
|
| items[].name | string | Sí |
min:2
max:150
|
| items[].productCategoryUuid | string | Sí |
min:36
max:36
|
| items[].unitId | int | Sí |
min_value:1
|
| items[].defaultCourseId | int | Sí |
min_value:1
|
| items[].internalName | string | No |
max:150
|
| items[].description | string | No |
max:2000
|
| items[].kitchenDefaultNotes | string | No |
max:2000
|
| items[].basePriceCents | int | No |
min_value:0
default:0
|
| items[].consumptionTaxCents | int | No |
min_value:0
default:0
|
| items[].prepTimeMinutes | int | No |
min_value:0
default:0
|
| items[].stockMin | string | No |
decimal
min_value:0
default:0
|
| items[].iconFontAwesome | string | No |
max:100
default:fa-solid fa-bowl-food
|
| items[].color | string | No |
min:7
max:7
default:#FF4500
|
| items[].isActive | int | No |
enum:0,1
default:1
|
| items[].taxRuleIds | string | No |
array_int
|
| items[].revenueAccountId | int | No |
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 Admite vacío | Identificador del producto; vacío en una prueba de alta |
Ejemplo de request
curl -X POST https://restofy.pro/api/products/create-products \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"items": [
{
"name": "string",
"productCategoryUuid": "string",
"unitId": 1,
"defaultCourseId": 1
}
]
}'
Los valores son demo: reemplázalos por datos reales del negocio.