Gestión de Artículos
El recurso /products permite consultar, crear y actualizar los artículos y materiales simples en el catálogo de BaseGes ERP, así como consultar su stock por almacén.
Seguridad
Requiere autorización mediante cabecera HTTP:
X-Api-Key: {tu_clave_api}oAuthorization: Bearer {tu_token_jwt}
Resumen de Operaciones
| Método | Endpoint | Acción | Cuerpo de Petición | Código Éxito |
|---|---|---|---|---|
| GET | /products | Listado paginado de artículos con filtros | Ninguno | 200 OK |
| GET | /products/stock | Listado de artículos con stock por almacén | Ninguno | 200 OK |
| GET | /products/{code}/stock | Detalle de stock de un artículo concreto | Ninguno | 200 OK |
| GET | /products/{code} | Consulta detallada de un artículo | Ninguno | 200 OK |
| POST | /products | Alta de un nuevo artículo | JSON (CreateProductCommand) | 201 Created |
| PATCH | /products/{reference} | Modificación de datos y precios | JSON (UpdateProductCommand) | 200 OK |
1. Alta de un Nuevo Artículo (POST)
POST /products
Crea una nueva referencia en el maestro de artículos de BaseGes.
Parámetros del Payload JSON
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
reference | string | Sí | Código o referencia única del artículo (ej. "CBL-001-AZ"). |
shortDescription | string | Sí | Descripción corta o título principal del artículo. |
description | string | No | Descripción técnica ampliada o especificaciones. |
barcode | string | No | Código de barras (EAN-13, EAN-128, etc.). |
associatedReference | string | No | Referencia del fabricante o proveedor habitual. |
familyCode | string | No | Código de familia (ej. "01"). |
subfamilyCode | string | No | Código de subfamilia (ej. "0102"). |
groupCode | string | No | Código de grupo de artículos. |
taxCode | string | No | Código de tipo de IVA devengado (ej. "IVA21"). |
grossPurchasePrice | number | No | Precio bruto de compra de tarifa del proveedor. |
purchasePriceDiscount | number | No | Descuento habitual aplicado por el proveedor (%). |
marginPercent | number | No | Margen comercial aplicado sobre el coste (%). |
salePrice | number | No | Precio de venta base sin impuestos (PVP). |
salePriceWithTax | number | No | Precio de venta final con IVA incluido. |
Ejemplo de Petición POST
- JSON Body
- cURL
{
"reference": "CAB-FLEX-3G25",
"shortDescription": "Cable Manguera Flexible 3G 2.5 mm² Libre de Halógenos",
"description": "Cable de cobre pulido clase 5 según UNE-EN 60228. Aislamiento poliolefina ignifugada.",
"barcode": "8435123456789",
"familyCode": "02",
"subfamilyCode": "0201",
"taxCode": "IVA21",
"grossPurchasePrice": 1.20,
"purchasePriceDiscount": 15.0,
"marginPercent": 35.0,
"salePrice": 1.55,
"salePriceWithTax": 1.88
}
curl -X POST "http://localhost:5000/products" \
-H "Content-Type: application/json" \
-H "X-Api-Key: tu-api-key-secreta" \
-d '{
"reference": "CAB-FLEX-3G25",
"shortDescription": "Cable Manguera Flexible 3G 2.5 mm²",
"salePrice": 1.55
}'
Respuesta Exitosa (201 Created)
{
"reference": "CAB-FLEX-3G25",
"shortDescription": "Cable Manguera Flexible 3G 2.5 mm² Libre de Halógenos",
"salePrice": 1.55
}
2. Actualización de Artículo (PATCH)
PATCH /products/{reference}
Permite modificar campos puntuales del artículo (cambiar precio de venta, actualizar código de barras o reclasificar de familia):
PATCH /products/CAB-FLEX-3G25 HTTP/1.1
Host: localhost:5000
Content-Type: application/json
X-Api-Key: tu-api-key-secreta
{
"salePrice": 1.65,
"salePriceWithTax": 2.00,
"marginPercent": 38.0
}
3. Consulta y Búsqueda de Artículos (GET)
GET /products
Parámetros de Consulta (Query String)
| Parámetro | Tipo | Descripción |
|---|---|---|
page | integer | Número de página (predeterminado 1). |
pageSize | integer | Artículos por página (predeterminado 50, máx 100). |
Reference | string | Filtro por coincidencia en la referencia. |
ShortDescription | string | Filtro por texto en la descripción corta. |
Baracode | string | Búsqueda por código de barras o lector láser. |
FamilyCode | string | Filtrar solo artículos de una familia concreta. |
SubfamilyCode | string | Filtrar por subfamilia. |
GroupCode | string | Filtrar por grupo de artículos. |
search | string | Búsqueda parcial en referencia/código (Id / tArticulos1), descripción corta (ShortDescription / tArticulos2) y código de barras (Barcode / tArticulos7). |
GET /products?FamilyCode=02&search=Flexible&page=1&pageSize=20 HTTP/1.1
Host: localhost:5000
X-Api-Key: tu-api-key-secreta
4. Listado de Stock por Almacén (GET)
GET /products/stock
Devuelve una lista paginada de artículos con su stock actual (físico), reservado, futuro y disponible.
Parámetros de Consulta (Query String)
| Parámetro | Tipo | Descripción |
|---|---|---|
page | integer | Número de página (predeterminado 1). |
pageSize | integer | Artículos por página (predeterminado 50, máx 100). |
code | string | Búsqueda parcial por código o referencia del artículo. |
description | string | Búsqueda parcial por descripción corta o descripción completa. |
warehouseCode | string | Código de almacén para filtrar el stock (opcional). |
Comportamiento según Configuración de Empresa
- Con control de stock por almacén (
StockByWarehouse= true): Desglosa las existencias por cada almacén en la propiedadstockByWarehouse. Si se pasawarehouseCode, filtra únicamente para dicho almacén. - Sin control de stock por almacén (
StockByWarehouse= false): Devuelve el stock global del artículo registrado en el maestro de artículos, asignándolo al almacén predeterminado o global.
GET /products/stock?code=CAB&warehouseCode=01&page=1&pageSize=20 HTTP/1.1
Host: localhost:5000
X-Api-Key: tu-api-key-secreta
Ejemplo de Respuesta (200 OK)
{
"items": [
{
"reference": "CAB-FLEX-3G25",
"shortDescription": "Cable Manguera Flexible 3G 2.5 mm² Libre de Halógenos",
"barcode": "8435123456789",
"totalStock": 150.0,
"totalReserved": 20.0,
"totalFuture": 50.0,
"totalAvailable": 130.0,
"stockByWarehouse": [
{
"warehouseCode": "01",
"location": "A-01",
"stock": 100.0,
"reserved": 10.0,
"future": 50.0,
"available": 90.0
},
{
"warehouseCode": "02",
"location": "B-03",
"stock": 50.0,
"reserved": 10.0,
"future": 0.0,
"available": 40.0
}
]
}
],
"totalCount": 1,
"page": 1,
"pageSize": 20,
"isStockByWarehouse": true
}
5. Detalle de Stock de un Artículo Concreto (GET)
GET /products/{code}/stock
Devuelve la información detallada de stock de un artículo específico en todos los almacenes o en un almacén concreto.
Parámetros
| Parámetro | Ubicación | Tipo | Descripción |
|---|---|---|---|
code | Ruta | string | Código o referencia única del artículo. |
warehouseCode | Query | string | Código de almacén para filtrar el stock (opcional). |
GET /products/CAB-FLEX-3G25/stock?warehouseCode=01 HTTP/1.1
Host: localhost:5000
X-Api-Key: tu-api-key-secreta
Ejemplo de Respuesta (200 OK)
{
"reference": "CAB-FLEX-3G25",
"shortDescription": "Cable Manguera Flexible 3G 2.5 mm² Libre de Halógenos",
"description": "Cable de cobre pulido clase 5 según UNE-EN 60228.",
"barcode": "8435123456789",
"isStockByWarehouse": true,
"totalStock": 100.0,
"totalReserved": 10.0,
"totalFuture": 50.0,
"totalAvailable": 90.0,
"warehouses": [
{
"warehouseCode": "01",
"location": "A-01",
"stock": 100.0,
"reserved": 10.0,
"future": 50.0,
"available": 90.0
}
]
}