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.
| 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
}
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"
}
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"
}
{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 |
{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 |
{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 |
{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 |
{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 |
{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 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"
}
| 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. |
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 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 |
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"
}
{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 |
allLogs HasMany ApiLogcompany BelongsTo CompanygoodCategories HasMany GoodCategorygoods HasMany Goodlogs HasMany ApiLog