API utilizada al crear un canal ERP tipo plataforma en Marketplaces Hub
Para comenzar a desarrollar la integración de la plataforma ERP con Marketplaces Hub utilizando las nuevas API pasivas de Marketplaces Hub, es necesario entender que el flujo de procesamiento requiere que el canal ERP tenga un par de credenciales de acceso para utilizar las API. autenticado.
Este par de claves de autenticación se puede generar creando una nueva integración de Marketplaces Hub de tipo plataforma con el canal ERP.
Los entornos de producción y aprobación están divididos y se puede acceder a ellos a través de las siguientes URL:
Las solicitudes POST, PUT y DELETE tienen algunos encabezados útiles en su respuesta, que contienen el ID de la solicitud generada (Request-Id) y los límites de solicitud para cada punto final (X-RateLimit -Limit y X-RateLimit-Remaining). Si tiene problemas con una solicitud, simplemente informe al equipo de soporte del ID de la solicitud, ya que esto facilitará la obtención de los registros y reducirá el tiempo necesario para solucionar el problema.
Cache-Control: no-cache, private
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Request-Id: 1R17E20190510133646C1557506206412V9676
Las API de Marketplaces Hub tienen dos niveles de autenticación: autenticación de aplicaciones y autenticación de canal de integración (canal tipo plataforma ERP).
Todas las aplicaciones integradas tienen un token de identificación llamado AppToken que debe enviarse en el encabezado de todas las solicitudes, ya que sin él no es posible identificar la aplicación conectada y su conexión será denegada inmediatamente.
En producción, cada aplicación tiene un AppToken único; sin embargo, en la aprobación, todas las aplicaciones deben usar el AppToken de homologación, como se muestra en el siguiente ejemplo:
App-Token: homologacao
Content-Type: application/json
cache-control: no-cache
El segundo nivel de autenticación es el de integración, es decir, de la cuenta del vendedor que se desea solicitar.
La autenticación de integración se realiza mediante un token de acceso temporal, generado en la autenticación y que debe ser enviado en el encabezado de todas las solicitudes en el índice Autorización (excepto la solicitud de autenticación, donde solo se debe enviar el AppToken).
App-Token: homologacao
Content-Type: application/json
cache-control: no-cache
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm9tbmkud2Fwc3RvcmUuY29tLmJyXC8iLCJhdWQiOiJBcGkgZGUgVGVzdGUiLCJpYXQiOjE1NTc0MjgzMjcsIm5iZiI6MTU1NzQyODMyNywiZXhwIjoxNTU3NDMwMTI3LCJ0aWQiOiIwOWI4ZGI5YWYxNjhkMDRhMmE2OTBhNTQ1NmEyZWRmMSJ9.Gfvm1Z54pUXZhlNhafV1fEoOBiMGS_sku4o2a8CKWmY
En producción tenemos varios servicios de protección conectados (firewall, protección anti-DDoS, TLS siempre actualizado, entre otros) y todos estos servicios trabajan para garantizar la integridad del sistema (principalmente porque los datos que pasan por la plataforma es confidencial (números de tarjetas de datos, direcciones, etc.).
Para que su sistema no sea bloqueado por nuestros servicios de seguridad y pueda crear una comunicación estable con nuestras API de producción, es extremadamente importante que todas las solicitudes se envíen agentes de usuario válidos, todas las conexiones se realizan utilizando el protocolo HTTPS y que su sistema admite los certificados TLS/SSL más actualizados (use un servicio en línea como SSL Labs para comprobar qué certificado TLS/SSL es compatible con los servidores de producción).
Además, el uso de una IP fija en La producción de solicitudes también es muy importante, ya que nuestro equipo de infraestructura y seguridad puede crear reglas específicas para esta IP, lo que aumenta en gran medida la seguridad y reduce el riesgo de bloqueo.
En el entorno de aprobación, el riesgo de bloqueo por seguridad Los servicios son bajos, así que siempre desarrolle su aplicación enfocándose en los niveles máximos de seguridad que se requerirán en producción.
Recurso responsable de generar el token de autenticación de integración.
Para este recurso el único token que se debe enviar en el encabezado es el AppToken, ya que en este momento tienes aún no tendrá el token de integración.
Los datos enviados en el cuerpo (ApiKey y SecretKey) están relacionados con la cuenta de integración del Vendedor (cuenta de aprobación o producción).
Después de generar el token, tendrá una validez de 30 minutos y deberá enviarse en el encabezado Autorización de otras API.
Importante: Siempre que Se genera un nuevo token, el anterior será revocado y perderás el acceso inmediatamente.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 201 Created |
{
"apiKey": "1234A5678B9012C3456",
"secretKey":"3456D9012E5678F1234"
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| apiKey | String | Si | Clave pública de API de integración del vendedor |
| secretKey | String | Si | Clave privada de la API de integración del vendedor |
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm9tbmkud2Fwc3RvcmUuY29tLmJyXC8iLCJhdWQiOiJBcGkgZGUgVGVzdGUiLCJpYXQiOjE1NTc0NTc2OTYsIm5iZiI6MTU1NzQ1NzY5NiwiZXhwIjoxNTU3NDU5NDk2LCJ0aWQiOiI5MzRjZTY2ZGY5MDQ1YWNmMzY1MGIyZWEzNWUxYjMwMSJ9.Ii148QGob19NI2-fsMbqvMpmVFyGR3bkJjSbOxaCxmg"
}
| Campo | Tipo | Descripción |
|---|---|---|
| token | String | Token de acceso generado para las API |
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| Offset/Limit | Obligatorio el envío de los parámetros offset y limit en la URL de solicitud. Ejemplo de requisición: /v1/logistic/orders/{id}/shipment_labels?offset=0&limit=100 Valor máximo para el parámetro límite: 100 |
{
"etiquetas": [
{
"conteudo": "YXJxdWl2byB0ZXN0ZQ==",
"tipo": "pdf",
"canal": "string",
"idPedidoCanal": "123"
},
{
"conteudo": "YXJxdWl2byB0ZXN0ZQ==",
"tipo": "zpl",
"canal": "string",
"idPedidoCanal": "123"
},
{
"conteudo": "YXJxdWl2byB0ZXN0ZQ==",
"tipo": "png|jpg",
"canal": "string",
"idPedidoCanal": "123"
}
],
"info": {
"filtros": [],
"prev": "",
"self": "http://localhost/v1/logistic/orders/13127721/shipment_labels?offset=0&limit=100",
"next": "",
"offset": 0,
"limit": 100,
"exibindo": 0,
"total": 0
}
}
| Campo | Tipo | Descripción |
|---|---|---|
| etiquetas | Data Collection | Lista de etiquetas de pedido |
| conteudo | String | Contenido de la etiqueta convertido a base64 |
| tipo | String | Tipo de archivo antes de convertir a base64 |
| canal | String | Canal de Marketplace donde se generó el pedido |
| idPedidoCanal | Number | ID del pedido en el canal del mercado donde se generó |
| info | Object | Información sobre el listado (paginación, filtros, total de artículos, etc.) |
| filtros | Object (key/value) | Filtros aplicados a la URL |
| prev | String | Pagina anterior |
| self | String | Página actual |
| next | String | Página siguiente |
| offset | Number | Compensación solicitada |
| limit | Number | Límite solicitado |
| exibindo | Number | Número de registros que se muestran en la página actual |
| total | Number | Registros totales en todas las páginas. |
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| Limitar solicitudes por minuto | 10 |
{
"canais":[
{
"id":123,
"hash":"abc123",
"nome":"Canal A",
"ativo":true
},
{
"id":456,
"hash":"def456",
"nome":"Canal B",
"ativo":false
}
],
"info":{
"total":2
}
}
| Campo | Tipo | Descripción |
|---|---|---|
| canais | Data Collection | Canales conectados |
| id | Number | ID de canal en HUB |
| hash | String | Hash de canal en HUB |
| nome | String | Nombre dado al canal por el vendedor |
| ativo | Boolean | Define si el canal está activo en el HUB |
| info | Object | Información sobre cómo devolver la consulta |
| total | Number | Total de canales devueltos |
Recurso disponible para consultar el existencias de seguridad de productosEste recurso se puede utilizar para comprobar la cantidad de stock de seguridad disponible para los productos de tu tienda. Importante: Si el producto no dispone de stock de seguridad, no se devolverá
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| filtros | idCanalIntegracao: Filtrar la búsqueda de productos utilizando el ID del canal de integración Exemplo de requisição: /v1/erp/products/security-stock?idCanalIntegracao=16|22|708 sku: Filtrar la búsqueda de productos usando el sku Exemplo de requisição: /v1/erp/products/security-stock?sku=produto-teste|novo-produto |
| Limitar solicitudes por minuto | 40 |
| Offset/Limit | Obligatorio el envío de los parámetros offset y limit en la URL de solicitud. Ejemplo de requisición: /v1/erp/products/security-stock?offset=0&limit=100 Valor máximo para el parámetro límite: 100 |
{
"produtosEstoqueSeguranca": {
"Wapstore Marketplace": [
{
"idProduto": 4,
"skuProduto": "produto-2-tete-36",
"idCanalIntegracao": 459,
"qtdEstoqueSeguranca": 12
}
],
"Shopee": [
{
"idProduto": 9,
"skuProduto": "produto-teste-1",
"idCanalIntegracao": 708,
"qtdEstoqueSeguranca": 10
}
]
},
"info": {
"filtros": [],
"prev": "",
"self": "https://omni.wapstore.com.br/v1/erp/products/security-stock?offset=0&limit=5",
"next": "https://omni.wapstore.com.br/v1/erp/products/security-stock?offset=5&limit=5",
"offset": 0,
"limit": 2,
"exibindo": 2,
"total": 55
}
}
| Campo | Tipo | Descripción |
|---|---|---|
| produtosEstoqueSeguranca | Object | Lista de productos devueltos por la consulta |
| nomeCanalIntegracao | Data Collection | Nombre del canal devuelto por la consulta |
| idProduto | Number | ID de producto de plataforma |
| skuProduto | String | SKU del producto |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| qtdEstoqueSeguranca | Number | Cantidad de stock de seguridad |
| info | Object | Información sobre el resultado de la consulta |
| filtros | Array | Array de filtros utilizados en la consulta. |
| prev | String | Página anterior |
| self | String | Página actual |
| next | String | Página siguiente |
| offset | Number | Compensación solicitada |
| limit | Number | Límite solicitado |
| exibindo | Number | Número de registros que se muestran en la página actual |
| total | Number | Registros totales en todas las páginas |
Recurso responsable de cambiar el existencias de seguridad de un producto
Este recurso se puede utilizar para actualizar un existencias de seguridad existente o crear uno nuevo.
Importante: El producto debe estar registrado en el HUB
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
{
"idCanalIntegracao": 205,
"sku": "TESTE-ITEM02",
"estoqueSeguranca": 8
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| idCanalIntegracao | Number | Si | Integración de ID de canal en HUB Valor mínimo: 1 |
| sku | String | Si | SKU del producto Talla minima: 1 | Talla máxima: 255 |
| estoqueSeguranca | Number | Si | Cantidad de stock de seguridad Valor mínimo: 0 |
{
"ProdutoEstoqueSeguranca": [
{
"idProduto": 3,
"idAtributoSimples": 2,
"idCanalIntegracao": 207,
"idIntegracao": 3,
"estoqueSeguranca": 10,
"dataCadastro": "2024-02-15 20:28:35",
"dataAtualizacao": "2024-02-15 21:39:29"
},
{
"idProduto": 3,
"idAtributoSimples": 3,
"idCanalIntegracao": 207,
"idIntegracao": 3,
"estoqueSeguranca": 10,
"dataCadastro": "2024-02-15 20:28:35",
"dataAtualizacao": "2024-02-15 21:39:29"
},
{
"idProduto": 3,
"idAtributoSimples": 4,
"idCanalIntegracao": 207,
"idIntegracao": 3,
"estoqueSeguranca": 10,
"dataCadastro": "2024-02-15 20:28:35",
"dataAtualizacao": "2024-02-15 21:39:29"
}
]
}
| Campo | Tipo | Descripción |
|---|---|---|
| ProdutoEstoqueSeguranca | Data Collection | Listado de productos con stock de seguridad modificado/creado |
| idProduto | Number | ID del producto |
| idAtributoSimples | Number | ID de atributo simple |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| idIntegracao | Number | integración de identificación |
| estoqueSeguranca | Number | Cantidad de stock de seguridad |
| dataCadastro | String | Fecha de registro |
| dataAtualizacao | String | Fecha de actualización |
Recurso disponible para consultar productos con precios personalizados en el HUB.Esta funcionalidad se puede utilizar para consultar productos con precios personalizados en tu tienda, retornando precio "desde" y precio "por"Importante: Si el producto no tiene precio personalizado, no será devuelto
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| filtros | idCanalIntegracao: Filtrar la búsqueda de productos utilizando el ID del canal de integración Exemplo de requisição: /v1/erp/products/customized-prices?idCanalIntegracao=16|22|708 sku: Filtrar la búsqueda de productos a través del sku | Nivel de producto Exemplo de requisição: /v1/erp/products/customized-prices?sku=produto-teste|novo-produto |
| Limitar solicitudes por minuto | 40 |
| Offset/Limit | Obligatorio el envío de los parámetros offset y limit en la URL de solicitud. Ejemplo de requisición: /v1/erp/products/customized-prices?offset=0&limit=100 Valor máximo para el parámetro límite: 100 |
{
"produtosPrecoPersonalizado": {
"Dafiti": [
{
"idProduto": 77,
"skuProduto": "Teste",
"idCanalIntegracao": 177,
"precoDePersonalizado": "100,00",
"precoPorPersonalizado": "80,00"
}
],
"Mercado Livre": [
{
"idProduto": 58,
"skuProduto": "produto-teste",
"idCanalIntegracao": 177,
"precoDePersonalizado": "20,00",
"precoPorPersonalizado": "10,00"
}
]
},
"info": {
"filtros": [],
"prev": "",
"self": "https://omni.wapstore.com.br/v1/erp/products/customized-prices?offset=0&limit=2",
"next": "https://omni.wapstore.com.br/v1/erp/products/customized-prices?offset=2&limit=2",
"offset": "0",
"limit": "2",
"exibindo": 2,
"total": "14"
}
}
| Campo | Tipo | Descripción |
|---|---|---|
| produtosPrecoPersonalizado | Object | Objeto con devolución de canales y sus respectivos productos con precios personalizados |
| nomeCanalIntegracao | Data Collection | Propiedad dinámica que devuelve el nombre del canal. |
| idProduto | Number | ID de producto en HUB |
| skuProduto | String | SKU del producto en HUB |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| precoDePersonalizado | Number | Precio “desde” personalizado del producto |
| precoPorPersonalizado | Number | Precio "por" producto personalizado |
| info | Object | Información de paginación y filtros. |
| filtros | Array | Matriz de filtros utilizados en la consulta. |
| prev | String | Página anterior |
| self | String | Página actual |
| next | String | Página siguiente |
| offset | Number | Compensación solicitada |
| limit | Number | Límite solicitado |
| exibindo | Number | Número de registros que se muestran en la página actual |
| total | Number | Registros totales en todas las páginas. |
Recurso disponible para cambiar/crear precios personalizados para productos registrados en el HUB.
Con esta funcionalidad es posible que un mismo producto tenga diferentes precios por canal de integración. Esto se puede aplicar en ambos niveles: (Producto/Variación).
Importante: El producto debe estar registrado en el HUB.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| Limitar solicitudes por minuto | 60 |
{
"precos": [
{
"idCanalIntegracao": 1,
"skuProduto": "ABC123",
"precoDe": 25.50,
"precoPor": 20.00
},
{
"idCanalIntegracao": 2,
"skuProduto": "XYZ789",
"precoDe": 35.75,
"precoPor": 30.50
},
{
"idCanalIntegracao": 1,
"skuProduto": "DEF456",
"precoDe": 18.99,
"precoPor": 15.49
}
]
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| precos | Data Collection | Si | Lista de precios personalizada por Canal de Integración Talla minima: 1 | Talla máxima: 100 |
| idCanalIntegracao | Number | Si | Integración de ID de canal en HUB Valor mínimo: 1 |
| skuProduto | String | Si | SKU del producto Talla minima: 1 | Talla máxima: 250 |
| precoDe | Number | Si | Precio del producto 'desde' Valor mínimo: 0.01 | Valor máximo: 999999.99 |
| precoPor | Number | Si | Precio 'por' del producto Valor mínimo: 0.01 | Valor máximo: 999999.99 |
{
"resultados": [
{
"skuProduto": "ABC123",
"sucessos": [
{
"idCanalIntegracao": 1,
"precoDe": 25.50,
"precoPor": 20.00
},
{
"idCanalIntegracao": 2,
"precoDe": 35.75,
"precoPor": 30.50
}
],
"erros": []
},
{
"skuProduto": "XYZ789",
"sucessos": [],
"erros": [
{
"idCanalIntegracao": 1,
"mensagem": "Produto não encontrado"
}
]
},
{
"skuProduto": "DEF456",
"sucessos": [
{
"idCanalIntegracao": 1,
"precoDe": 18.99,
"precoPor": 15.49
}
],
"erros": []
}
]
}
| Campo | Tipo | Descripción |
|---|---|---|
| resultados | Data Collection | Resultados de procesamiento de precios personalizados |
| skuProduto | String | SKU del producto |
| sucessos | Data Collection | Precios personalizados creados/cambiados exitosamente |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| precoDe | Number | Precio del producto 'desde' |
| precoPor | Number | Precio 'por' del producto |
| erros | Data Collection | Errores que ocurrieron al crear/cambiar precios personalizados |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| mensagem | String | Información de error |
Recurso responsable de eliminar un precio personalizado.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 204 No Content |
| /v1/erp/products/customized-prices/{idCanalIntegracao}/{skuProduto} | Integración de ID de canal en HUB |
| /v1/erp/products/customized-prices/{idCanalIntegracao}/{skuProduto} | SKU del producto |
Recurso disponible para cambiar/crear precios personalizados para los anuncios del Hub que se publican en MercadoLivre.
Importante: El anuncio debe estar publicado en MercadoLibre.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| Limitar solicitudes por minuto | 60 |
{
"precos": [
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLB",
"skuProduto": "ABC123",
"precoDe": 25.50,
"precoPor": 20.00
},
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLP",
"skuProduto": "ABC123",
"precoDe": 35.75,
"precoPor": 30.50
},
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLF",
"skuProduto": "DEF456",
"precoDe": 18.99,
"precoPor": 15.49
}
]
}
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| precos | Data Collection | Si | Lista de precios personalizada para anuncios de MercadoLibre Talla minima: 1 | Talla máxima: 100 |
| idCanalIntegracao | Number | Si | ID de integración de canal en HUB Valor mínimo: 1 |
| prefixoCanalIntegracao | String | Si | Prefijo configurado para diferenciar tipos de anuncios Talla minima: 1 | Talla máxima: 10 |
| skuProduto | String | Si | SKU del producto Talla minima: 1 | Talla máxima: 250 |
| precoDe | Number | Si | Precio del producto 'desde' Valor mínimo: 0.01 | Valor máximo: 999999.99 |
| precoPor | Number | Si | Precio 'por' del producto Valor mínimo: 0.01 | Valor máximo: 999999.99 |
{
"resultados": [
{
"skuProduto": "ABC123",
"sucessos": [
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLB",
"codigoMlb": "MLB1999999999",
"precoDe": 25.50,
"precoPor": 20.00
},
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLP",
"codigoMlb": "MLB2999999999",
"precoDe": 35.75,
"precoPor": 30.50
}
],
"erros": []
},
{
"skuProduto": "DEF456",
"sucessos": [],
"erros": [
{
"idCanalIntegracao": 1,
"prefixoCanalIntegracao": "MLF",
"mensagem": "Não foi possível localizar anúncios Grátis para este SKU."
}
]
}
]
}
| Campo | Tipo | Descripción |
|---|---|---|
| resultados | Data Collection | Resultados de procesamiento de precios personalizados |
| skuProduto | String | SKU del producto |
| sucessos | Data Collection | Precios personalizados creados/cambiados exitosamente |
| idCanalIntegracao | Number | ID de integración de canal en HUB |
| prefixoCanalIntegracao | String | Prefijo para el cual la solicitud de personalización de precios fue exitosa |
| codigoMlb | String | Código MLB del anuncio al que se aplicó la personalización. |
| precoDe | Number | Precio del producto 'desde' |
| precoPor | Number | Precio 'por' del producto |
| erros | Data Collection | Errores que ocurrieron al crear/cambiar precios personalizados |
| idCanalIntegracao | Number | Integración de ID de canal en HUB |
| prefixoCanalIntegracao | String | Prefijo por el que hubo error al aplicar la personalización de precios |
| mensagem | String | Información de error |
Recurso responsable de eliminar un precio personalizado.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 204 No Content |
| /v1/erp/mercadolivre/items/customized-prices/{idCanalIntegracao}/{prefixoCanalIntegracao}/{skuProduto} | Integración de ID de canal en HUB |
| /v1/erp/mercadolivre/items/customized-prices/{idCanalIntegracao}/{prefixoCanalIntegracao}/{skuProduto} | Prefijo configurado para diferenciar tipos de anuncios |
| /v1/erp/mercadolivre/items/customized-prices/{idCanalIntegracao}/{prefixoCanalIntegracao}/{skuProduto} | SKU del producto |
Recurso responsable de listar los documentos fiscales (NF-e) vinculados a las operaciones de fulfillment de los canales conectados, ordenados por id ascendente.
Este recurso devuelve los datos principales de los documentos fiscales, incluyendo el XML completo. Para consultar un documento específico por su clave de acceso, utilice el recurso de consulta individual.
Importante: los parámetros dataEmissaoInicial y dataEmissaoFinal son obligatorios y deben estar en formato ISO-8601 completo (con hora y offset). Los parámetros idCanalIntegracao y tipoDocumento son opcionales — sin ellos, el listado devuelve documentos de todas las conexiones y todos los tipos.
Actualmente solo se admite NF-e. El campo status refleja el estado del documento en el vocabulario bruto del canal de origen (ej: authorized, canceled, denied).
Cuando una nota es cancelada, este recurso pasa a devolver dos registros para ella: la nota original (con status actualizado a canceled) y un segundo registro con tipoDocumento = evento-cancelamento, representando el evento SEFAZ de cancelación en sí (XML propio, protocolo propio en chaveAcesso). El campo documentosReferenciados del evento trae la clave de acceso de la nota original. Como el evento usa dataEmissao para registrar la fecha/hora de la propia cancelación (dhEvento), filtrar por dataEmissaoInicial/dataEmissaoFinal en esta misma ruta ya cubre tanto notas emitidas como cancelaciones ocurridas en el período, sin necesidad de un filtro de fecha separado — use tipoDocumento para restringir el listado a solo uno de los dos.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| filtros | dataEmissaoInicial: Inicio del período de emisión consultado (obligatorio, formato ISO-8601 completo, con hora y offset) Exemplo de requisição: /v1/erp/fiscal-documents?dataEmissaoInicial=2026-07-01T00:00:00-03:00 dataEmissaoFinal: Fin del período de emisión consultado (obligatorio, formato ISO-8601 completo, con hora y offset) Exemplo de requisição: /v1/erp/fiscal-documents?dataEmissaoFinal=2026-07-31T23:59:59-03:00 idCanalIntegracao: Filtra la búsqueda por una o más conexiones específicas del tenant, utilizando el ID del canal de integración Exemplo de requisição: /v1/erp/fiscal-documents?idCanalIntegracao=528|1560 tipoDocumento: Filtra la búsqueda por un tipo de documento específico: nfe o evento-cancelamento Exemplo de requisição: /v1/erp/fiscal-documents?tipoDocumento=evento-cancelamento |
| Offset/Limit | Obligatorio el envío de los parámetros offset y limit en la URL de solicitud. Ejemplo de requisición: /v1/erp/fiscal-documents?offset=0&limit=100 Valor máximo para el parámetro límite: 100 |
{
"documentosFiscais": [
{
"id": 3841,
"chaveAcesso": "31260910500685000199550020000297521589865141",
"tipoDocumento": "nfe",
"tipo": "SALE",
"canal": "mercadolivre",
"idPedido": 918273,
"status": "canceled",
"documentosReferenciados": null,
"dataEmissao": "2026-07-15 09:24:11",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nfeProc>...</nfeProc>"
},
{
"id": 3899,
"chaveAcesso": "131267782988513",
"tipoDocumento": "evento-cancelamento",
"tipo": "CANCELAMENTO",
"canal": "mercadolivre",
"idPedido": 918273,
"status": null,
"documentosReferenciados": ["31260910500685000199550020000297521589865141"],
"dataEmissao": "2026-07-15 09:41:18",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><procEventoNFe>...</procEventoNFe>"
},
{
"id": 3842,
"chaveAcesso": "31260910500685000199570010000010021589865223",
"tipoDocumento": "nfe",
"tipo": "INBOUND",
"canal": "magazineluiza",
"idPedido": null,
"status": "authorized",
"documentosReferenciados": null,
"dataEmissao": "2026-07-15 11:02:47",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nfeProc>...</nfeProc>"
}
],
"info": {
"filtros": {
"dataEmissaoInicial": "2026-07-01T00:00:00-03:00",
"dataEmissaoFinal": "2026-07-31T23:59:59-03:00"
},
"prev": "",
"self": "https://omni.wapstore.com.br/v1/erp/fiscal-documents?offset=0&limit=100&dataEmissaoInicial=2026-07-01T00:00:00-03:00&dataEmissaoFinal=2026-07-31T23:59:59-03:00",
"next": "",
"offset": 0,
"limit": 100,
"exibindo": 3,
"total": 3
}
}
| Campo | Tipo | Descripción |
|---|---|---|
| documentosFiscais | Data Collection | Lista de documentos fiscales devueltos |
| id | Number | ID del documento fiscal en el Hub |
| chaveAcesso | String | Clave de acceso de la NF-e (estándar SEFAZ, 44 dígitos). Para tipoDocumento = evento-cancelamento, este campo trae el protocolo del evento (nProt), la identidad única del evento |
| tipoDocumento | String | Tipo de documento: nfe (la nota en sí) o evento-cancelamento (evento SEFAZ de cancelación, documento separado que referencia la nota original en documentosReferenciados) |
| tipo | String | Tipo de operación en el vocabulario bruto del canal de origen, sin normalización (ej: SALE, INBOUND, NfeVenda). Para tipoDocumento = evento-cancelamento, este campo es siempre CANCELAMENTO |
| canal | String | Hash del marketplace de origen del documento (ej: mercadolivre, magazineluiza) |
| idPedido | Number | ID del pedido en el Hub (id interno). Presente solo cuando el documento está vinculado a un pedido |
| status | String | Estado del documento en el vocabulario bruto del canal de origen, sin normalización (ej: authorized, canceled, denied). No aplica a eventos (tipoDocumento = evento-cancelamento), que siempre vienen null |
| documentosReferenciados | Array | Claves de acceso de otros documentos del canal referenciados por este (ej: cadena fiscal de inbound/devolución simbólica/venta, o la nota original de un evento-cancelamento) |
| dataEmissao | String | Fecha/hora de emisión del documento fiscal. Para tipoDocumento = evento-cancelamento, es la fecha/hora del evento (dhEvento) - filtrar por este campo también cubre la cancelación, sin filtro separado Formato esperado: 2019-05-11 22:15:00 |
| xml | String | Contenido completo del XML. Para tipoDocumento = nfe, es el XML de la nota (nfeProc); para evento-cancelamento, es el XML del evento (procEventoNFe) |
| info | Object | Información sobre el listado (paginación, filtros, total de artículos, etc.) |
| filtros | Object (key/value) | Filtros aplicados a la URL |
| prev | String | Pagina anterior |
| self | String | Página actual |
| next | String | Página siguiente |
| offset | Number | Compensación solicitada |
| limit | Number | Límite solicitado |
| exibindo | Number | Número de registros que se muestran en la página actual |
| total | Number | Registros totales en todas las páginas. |
Recurso de consulta individual de documentos fiscales responsable de devolver todos los datos de un documento a partir de su clave de acceso (o, para un evento-cancelamento, del protocolo del evento).
Cuando el valor informado tiene 44 dígitos, se valida contra el dígito verificador oficial de la SEFAZ (módulo 11) antes de la consulta — esta validación no aplica a protocolos de evento, que tienen otro formato.
| Información del endpoint | |
|---|---|
| Ambiente | Sandbox / Producción |
| Estado de éxito | 200 Ok |
| /v1/erp/fiscal-documents/{chaveAcesso} | Clave de acceso de la NF-e (estándar SEFAZ, 44 dígitos) o, para un evento-cancelamento, el protocolo del evento (nProt) |
{
"id": 3841,
"chaveAcesso": "31260910500685000199550020000297521589865141",
"tipoDocumento": "nfe",
"tipo": "SALE",
"canal": "mercadolivre",
"idPedido": 918273,
"status": "authorized",
"documentosReferenciados": null,
"dataEmissao": "2026-07-15 09:24:11",
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><nfeProc>...</nfeProc>"
}
| Campo | Tipo | Descripción |
|---|---|---|
| id | Number | ID del documento fiscal en el Hub |
| chaveAcesso | String | Clave de acceso de la NF-e (estándar SEFAZ, 44 dígitos). Para tipoDocumento = evento-cancelamento, este campo trae el protocolo del evento (nProt), la identidad única del evento |
| tipoDocumento | String | Tipo de documento: nfe (la nota en sí) o evento-cancelamento (evento SEFAZ de cancelación, documento separado que referencia la nota original en documentosReferenciados) |
| tipo | String | Tipo de operación en el vocabulario bruto del canal de origen, sin normalización (ej: SALE, INBOUND, NfeVenda). Para tipoDocumento = evento-cancelamento, este campo es siempre CANCELAMENTO |
| canal | String | Hash del marketplace de origen del documento (ej: mercadolivre, magazineluiza) |
| idPedido | Number | ID del pedido en el Hub (id interno). Presente solo cuando el documento está vinculado a un pedido |
| status | String | Estado del documento en el vocabulario bruto del canal de origen, sin normalización (ej: authorized, canceled, denied). No aplica a eventos (tipoDocumento = evento-cancelamento), que siempre vienen null |
| documentosReferenciados | Array | Claves de acceso de otros documentos del canal referenciados por este (ej: cadena fiscal de inbound/devolución simbólica/venta, o la nota original de un evento-cancelamento) |
| dataEmissao | String | Fecha/hora de emisión del documento fiscal. Para tipoDocumento = evento-cancelamento, es la fecha/hora del evento (dhEvento) - filtrar por este campo también cubre la cancelación, sin filtro separado Formato esperado: 2019-05-11 22:15:00 |
| xml | String | Contenido completo del XML. Para tipoDocumento = nfe, es el XML de la nota (nfeProc); para evento-cancelamento, es el XML del evento (procEventoNFe) |
Todas las solicitudes que resulten en errores tendrán el mismo patrón de devolución. El código de estado HTTP devuelto indicará si el problema está relacionado con la solicitud (sitio-cliente - 4xx) o con el procesamiento (sitio-servidor - 5xx) y el mensaje describirá detalles adicionales sobre el problema.
{
"error": "Requisição rejeitada.",
"details": [
"O SKU 'TESTEAPISIMPLES' já está cadastrado"
]
}
| Campo | Tipo | Descripción |
|---|---|---|
| error | String | Información sobre el error presentado. |
| details | Array de strings | Detalles sobre el error presentado (devuelto en algunos casos de error) |