Una sección de merchandising del catálogo de una Company que agrupa productos para
destacarlos en la tienda. type es custom (o promos).
enabled la activa; in_order fija su posición; is_featured la marca como destacada. La
disponibilidad se acota por franja horaria (hour_from–hour_to; si hour_to es menor,
cruza la medianoche), por rango de fechas (date_from–date_to, opcional) y por días de la
semana (days, bitmask day_sunday..day_saturday; 0 = todos los días).
Los productos se asocian por el pivote good_section_associated, que lleva su propio
in_order.
| Atributo | Tipo | Descripción |
|---|---|---|
id |
int |
|
name |
string |
Nombre de la sección |
type |
string |
Tipo de sección: custom o promos |
enabled |
bool |
Si la sección está activa |
in_order |
int |
Posición de la sección en la tienda |
is_featured |
bool |
Si la sección se muestra destacada |
created_at |
datetime\|null |
|
updated_at |
datetime\|null |
|
company_id |
int |
{@link Company} dueña de la sección |
hour_from |
string |
Hora de inicio de disponibilidad (HH:MM) |
hour_to |
string |
Hora de fin de disponibilidad (HH:MM); si es menor que hour_from, cruza la medianoche |
date_from |
string\|null |
Fecha de inicio del rango de vigencia (opcional) |
date_to |
string\|null |
Fecha de fin del rango de vigencia (opcional) |
days |
int |
Bitmask de días de la semana en que aplica (0 = todos) |
day_sunday |
bool |
BitMask (({@link self::days} & 0x1) !== 0) |
day_monday |
bool |
BitMask (({@link self::days} & 0x2) !== 0) |
day_tuesday |
bool |
BitMask (({@link self::days} & 0x4) !== 0) |
day_wednesday |
bool |
BitMask (({@link self::days} & 0x8) !== 0) |
day_thursday |
bool |
BitMask (({@link self::days} & 0x10) !== 0) |
day_friday |
bool |
BitMask (({@link self::days} & 0x20) !== 0) |
day_saturday |
bool |
BitMask (({@link self::days} & 0x40) !== 0) |
allLogs |
ApiLog> |
|
branchGoods |
BranchGood> |
Productos de sucursal de la sección ({@link BranchGood}) |
goods |
Good> |
Productos de la sección ({@link Good}), ordenados por el pivote |
logs |
ApiLog> |
{
"id": 1,
"name": "Celebra Navidad",
"type": "custom",
"enabled": false,
"in_order": 1,
"is_featured": false,
"created_at": "2022-08-31 18:10:57",
"updated_at": "2025-08-11 15:40:26",
"company_id": 116,
"hour_from": "00:00",
"hour_to": "23:59",
"date_from": null,
"date_to": null,
"days": 0,
"day_sunday": false,
"day_monday": false,
"day_tuesday": false,
"day_wednesday": false,
"day_thursday": false,
"day_friday": false,
"day_saturday": false
}
Crear sección de catálogo
Crea un GoodSection para la company (nombre, tipo, programación de horario/fechas/días y orden).
| Método | URI | Cabeceras |
|---|---|---|
| POST | /companies/{companyId}/good-sections |
Authorization |
{
"name": "required|string|max:64",
"type": "string|in:custom",
"in_order": "integer|min:0",
"enabled": "boolean",
"is_featured": "boolean",
"good_ids": [
"integer|min:1"
],
"hour_from": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"hour_to": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"date_from": "sometimes|nullable|date",
"date_to": "sometimes|nullable|date|after:date_from",
"tz": {
"string": true,
"regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"day_sunday": "nullable|boolean",
"day_monday": "nullable|boolean",
"day_tuesday": "nullable|boolean",
"day_wednesday": "nullable|boolean",
"day_thursday": "nullable|boolean",
"day_friday": "nullable|boolean",
"day_saturday": "nullable|boolean"
}
{info} Soporta: Paginación Filters Carga dinámica
Listar secciones de catálogo
Devuelve los GoodSection de la company, ordenados por in_order.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/good-sections |
N/A |
{info} Soporta: Carga dinámica
Mostrar sección de catálogo
Devuelve el GoodSection por su id, con sus productos.
| Método | URI | Cabeceras |
|---|---|---|
| GET | /companies/{companyId}/good-sections/{goodSectionId} |
N/A |
Actualizar sección de catálogo
Modifica el GoodSection: nombre, enabled, in_order, is_featured y
su programación (hour_from/hour_to, date_from/date_to, days).
| Método | URI | Cabeceras |
|---|---|---|
| PATCH | /companies/{companyId}/good-sections/{goodSectionId} |
Authorization |
{
"name": "string|max:64",
"type": "string|in:custom",
"in_order": "integer|min:0",
"is_featured": "boolean",
"enabled": "boolean",
"good_ids": [
"integer|min:1"
],
"hour_from": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"hour_to": {
"string": true,
"regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"date_from": "sometimes|nullable|date",
"date_to": "sometimes|nullable|date|after:date_from",
"tz": {
"string": true,
"regex": "/^[\+\-]([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
},
"day_sunday": "nullable|boolean",
"day_monday": "nullable|boolean",
"day_tuesday": "nullable|boolean",
"day_wednesday": "nullable|boolean",
"day_thursday": "nullable|boolean",
"day_friday": "nullable|boolean",
"day_saturday": "nullable|boolean"
}
Eliminar sección de catálogo
Borra el GoodSection y sus asociaciones de productos.
| Método | URI | Cabeceras |
|---|---|---|
| DELETE | /companies/{companyId}/good-sections/{goodSectionId} |
Authorization |
allLogs HasMany ApiLogbranchGoods HasMany BranchGoodgoods HasMany Goodlogs HasMany ApiLog