Productos del menú
POST
Crear producto del catálogo
POST /api/products/create-product
Descripción
Registra un producto nuevo en el catálogo del restaurante, asignándole automáticamente un código único.
Detalles
Crea un producto vinculado a una categoría, unidad de medida y tiempo de servicio. El código identificador del producto se genera de forma automática a partir del prefijo de la categoría asignada, sin que el integrador deba enviarlo. La apariencia visual y el estado se aplican con valores por defecto si no se envían. Falla si ya existe un producto con el mismo nombre, o si la categoría, la unidad o el tiempo de servicio no existen o no están disponibles.
Permisos requeridos
catalog.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| name | string | Sí |
min:2
max:150
|
| productCategoryUuid | string | Sí |
min:36
max:36
|
| unitId | int | Sí |
min_value:1
|
| defaultCourseId | int | Sí |
min_value:1
|
| internalName | string | No |
max:150
|
| description | string | No |
max:2000
|
| kitchenDefaultNotes | string | No |
max:2000
|
| basePriceCents | int | No |
min_value:0
default:0
|
| consumptionTaxCents | int | No |
min_value:0
default:0
|
| prepTimeMinutes | int | No |
min_value:0
default:0
|
| stockMin | string | No |
decimal
min_value:0
default:0
|
| iconFontAwesome | string | No |
max:100
default:fa-solid fa-bowl-food
|
| color | string | No |
min:7
max:7
default:#FF4500
|
| isActive | int | No |
enum:0,1
default:1
|
| taxRuleIds | string | No |
array_int
|
| 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 |
|---|---|---|
| product | object | Producto creado |
| 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 | Í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 |
Ejemplo de request
curl -X POST https://restofy.pro/api/products/create-product \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"name": "string",
"productCategoryUuid": "string",
"unitId": 1,
"defaultCourseId": 1
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-10-09T02:12:12Z
HTTP 200
Request
{
"name": "Producto Test 6ac84d0b1d5cf",
"productCategoryUuid": "ef52bb1b-f81b-44f8-a33c-119ca3d557ce",
"unitId": 1,
"defaultCourseId": 5,
"basePriceCents": 1000,
"iconFontAwesome": "fa-solid fa-bowl-food",
"color": "#FF4500",
"isActive": 1
}
Response
{
"success": true,
"message": "Producto creado",
"data": {
"product": {
"uuid": "69305061-3d65-4230-8c66-87d536371293",
"name": "Producto Test 6ac84d0b1d5cf",
"sku": "SOP-003",
"internalName": null,
"description": null,
"kitchenDefaultNotes": null,
"basePriceCents": 1000,
"consumptionTaxCents": 0,
"prepTimeMinutes": 0,
"stockMin": "0.0000",
"sortKey": "h",
"iconFontAwesome": "fa-solid fa-bowl-food",
"color": "#FF4500",
"menuCardStyle": "auto",
"isActive": 1,
"productCategoryUuid": "ef52bb1b-f81b-44f8-a33c-119ca3d557ce",
"productCategoryName": "Sopas y Cremas",
"unitId": 1,
"defaultCourseId": 5,
"taxRuleIds": [],
"revenueAccountId": null
}
}
}