Category


Representa a una Categoría de Productos de una Company. Una Category puede ser asociada a uno o varios Goods. Los registros de esta entidad son mostradas a los compradores como un menú o catálogo; es decir, los Goods que no estén asociados a ninguna Category no serán listados a los compradores.

Estructura de Datos

Atributo Tipo Descripción
id int
name string Nombre de la categoría.
picture_url string URL de la imagen de la categoría; si no se define, se usa la de su primer producto o una por defecto.
pinned bool true si la categoría se fija arriba del catálogo.
in_order int Posición de la categoría en el catálogo.
created_at datetime\|null Fecha de creación.
updated_at datetime\|null Fecha de última modificación.
company_id int Compañía dueña de la categoría (oculto en la respuesta).
type int Bitmask de tipo: 0x1 categoría normal, 0x2 categoría de tipo lista.
visible bool true si la categoría se muestra a los compradores.
branch_group_id int\|null Grupo de comercios al que pertenece la categoría; null si es de toda la compañía.
allLogs ApiLog> Registros de auditoría de la API, incluidos los internos.
company Company Compañía dueña de la categoría.
goodCategories GoodCategory> Asociaciones de productos a la categoría, ordenadas por in_order.
goods Good> Productos de la categoría.
logs ApiLog> Registros de auditoría de la API visibles.
resources UploadedResource> Archivos subidos asociados a la categoría.
{
    "id": 46,
    "name": "Comida",
    "picture_url": "http://127.0.0.1:8000/storage/static/default/product_category_logo.png",
    "pinned": true,
    "in_order": 65535,
    "created_at": "2020-04-21 02:43:22",
    "updated_at": "2024-10-27 10:11:58",
    "type": 1,
    "visible": true,
    "branch_group_id": 42
}

Endpoints

Insertar Category

Crear una categoría de productos

Crea una Category (name, type, visible, pinned, in_order).

Método URI Cabeceras
POST /companies/{companyId}/categories Authorization
{
    "name": "required|string|max:64",
    "type": "integer|min:1",
    "visible": "boolean",
    "pinned": "boolean",
    "in_order": "integer"
}

Insertar Category de BranchGroup

Crear una categoría en un grupo de comercios

Crea una Category acotada al grupo de comercios indicado (branch_group_id).

Método URI Cabeceras
POST /companies/{companyId}/branch-groups/{branchGroupId}/categories Authorization
{
    "name": "required|string|max:64",
    "type": "integer|min:1",
    "visible": "boolean",
    "pinned": "boolean",
    "in_order": "integer"
}

Listar Category

{info} Soporta: Paginación Filters Carga dinámica

Listar categorías de productos

Devuelve las Category de la compañía, paginadas.

Método URI Cabeceras
GET /companies/{companyId}/categories N/A

Listar Category de Good

{info} Soporta: Paginación Filters Carga dinámica

Listar las categorías de un producto

Devuelve las Category a las que está asignado el producto indicado.

Método URI Cabeceras
GET /companies/{companyId}/goods/{goodId}/categories N/A

Listar las categorías de una sucursal

{info} Soporta: Paginación Filters Carga dinámica

Devuelve las Category con productos disponibles en la sucursal indicada (para armar el catálogo que ve el comprador).

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/categories/all N/A

Listar las categorías de una sucursal

{info} Soporta: Paginación Filters Carga dinámica

Devuelve las Category con productos disponibles en la sucursal indicada (para armar el catálogo que ve el comprador).

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/categories/all N/A

Listar Category de BranchGroup

{info} Soporta: Paginación Filters Carga dinámica

Listar las categorías de un grupo de comercios

Devuelve las Category del grupo de comercios indicado.

Método URI Cabeceras
GET /companies/{companyId}/branch-groups/{branchGroupId}/categories N/A

Mostrar Category

{info} Soporta: Carga dinámica

Ver una categoría de productos

Devuelve la Category indicada.

Método URI Cabeceras
GET /companies/{companyId}/categories/{categoryId} N/A

Actualizar Category

Actualizar una categoría de productos

Modifica la Category indicada.

Método URI Cabeceras
PATCH /companies/{companyId}/categories/{categoryId} Authorization
{
    "name": "string|max:64",
    "type": "integer|min:1",
    "visible": "boolean",
    "pinned": "boolean",
    "in_order": "integer"
}

Errores de negocio

Código HTTP Cuándo ocurre
EA200 400 No se puede cambiar la categoría a tipo lista porque tiene productos que no son de tipo lista.

Sincronizar Category

Sincronizar Category de Good

Asignar las categorías de un producto

Reemplaza el conjunto de Category del producto por el enviado (con su in_order).

Método URI Cabeceras
POST /companies/{companyId}/goods/{goodId}/categories Authorization
[
    "integer"
]

Eliminar Category

Eliminar una categoría de productos

Borra la Category indicada; sus productos dejan de listarse si no quedan en otra categoría.

Método URI Cabeceras
DELETE /companies/{companyId}/categories/{categoryId} Authorization

Acciones de Category

Subir la imagen de una categoría de productos

Guarda el archivo como picture_url de la Category.

Método URI Cabeceras
POST /companies/{companyId}/categories/{categoryId}/upload-picture Authorization
{
    "image": "required|image|mimes:jpeg,png|max:2048"
}

Previsualizar las categorías de una sucursal

{info} Soporta: Paginación Filters Carga dinámica

Igual que el listado de categorías de la sucursal pero sin ocultar las que no tienen productos disponibles (vista de administración).

Método URI Cabeceras
GET /companies/{companyId}/branches/{branchId}/categories/preview N/A

Relaciones