Uso de la API
Documentación de uso de la API de carga masiva de productos
Uso de la API
La Products Upload API permite realizar la carga masiva de productos mediante el endpoint:
POST /load-productsEste endpoint permite enviar hasta 3000 productos por solicitud en formato JSON.
Los productos son validados y enviados a procesamiento asíncrono dentro del sistema.
Endpoint
POST /load-productsURL Base
https://business-irdgco-products-upload.cloudintercorpretail-qa.pe/api/business-irdgco-products-upload/v1Autenticación
La API utiliza autenticación mediante Bearer Token (JWT).
Header requerido:
Authorization: Bearer <token>Headers requeridos
| Header | Descripción |
|---|---|
| Authorization | Token JWT de autenticación |
| Content-Type | application/json |
Límite de la API
La API permite:
Máximo 3000 productos por requestSi se supera este límite se devuelve:
400 - El número máximo de productos por carga es 3000Consideraciones importantes
- El procesamiento es asíncrono
- El response 200 NO garantiza persistencia final
- Los errores pueden ser parciales
Estructura del Request
El cuerpo de la solicitud debe contener:
products[]Lista de productos a procesar.
Ejemplo de referencia
{
"products": [
{
"productCode": "OE-2796064",
"skuCode": "2833000",
"eanCode": "2800028330008",
"description": "TT POD PMC RYANN VTT COL NEGRO XL",
"price": 39.95,
"length": 1,
"width": 1,
"height": 1,
"weight": 1,
"productType": "ST",
"dispatchType": "BTA",
"unitMeasurement": "UN",
"unitedNationsCode": "53102902",
"hierarchyCode": "OE-L0817",
"taxSale": "F",
"productPmmStatus": "5",
"dateUpdate": "2020-01-01 00:00:01",
"isEcommerce": "F",
"measurable": "F",
"conversionFactor": 1,
"barcodes": [
{
"productCode": "OE-2796064",
"eanCode": "2800028330008",
"indicator": "T"
}
],
"hierarchies": [
{
"hierarchyDescription": "POLOS",
"hierarchyCode": "OE-L0817",
"hierarchyParent": "OE-D096",
"hierarchyName": "LINEA",
"hierarchyLevel": 4
},
{
"hierarchyDescription": "DEPORTE HOMBRE O",
"hierarchyCode": "OE-D096",
"hierarchyParent": "OE-A11",
"hierarchyName": "DEPARTAMENTO",
"hierarchyLevel": 3
},
{
"hierarchyDescription": "TEXTIL DEPORTE",
"hierarchyCode": "OE-A11",
"hierarchyParent": "OE-T03",
"hierarchyName": "AREA",
"hierarchyLevel": 2
},
{
"hierarchyDescription": "DEPORTES",
"hierarchyCode": "OE-T03",
"hierarchyParent": "",
"hierarchyName": "DIVISION",
"hierarchyLevel": 1
}
],
"lstAttributes": [
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST182",
"attributeCode": "OE-ATTR606467",
"attributeDescription": "2025",
"productCode": "OE-2796064",
"keySubAttribute": "ANO",
"attributeDescriptionDetail": "2025"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST202",
"attributeCode": "OE-ATTR590891",
"attributeDescription": "VTT",
"productCode": "OE-2796064",
"keySubAttribute": "VENTANA",
"attributeDescriptionDetail": "SI"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST203",
"attributeCode": "OE-ATTR591063",
"attributeDescription": "SI",
"productCode": "OE-2796064",
"keySubAttribute": "WEB",
"attributeDescriptionDetail": "WWW"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST207",
"attributeCode": "OE-ATTR593844",
"attributeDescription": "LONG TERM",
"productCode": "OE-2796064",
"keySubAttribute": "CICLO DE VIDA",
"attributeDescriptionDetail": "LONG TERM"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST208",
"attributeCode": "OE-ATTR593848",
"attributeDescription": "BEST SELLER",
"productCode": "OE-2796064",
"keySubAttribute": "TIPO DE ROTACION",
"attributeDescriptionDetail": "BEST SELLER"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST215",
"attributeCode": "OE-ATTR597127",
"attributeDescription": "XXS",
"productCode": "OE-2796064",
"keySubAttribute": "TAMANO",
"attributeDescriptionDetail": "XXS"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST45",
"attributeCode": "OE-ATTR231",
"attributeDescription": "TODA TEMPORADA",
"productCode": "OE-2796064",
"keySubAttribute": "TEMPORADA",
"attributeDescriptionDetail": "TODA TEMPORADA"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST46",
"attributeCode": "OE-ATTR233",
"attributeDescription": "IMPORTADO",
"productCode": "OE-2796064",
"keySubAttribute": "PROCEDENCIA",
"attributeDescriptionDetail": "IMPORTADO"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST50",
"attributeCode": "OE-ATTR246",
"attributeDescription": "BASICO",
"productCode": "OE-2796064",
"keySubAttribute": "PIRAMIDE MIX",
"attributeDescriptionDetail": "BASICO"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST51",
"attributeCode": "OE-ATTR249",
"attributeDescription": "PROPIA",
"productCode": "OE-2796064",
"keySubAttribute": "TIPO DE NEGOCIACION",
"attributeDescriptionDetail": "PROPIA"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST52",
"attributeCode": "OE-ATTR252",
"attributeDescription": "PROPIA",
"productCode": "OE-2796064",
"keySubAttribute": "PROPIA O DE PROV",
"attributeDescriptionDetail": "PROPIA"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST53",
"attributeCode": "OE-ATTR3779",
"attributeDescription": "PODIUM",
"productCode": "OE-2796064",
"keySubAttribute": "NOMBRE DE MARCA",
"attributeDescriptionDetail": "PODIUM"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST83",
"attributeCode": "OE-ATTR533",
"attributeDescription": "S-M-L-XL",
"productCode": "OE-2796064",
"keySubAttribute": "TIPO DE CURVA TALLA",
"attributeDescriptionDetail": "S-M-L-XL"
}
],
"salesTax": 15.0
}
]
}Validaciones por campo
Campos obligatorios
Los siguientes campos son requeridos por producto:
- productCode
- skuCode
- eanCode
- description
- price
- length
- width
- height
- weight
- productType
- unitMeasurement
- unitedNationsCode
- hierarchyCode
- taxSale
- productPmmStatus
- dateUpdate
- isEcommerce
- measurable
- conversionFactor
- barcodes
- hierarchies
- lstAttributes
Descripción de los atributos del request
Definición de campos importantes
Identificadores
| Campo | Descripción |
|---|---|
| productCode | Código único del producto a nivel empresa |
| skuCode | Código SKU del producto |
| eanCode | Código de barras principal del producto |
Descripción
| Campo | Descripción |
|---|---|
| description | Descripción del producto |
- Tamaño máximo recomendado: 255 caracteres
Dimensiones del producto
| Campo | Descripción | Unidad |
|---|---|---|
| length | Largo del producto | cm |
| width | Ancho del producto | cm |
| height | Alto del producto | cm |
| weight | Peso del producto | kg |
Catálogos de negocio
productType
Tipo de producto definido por el sistema maestro.
Ejemplo:
STunitMeasurement
Unidad de medida del producto.
Ejemplos:
UN -> Unidad
KG -> Kilogramo
LT -> Litro
ML -> MililitrodispatchType
Tipo de despacho del producto.
Valores posibles:
NORMAL
EXPRESS
INTERNATIONALImpuestos
taxSale
T -> Afecto a impuesto
F -> No afectoEstado del producto
productPmmStatus
Ejemplo:
5 -> Producto activoConversión de unidades
conversionFactor
Ejemplo:
1 caja = 12 unidades
conversionFactor = 12Flags del producto
isEcommerce
T -> Habilitado en ecommerce
F -> No disponible en ecommercemeasurable
T -> Producto medible
F -> Producto unitarioObjetos relacionados
barcodes
Lista de códigos de barras asociados al producto. Permite registrar los diferentes códigos de identificación comercial que puede tener un producto.
| Campo | Descripción |
|---|---|
productCode | Código único del producto al que pertenece el código de barras. |
eanCode | Código de barras asociado al producto. |
indicator | Indicador que identifica el tipo o condición del código de barras. |
Ejemplo:
"barcodes": [
{
"productCode": "OE-2796064",
"eanCode": "2800028330008",
"indicator": "T"
}
]hierarchies
Lista de jerarquías a las que pertenece el producto. Permite representar la clasificación jerárquica del producto, desde niveles superiores como división y área hasta niveles más específicos como departamento y línea.
| Campo | Descripción |
|---|---|
hierarchyDescription | Descripción de la jerarquía. |
hierarchyCode | Código que identifica la jerarquía. |
hierarchyParent | Código de la jerarquía padre. Puede estar vacío cuando corresponde al nivel superior. |
hierarchyName | Nombre del nivel jerárquico. |
hierarchyLevel | Nivel que ocupa la jerarquía dentro de la estructura. |
Ejemplo:
"hierarchies": [
{
"hierarchyDescription": "POLOS",
"hierarchyCode": "OE-L0817",
"hierarchyParent": "OE-D096",
"hierarchyName": "LINEA",
"hierarchyLevel": 4
},
{
"hierarchyDescription": "DEPORTE HOMBRE O",
"hierarchyCode": "OE-D096",
"hierarchyParent": "OE-A11",
"hierarchyName": "DEPARTAMENTO",
"hierarchyLevel": 3
},
{
"hierarchyDescription": "TEXTIL DEPORTE",
"hierarchyCode": "OE-A11",
"hierarchyParent": "OE-T03",
"hierarchyName": "AREA",
"hierarchyLevel": 2
},
{
"hierarchyDescription": "DEPORTES",
"hierarchyCode": "OE-T03",
"hierarchyParent": "",
"hierarchyName": "DIVISION",
"hierarchyLevel": 1
}
]lstAttributes
Lista de atributos adicionales asociados al producto. Cada elemento representa un atributo y su correspondiente valor o detalle.
| Campo | Descripción |
|---|---|
attributeType | Tipo de atributo asociado al producto. |
parentAttributeCode | Código del atributo padre o tipo de atributo al que pertenece. |
attributeCode | Código que identifica el atributo específico. |
attributeDescription | Descripción o valor principal del atributo. |
productCode | Código del producto al que pertenece el atributo. |
keySubAttribute | Nombre o clave del subatributo. |
attributeDescriptionDetail | Valor o descripción detallada del atributo. |
Ejemplo:
"lstAttributes": [
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST182",
"attributeCode": "OE-ATTR606467",
"attributeDescription": "2025",
"productCode": "OE-2796064",
"keySubAttribute": "ANO",
"attributeDescriptionDetail": "2025"
},
{
"attributeType": "ATRIBUTO",
"parentAttributeCode": "OE-AST202",
"attributeCode": "OE-ATTR590891",
"attributeDescription": "VTT",
"productCode": "OE-2796064",
"keySubAttribute": "VENTANA",
"attributeDescriptionDetail": "SI"
}
]Códigos de respuesta
| Código | Descripción |
|---|---|
| 200 | Procesamiento correcto |
| 400 | Error en la solicitud |
| 401 | No autorizado |
| 403 | Prohibido |
| 500 | Error interno |
Flujo interno de procesamiento
- Recepción del request
- Validación de estructura JSON
- Validación de reglas de negocio
- Publicación en sistema de mensajería (PubSub)
- Procesamiento asíncrono
- Persistencia en sistemas downstream
- Generación de resultados
Ejemplo de flujo
El siguiente diagrama describe el flujo interno de procesamiento de la API:
Swagger
El archivo swagger de la API se puede consultar en el siguiente enlace: Swagger