GoodSection


Una sección de merchandising del catálogo de una Company que agrupa productos para destacarlos en la tienda. type es custom (o promos).

Programación

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.

Estructura de Datos

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
}

Endpoints

Insertar GoodSection

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"
}

Listar GoodSection

{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

Mostrar GoodSection

{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 GoodSection

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 GoodSection

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

Relaciones