Integrações WMS X - Sistemas Terceiros
O Gestão de Armazenagem | WMS X é uma solução completa projetada para gerenciar armazéns e otimizar processos logísticos, integrando-se de forma eficiente com os sistemas de TI de clientes e parceiros por meio de métodos que garantem a troca precisa de informações. Sua jornada operacional abrange desde o recebimento de mercadorias até a expedição e controle de estoque, com pontos de integração padrão, em cada etapa para facilitar a comunicação com sistemas como como WMS, TMS, YMS, ERP e OMS. E ao utilizar mais de um sistema, é comum que em alguns momentos do fluxo operacional, ocorra a necessidade de comunicação entre esses sistemas, onde entram as integrações.
Usabilidade e Práticas Recomendadas
- Valide os dados antes do envio: verifique os campos obrigatórios e formatos para evitar falhas na integração.
- Monitore as respostas: assegure que o seu sistema trate as respostas do WMS X para capturar erros e atualizações de status.
- Automatize os fluxos críticos: sempre que possível, automatize integrações para garantir agilidade e minimizar intervenções manuais.
Antes de verificar quais são a APIs de importação e exportação, você já poderá acessar o menu de Integração do WMS X e verificar a tela de Gestão das Integrações e Conector de Integração.
Agora, veja abaixo nossas APIs de importação e exportação:
As APIs de importação do WMS X, utiliza endpoints públicos de integração, o Hub. Abaixo, detalhamos a forma de integração, entenda:
O Hub é um padrão de endpoints unificados e síncronos, para as integrações do WMS X. Aqui os endpoints não são separados por tipo de entidade e sim um único endpoint para envio de qualquer tipo de dado. Garante melhor rastreabilidade, clareza, previsibilidade para os integradores e melhor monitoramento das integrações realizadas, por meio dos log gerados no Gestão de Armazenagem | WMS X.
São passados dois campos apenas, o nameque seria qual o tipo de integração a ser considerada e o payloadcom os dados de entrada.
Exemplo:
- Como era antes: URLs distintas como /api_publica/wmsx_fnd_product/ , /api_privada/wmsx_shipment_general/ entre outros.
- Como ficam agora: PUT /hub/apis/integration/outbound_document
Sendo assim, os endpoints públicos são:
- Para consultas do status da execução, utilize: GET /hub/apis/pendency/{id}
- status: pode assumir os seguintes valores:
- PENDING: Aguardando processamento
- ACCEPTD: Processado com sucesso
- FAIL: Ocorreu uma falha
- OVERFAIL: Ocorreu várias falhas, não será feita novas tentativas
- status: pode assumir os seguintes valores:
- Para integração específica com base no ID informado, utilize: PUT /hub/apis/integration/{id}
- Para retornar as integrações registradas no hub (somente quando aplicável), utilize: GET /hub/apis/integration
- Para cadastro de novo sistema extorno no WMS X: /apis/integration/##
Todas as chamadas exigem autenticação com token no cabeçalho HTTP
| Código | Descrição |
| 200 | Sucesso |
| 401 | Credenciais inválidas |
| 400+ | Erros de validação ou internos |
Essa primitiva deve ser agendada de tempos em tempos para o processamento das falhas. Onde, os critérios de elegibilidade são: situação de falha e número de tentativas menor que cinco.As execuções de reprocessamento irão obedecer o seguinte regra:
- Segunda tentativa: 1 minuto após a tentativa anterior.
- Terceira tentativa: 15 minutos após a tentativa anterior.
- Quarta tentativa: 1 hora após a tentativa anterior.
- Quinta tentativa: 12 horas após a tentativa anterior.
input:
{
}
O agendador é realizado pela menu de tecnologia, veja manual completo do Agendamento.
Limpa pendencias sincronizadas antigas da base de dados. Por default a limpeza sera realizada de 15/15 dias, caso não seja configurado no serviço.
input:
{ }
Algumas informações importantes para quando for realizado uma importar um documento de expedição, caso sejam preenchidos os dados do consignee:
- Será cadastrada uma especialização para ele
- O issuer será localizado pelo código de integração da especialização de depositante
- O depositante será localizado pelo código de integração da especialização de depositante
- O consignee quando existir, será localizado pelo código de integração da especialização do cliente
- Em notas de entrada o fornecedor será localizado pelo código de integração da especialização de fornecedor
Agora, abaixo, listamos de forma simples os eventos, veja:
| Evento | Solução saída > Solução que recebe | Observações | API |
| Importação de Pessoas | ERP > WMS X | Cadastro de pessoas, tais como fornecedores e transportadoras |
PUT /hub/apis/integration/person |
| Importação de Produtos | ERP > WMS X | Cadastro de dados básicos, dados logísticos e embalagens/ normas de paletização antes de qualquer primeiro recebimento do item |
PUT /hub/apis/integration/product |
| Importação de Documentos de Entrada | ERP > WMS X | Dados do documento de entrada, como fornecedor, número do pedido e produtos previstos |
PUT /hub/apis/integration/receiving_document |
| Documentos de Separação e Expedição | ERP > WMS X | Envio de ordens de separação (pedidos, notas) com dados completos do destinatário, número do pedido ou nota fiscal e itens a serem processados |
PUT /hub/apis/integration/outbound_document |
| Faturamento | ERP > WMS X | Ao realizar o faturamento da ordem atendida, o ERP deve comunicar os dados do faturamento para o WMS X e associar as informações à ordem de separação e prosseguir com a expedição |
PUT /hub/apis/integration/outbound_authorization |
Agora, entenda cada uma das integrações de importação forma mais detalhada:
Atenção! Na listagem dos campos, alguns estão sinalizados com ?, indicando que são os campos não obrigatórios, desta forma, os campo que não possuem essa sinalização são os campos obrigatórios.
Exemplo: string = obrigatório / string? = não obrigatório
- Objetivo: em uma operação de armazenagem, esse cadastro de entidades é crucial para a emissão dos documentos de entrada ou saída, pois trata das pessoas físicas ou jurídicas disponíveis para constar como Emitente, Destinatário, Entrega e Transportador dos pedidos e notas fiscais.
- Quando usar: Durante o setup inicial ou ao adicionar novas entidades que interagem com o armazém.
- Exemplo de uso: Recebimento de novos fornecedores: O sistema de ERP envia os dados de um novo fornecedor que será utilizado em futuras ordens de compra.
- Benefícios:
- Simplifica a atualização de cadastros em massa.
- Garante consistência nos dados de parceiros e clientes.
- Requisitos:
- Cadastro do client_id via portal de APIs da Senior.
- Token de autenticação válido.
- Link da API: PUT https://api.senior.com.br/wmsx_int/hub/apis/integration/person
É obrigatório informar os seguintes headers:
| Header | Obrigatório | Descrição |
| authorization | ✅ | Token Bearer de acesso |
| client_id | ✅ |
Identificador da aplicação cliente, obtido no portal de APIs da Senior |
Detalhamento dos campos:
"payload": {
"code": "P001",
"name": "Transportadora São João Ltda",
"tradingName": "Trans São João",
"legalPerson": true,
"national": true,
"documentNumber": "12345678000199",
"personSpecialization": "CARRIER",
"address": {
"address": "Rua das Oliveiras",
"address2": "Bloco B - Sala 10",
"number": "123",
"postalCode": "88000000",
"neighborhood": "Centro",
"city": "Florianópolis",
"state": "SC",
"country": "BR"
}
}
}
| Campo | Tipo | Descrição |
| code | string | Código de integração da Pessoa |
| name | string |
Nome da Pessoa |
| tradingName | string? | Nome Fantasia |
| legalPerson | boolean? (default: true) | Indica que é uma pessoa jurídica |
| national | boolean? (default: true) | Indica se a pessoa atua em mercado nacional |
| documentNumber | string? | Documento - Ex: CNPJ / CPF / Passaporte |
| personSpecialization | personSpecialization (apresentação de um enumeração) | Especializações da pessoa: cliente, fornecedor ou transportadora (CARRIER/VENDOR/CUSTOMER) |
| address.address | string | Rua do Endereço |
| address.address2 | string? | Complemento do Endereço |
| address.number | string (60)? | Número do Endereço |
| address.postalCode | string? | Código Postal |
| address.neighborhood | string (75)? | Bairro |
| address.city | string? | Cidade |
| address.state | string? | Estado |
| address.country | string? | País |
"id": "83670822-2dc9-4028-86e1-f139d024a625",
"statusUrl": "/apis/pendency/83670822-2dc9-4028-86e1-f139d024a625"
}
| Campo | Tipo | Descrição |
| id | string | Identificador único da operação de importação |
| statusUrl | string |
Caminho relativo para consultar o status ou pendências |
- Objetivo: Este é outro cadastro base de uma operação logística, onde é dado conhecimento ao WMS de quais serão os produtos a serem armazenados no armazém em questão. Aqui será possível realizar o cadastro inicial de Produtos e Embalagens, sendo possível depois pelo WMS complementar com informações logísticas, garantindo a paridade cadastral de produtos entre o WMS X e o ERP
- Quando usar: é uma importação obrigatória sempre que houver integração entre os sistemas
- Exemplo de uso: ao cadastrar uma nova coleção ou uma nova estrutura de produto. O ERP envia os dados de produto, para o WMS X viabilizar sua operação
- Benefícios: Manter os dados cadastrais atualizados entre os sistemas, garante precisão de controles, dados de embalagem, medida e peso, garantindo a melhor estratégia na movimentação
- Requisitos:
- Cadastro do client_id via portal de APIs da Senior.
- Token de autenticação válido.
- Link da API: PUT https://api.senior.com.br/wmsx_int/hub/apis/integration/product
É obrigatório informar os seguintes headers:
| Header | Obrigatório | Descrição |
| authorization | ✅ | Token Bearer de acesso |
| client_id | ✅ |
Identificador da aplicação cliente, obtido no portal de APIs da Senior |
Detalhamento dos campos:
integration/product - PUT
"payload": {
"ownerCode": "DEPOS123",
"productCode": "PROD001",
"description": "Produto Exemplo",
"productTypeCode": "TIPO01",
"productTypeDescription": "Tipo de Produto Exemplo",
"productSubTypeCode": "SUBTIPO01",
"productSubTypeDescription": "Subtipo de Produto Exemplo",
"controlShelfLife": "YES",
"typeTerm": "VM",
"shelfLife": 365,
"marketingPeriod": 180,
"criticalDeadline": 30,
"controlIndustrialBatch": false,
"requestDayInDates": true,
"productPackagings": [
{
"packagingCode": "EMB01",
"description": "Caixa com 12 unidades",
"quantity": 12.0,
"unitOfMeasure": "CX"
}
]
}
}
| Campo | Tipo | Descrição |
| id | string | Identificador único da operação de importação |
| statusUrl | string |
Caminho relativo para consultar o status ou pendências |
"id": "83670822-2dc9-4028-86e1-f139d024a625",
"statusUrl": "/apis/pendency/83670822-2dc9-4028-86e1-f139d024a625"
}
| Campo | Tipo | Descrição |
| ownerCode | string? | Código do Depositante do WMS a ser utilizado. Opcional se for único |
| productCode | string |
Código do produto a ser cadastrado no sistema |
| description | string | Descrição do produto |
| productTypeCode | string | Código do Tipo de Produto |
| productTypeDescription | string | Descrição do Tipo de Produto |
| productSubTypeCode | string | Código do Sub Tipo de Produto |
| productSubTypeDescription | string | Descrição do Sub Tipo de Produto |
| controlShelfLife | enumControlShelfLife | Tipo de Controle de Shelf Life |
| typeTerm | enumTypeTerm? | Tipo de Prazo de Validade |
| shelfLife | integer? (default: 1) | Prazo de Validade |
| marketingPeriod | integer? (default: 1) | Prazo de Comercialização |
| criticalDeadline | integer? (default: 1) | Prazo Crítico |
| controlIndustrialBatch | boolean? (default: false) | Controla Lote Indústria |
| requestDayInDates | boolean? (default: true) | Solicita dia nas datas de vencimento e fabricação |
| productPackaging.packagingBarCode | string | Código de barras da Embalagem |
| productPackaging.description | string | Descrição da Embalagem |
| productPackaging.packagingType | string? | Tipo da Embalagem |
| productPackaging.conversionFactor | double | Fator de Conversão |
| productPackaging.height | integer? | Altura da embalagem (mm) |
| productPackaging.width | integer? | Largura da embalagem (mm) |
| productPackaging.length | integer? | Comprimento da embalagem (mm) |
| productPackaging.grossWeight | integer? | Peso Bruto da embalagem (g) |
| productPackaging.netWeight | integer? | Peso Líquido da embalagem (g) |
| productPackaging.netWeight | integer? | Peso Líquido da embalagem (g) |
| productPackaging.ballast | integer? (min: 1) | Lastro da embalagem |
| productPackaging.layer | integer? (min: 1) | Camada da embalagem |
| productPackaging.maximumStacking | integer? (min: 1) | Empilhamento máximo permitido |
- Objetivo: Permitir que sistemas parceiros enviem informações de documentos de entrada, como notas fiscais e ordens de compra, para o WMS X, que irá gerenciar o processo de recebimento.
- Quando usar: Durante a recepção de mercadorias no armazém.
- Exemplo de Uso: Recebimento de um novo lote de produtos: O ERP envia os detalhes da nota fiscal e a lista de produtos esperados para que o WMS X prepare o recebimento.
- Benefícios:
- Garante que os dados de entrada estejam disponíveis antes do início do processo de recebimento.
- Reduz falhas de comunicação e retrabalho.
- Requisitos:
- Cadastro do client_id via portal de APIs da Senior.
- Token de autenticação válido.
- Link de API: PUT https://api.senior.com.br/wmsx_int/hub/apis/integration/receiving_document
É obrigatório informar os seguintes headers:
| Header | Obrigatório | Descrição |
| authorization | ✅ | Token Bearer de acesso |
| client_id | ✅ |
Identificador da aplicação cliente, obtido no portal de APIs da Senior |
Detalhamento dos campos:
"payload": {
"number": "123456",
"documentDate": "2025-06-27",
"referenceFields" : [
{ "key" : "INVOICE_DATE", "value": "2025-06-27" },
{ "key" : "INVOICE_NUMBER", "value": "123456" },
{ "key" : "INVOICE_SERIES", "value": "001" },
{ "key" : "INVOICE_ACCESS_KEY", "value": "35250612345678000123550010000000012345678901" }
],
"vendorCode": "FORN001",
"productSituation": "GOOD",
"warehouseCode": "WMS01",
"ownerCode": "OWNER01",
"displayDescription": "Pedido Filial 1 : No 123456",
"sourceDocumentType": "COMPRA",
"items": [
{
"itemNumber" : 1,
"product": "7891021006129",
"productPackaging": "7891021006129-01",
"uom": "UN",
"expectedQuantity": 100
},
{
"itemNumber" : 2,
"product": "7891021006136",
"uom": "CX",
"expectedQuantity": 10
}
]
}
}
| Campo | Tipo | Descrição |
| number | string? | Número do Documento |
| documentDate | date? | Data do Documento |
| referenceFields['INVOICE_NUMBER'] | string? | Número da Nota Fiscal |
| referenceFields['INVOICE_DATE'] | string? | Data de emissão Nota Fiscal |
| referenceFields['INVOICE_SERIES'] | string? | Série da Nota Fiscal |
| referenceFields['ACCESS_KEY'] | string? | Chave da Nota Fiscal |
| vendorCode | string | Código do Fornecedor para integração |
| productSituation | enumProductSituation? | Situação do produto. Se não informado, considera "Bom" |
| warehouseCode | string? | Código do Armazém para integração. Opcional se for único para o usuário |
| ownerCode | string? | Código do Depositante para integração. Opcional se for único para o usuário |
| displayDescription | string? | Rótulo para exibição amigável do documento importado |
| sourceDocumentType | string? | Classificação do tipo de documento conforme definido pelo sistema de origem |
| items[].itemNumber | integer? | Identifica o número do item da nota |
| items[].product | string | Código do Produto |
| items[].productPackaging | string? | Embalagem do Produto. Quando não informado, considera qualquer barra com fator 1 |
| items[].uom | string? | Unidade de Medida. Ex: UN, PC, KG, etc |
| items[].expectedQuantity | integer (min: 0) | Quantidade esperada na embalagem do produto |
"id": "83670822-2dc9-4028-86e1-f139d024a625",
"statusUrl": "/apis/pendency/83670822-2dc9-4028-86e1-f139d024a625"
}
| Campo | Tipo | Descrição |
| id | string | Identificador único da operação de importação |
| statusUrl | string |
Caminho relativo para consultar o status ou pendências |
- Objetivo: Receber e processar ordens de separação e notas fiscais, garantindo a preparação e expedição dos pedidos.
- Por padrão, o WMS X opera com liberação e formação de onda e atualmente não atende pedidos parciais provenientes de corte ou backorder, portanto os processamentos devem ser de pedidos completos.
- Quando usar: Na geração de pedidos de saída pelo sistema parceiro, como um OMS ou um ERP.
- Exemplo de Uso:
- Pedido de expedição: O OMS ou o ERP envia a ordem de separação, que é processada pelo WMS X para iniciar a separação e expedição.
- Benefícios:
- Integra de forma contínua as operações de separação e expedição.
- Melhora a coordenação logística e o cumprimento de prazos.
- O método suporta dados do destinatário em API única, sem necessidade de envios ou cadastros paralelos.
- Valida a busca por cidade e cep para que traga o endereço sem falhas
- Requisitos:
- Cadastro do client_id via portal de APIs da Senior.
- Token de autenticação válido.
- O campo documentNumber é obrigatório.
- Campos como issuer, consignee, receiver, items e invoice devem seguir os modelos definidos pela API.
- O campo documentType pode ser necessário dependendo da configuração do ambiente.
- Link da API: PUT https://api.senior.com.br/wmsx_int/hub/apis/integration/outbound_document
É obrigatório informar os seguintes headers:
| Header | Obrigatório | Descrição |
| authorization | ✅ | Token Bearer de acesso |
| client_id | ✅ |
Identificador da aplicação cliente, obtido no portal de APIs da Senior |
Detalhamento dos campos:
"payload": {
"documentNumber": "1015",
"issuer": {
"code": "5",
"legalPerson": true,
"national": true
},
"consignee": {
"code": "55",
"name": "João Carlos da Silva",
"legalPerson": true,
"national": true
},
"receiver": {
"code": "55",
"legalPerson": true,
"national": true,
"shippingAddress": {
"address": "Rua Ipiranga",
"address2": "ap 89",
"number": "40",
"postalCode": "01020000",
"city": "São Paulo",
"neighborhood": "Jardim Aeroporto"
}
},
"outboundAuthorized": false,
"invoice": {
"issueDate": "2025-04-03",
"number": 1000
},
"warehouseCode": "5",
"ownerCode": "5",
"items": [
{
"productCode": "7891021006129",
"productSituation": "GOOD",
"quantity": 2.0,
"uom": "EA"
}
]
}
}
| Campo | Tipo | Descrição |
| documentNumber | string | Número de Pedido |
| documentType | string? | Identifica o tipo de documento |
| batch | string? | Campo adicional para controle interno de lote industrial |
| issuer | recShipmentPerson? | Emissor do Pedido de Expedição |
| consignee | recShipmentPerson | Destino do Pedido de Expedição |
| receiver.code | string? | Código de Integração da Pessoa vinculada ao endereço de entrega, informação importante, visto que em notas de entrada o fornecedor será localizado pelo código de integração da especialização de fornecedor |
| receiver.name | string? | Nome da Pessoa que recebe a entrega |
| receiver.legalPerson | boolean? (default: true) | Indica que é uma pessoa jurídica |
| receiver.documentNumber | string | Indica se a pessoa atua em mercado nacional |
| receiver.shippingAddress.address | string | Documento (CNPJ / CPF / Passaporte) |
| receiver.shippingAddress.address2 | string | Rua do Endereço |
| receiver.shippingAddress.number | string (60)? | Número do Endereço |
| receiver.shippingAddress.postalCode | string? | Código Postal |
| receiver.shippingAddress.city | string? | Bairro |
| receiver.shippingAddress.state | string? | Cidade |
| receiver.shippingAddress.country | string? | Estado |
| receiver.shippingAddress.isBussinessAddress | boolean? | Endereço comercial |
| carrierCode | string? | Código da Transportadora |
| outboundAuthorized | boolean? (default: false) | Expedição Autorizada |
| invoice.issueDate | date | Data de Emissão do Outbound / Nota Fiscal |
| invoice.number | integer? | Número da Nota (se documentType for Invoice) |
| invoice.serie | integer? | Série da Nota |
| invoice.accessKey | string? | Chave de Acesso da Nota Fiscal |
| shippingDate | date? | Observações do Pedido / Nota Fiscal |
| comments | string? | Observações do Pedido / Nota Fiscal |
| warehouseCode | string? | Código do Armazém para integração (opcional se único para o usuário) |
| ownerCode | string? | Código do Depositante para integração (opcional se único para o usuário) |
| productSituation | enumProductSituation? | Situação do Produto |
| documentType | string? | Código do Tipo de Documento de Expedição |
| items[].itemNumber | integer? | Número que identifica o item |
| items[].productCode | string | Código do Produto |
| items[].productSituation | enumProductSituation? | Situação do Produto |
| items[].quantity | double (min: 0.0) | Quantidade |
| items[].packagingBarCode | string? | Código da Embalagem |
| items[].uom | string? | Unidade de Medida |
| items[].specificBatches[].batchInformation | string | Lote específico |
| items[].specificBatches[].quantity | double (min: 0.0) | Quantidade correspondente ao lote |
"id": "83670822-2dc9-4028-86e1-f139d024a625",
"statusUrl": "/apis/pendency/83670822-2dc9-4028-86e1-f139d024a625"
}
| Campo | Tipo | Descrição |
| id | string | Identificador único da operação de importação |
| statusUrl | string |
Caminho relativo para consultar o status ou pendências |
- Objetivo: Associar o documento de expedição (Nota fiscal) sempre que ocorrer o faturamento para prosseguir com a expedição.
- Quando usar: Sempre que a separação de produtos, ocorrer através de um documento não fiscal (pedido de venda)
- Exemplo de Uso: um pedido de venda foi separado e a quantidade de volume foi notificada para o WMS X. Então o ERP emite Nota Fiscal e os dados do faturamento (número da nota fiscal, série, data de emissão e chave) são transmitidos para o WMS X associar o pedido faturado e seguir com a expedição
- Benefícios:
- Elimina digitação e risco de associação indevida de nota fiscal.
- Requisitos:
- Cadastro do client_id via portal de APIs da Senior
- Token de autenticação válido
- Link da API: PUT https://api.senior.com.br/wmsx_int/hub/apis/integration/outbound_authorization
É obrigatório informar os seguintes headers:
| Header | Obrigatório | Descrição |
| authorization | ✅ | Token Bearer de acesso |
| client_id | ✅ |
Identificador da aplicação cliente, obtido no portal de APIs da Senior |
Detalhamento dos campos:
"payload": {
"documentNumber": "PED-2025-001",
"issuerCode": "EMISSOR001",
"referenceFields": [
{
"key": "INVOICE_DATE",
"value": "2025-06-25"
},
{
"key": "INVOICE_NUMBER",
"value": "123456"
},
{
"key": "INVOICE_SERIES",
"value": "1"
},
{
"key": "INVOICE_ACCESS_KEY",
"value": "35250612345678000123550010000000012345678901"
}
]
}
}
| Campo | Tipo | Descrição |
| documentNumber | string | Número de Pedido |
| issuerCode | string | Código de Integração do Emissor do Pedido de Expedição |
| referenceFields[].key | enumOutboundReferenceKey | Chave do Campo de Referência |
| referenceFields[].value | string | Valor para o Campo de Referência |
| Valor | Tipo | Descrição |
| INVOICE_DATE | string | Data de Emissão da Nota Fiscal |
| INVOICE_NUMBER | string | Número da Nota Fiscal |
| INVOICE_SERIES | string | Série da Nota Fiscal |
| INVOICE_ACCESS_KEY | string | Chave da Nota Fiscal |
"id": "83670822-2dc9-4028-86e1-f139d024a625",
"statusUrl": "/apis/pendency/83670822-2dc9-4028-86e1-f139d024a625"
}
| Campo | Tipo | Descrição |
| id | string | Identificador único da operação de importação |
| statusUrl | string |
Caminho relativo para consultar o status ou pendências |
Nas APIs de Exportação, os eventos enviados ao sistema parceiro responsável pelas integrações são transmitidos por meio de webhooks. Abaixo, detalhamos a forma de integração, entenda:
Para qualquer integração de Exportação (enviada pelo WMS X para outro sistema), é necessário configurar o destino que receberá essa integração. Para isso, é utilizada a Tela de WebHooks, onde será necessário informar o Evento referente ao tipo de exportação e dados do EndPoint de destino.
Então o que é um webhook?
Um webhook é uma notificação automática que um sistema envia para outro assim que um evento acontece. Ele permite que sistemas diferentes se comuniquem em tempo real, sem intervenção manual.
Por que é importante?
- Atualiza dados imediatamente
- Automatiza processos
- Reduz erros manuais
- Facilita o acompanhamento das integrações
Como é criado um webhook?
Primeiramente, é necessário que o ambiente cloud esteja devidamente instalado e configurado, veja como clicando aqui.
Agora, siga a documentação completa para criação do webhook, clicando aqui.
Acessa a plataforma em a plataforma Senior X, siga o caminho: Tecnologia > Customização > Events Hub > Webhooks, ou no campo de pesquisa digite WebHooks para acessar a tela.
- Exportação de Confirmação de Recebimento: Evento = wmsx_receiving/checkin/exportReceivingConfirmation
- Exportação de Confirmação de Separação: Evento = wmsx_shipment/checkin/outboundConfirmed)
- Exportação de Status de Pedidos de Expedição: Evento = wmsx_shipment/general/exportOutboundStatusChanged)
- Exportação de Estoque do Depositante: Evento = wmsx_stock/general/exportOwnerStockRequested) (posição de estoque)
- Mudança de estoque: Evento = wmsx_stock/general/exportStockOperationPerformed) (movimentações de estoque)
Listamos abaixo de forma simples os eventos, veja:
| Evento | Solução saída > Solução que recebe | Observações | API |
| Confirmação de Recebimento | WMS X > ERP | Notificação do WMS X par ao sistema parceiro para notificar a conclusão do recebimento, quantidades e características recebidas. |
https://dev.senior.com.br/api_privada/wmsx_receiving_checkin/ - Evento: /checkin/events/exportReceivingConfirmation |
| Movimentações de Estoque | WMS X > ERP | Sempre que houver movimentação entre depósitos ou alteração de estado de material |
https://dev.senior.com.br/api_privada/wmsx_stock_general/ - Evento: /general/events/exportStockOperationPerformed |
| Posição de Estoque | WMS X > ERP | Saldo por produto de materiais operados no WMS, desde saldo a armazenar quanto produtos envolvidos em operações de expedição. |
https://dev.senior.com.br/api_privada/wmsx_stock_general/ - Evento: /general/events/exportOwnerStockRequested |
| Confirmação de separação padrão | WMS X > ERP | Quando ocorrer separação e embalagem dos pedidos, ocorre notificação para que ERP possa faturar ou expedir |
https://dev.senior.com.br/api_privada/wmsx_shipment_checkin/ - Evento: /checkin/events/outboundConfirmed |
| Status de Pedidos | WMS X > Sistema parceiro | A cada alteração de status da ordem, o WMS X pode notificar o sistema parceiro para fins de tracking. |
https://dev.senior.com.br/api_privada/wmsx_shipment_general/ - Evento:/general/events/exportOutboundStatusChanged |
Agora, entenda cada uma das integrações de exportação forma mais detalhada:
- Objetivo: O sistema parceiro deve ser informado quando o processo de recebimento for concluído, incluindo detalhes sobre a quantidade efetivamente recebida e quaisquer divergências identificadas. No contexto operacional, o WMS X tem a capacidade de receber uma ordem de recebimento que pode abranger diversos documentos, sendo possível que um mesmo item esteja previsto em múltiplos documentos dentro da mesma ordem.
- É possível parametrizar o WMS X:
- Para aceitar itens não previstos na ordem e Para aceitar sobras de itens previstos: Nesses cenários, o WMS X retornará a divergência em um documento extra de entrada para que os documentos originais possam ser tratados e a sobra administrada no sistema parceiro.
- Para aceitar faltas e avarias de produtos no recebimento: Nesse cenário, o sistema atribui a indisponibilidade no último documento em que o item está previsto, consumindo os documentos anteriores conforme as quantidades efetivamente recebidas.
- Quando usar: Após o término do processo de recebimento, quando o estoque está atualizado e pronto para armazenamento.
- Exemplo de Uso: Atualização de estoque no ERP: Após a conclusão do recebimento, o WMS X envia uma confirmação com a quantidade recebida e eventuais ajustes, para que o ERP atualize seu estoque lógico.
- Benefícios:
- Permite que o sistema parceiro mantenha um inventário preciso.
- Facilita a identificação de divergências entre o pedido e o recebido.
- Link da API: https://dev.senior.com.br/api_privada/wmsx_receiving_checkin/
- Eventos: /checkin/events/exportReceivingConfirmation
WMS X pode ser parametrizado para tratar sobras, itens não previstos e faltas dependendo da regra de negócio e de como o sistema parceiro se comporta. É possível receber produtos divergentes e comunicar essa divergência para o sistema parceiro na seguintes regras:
Como a API de Exportação de Recebimento comunica divergências quantitativas. Caso sobras e itens não previstos forem suportados pela operação e sistema parceiro, controles são habilitados no tipo de recebimento do WMS X
Regra principal
O WMS X consome sempre o saldo disponível no primeiro documento e passa a consumir os demais documentos quando todo saldo do item for consumido nos documentos anteriores.
Se ocorrer falta do item, a falta é atribuída no primeiro documento com saldo possível, ou seja, se um item previsto em dois documentos teve apontamento suficiente para completar o primeiro documento, a falta será considerada no segundo documento.
Se ocorrer sobra de item ou item não previsto, uma nova linha será criada para as sobras, considerando saldo previsto: vazio e saldo recebido a quantidade que sobrou. Essa sobra será considerada também no ultimo documento do recebimento.
Se o sistema parceiro não suportar sobras ou se por determinação operacional de negócio, sobras não forem suportadas, o tipo de recebimento poderá ter seus parâmetros ajustados para não aceitar sobras ou itens não previstos. Essa trava poderá ser aplicada ou no coletor de conferência de recebimento ou na tela de administração de ordens, ao finalizar um recebimento. Apesar de não típico, a mesma regra se aplica ao caso de faltas, podendo ocorrer o bloqueio da finalização do recebimento, conforme necessidade operacional
Exemplos
Ordem de recebimentos encerrados com dois documentos, mesmo item previsto nos dois documentos
- Recebimento de somente um item, ainda assim, parcial:
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 50 | Recebimento Parcial |
| D001 | P002 | 100 | 00 | Falta total |
| D002 | P001 | 100 | 00 | Falta total |
Sistema considerou o saldo recebido somente na primeira linha do item previsto, considerando a falta tanto do segundo item quanto do segundo documento.
- Exemplo de recebimento parcial considerado no segundo documento pois o saldo do primeiro documento foi atingido para um item.
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 50 | Recebimento Parcial |
| D002 | P001 | 100 | 00 | Falta total |
Sistema considerou saldo recebido somente de um documento onde também ocorreu recebimento parcial do segundo item e a falta foi atribuída ao segundo documento do item recebido parcialmente.
- Exemplo de recebimento parcial mas com preenchimento de quantidade em ambos documentos
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 100 | Recebimento Total |
| D002 | P001 | 100 | 100 | Recebimento Total |
| D002 | P001 | 0 | 15 | Recebimento maior (sobra) |
Sistema consumiu o saldo de todos os itens do documento 1 porém para o documento 2 somente parte do saldo previsto foi apontado, gerando falta atribuída ao documento 2.
- Exemplo de sobra de item previsto:
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 85 | Recebimento Parcial (falta) |
| D002 | P001 | 100 | 100 | Recebimento Total |
| D002 | P001 | 0 | 15 | Recebimento maior (sobra) |
Sistema compôs o saldo previsto em todos os documentos, porém ocorreram sobras físicas. Essas sobras são atribuídas ao último documento e a quantidade prevista é 0.
- Exemplo de inversão (falta e sobra):
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 100 | Recebimento Total |
| D002 | P001 | 100 | 100 | Recebimento Total |
| D002 | P003 | 0 | 15 | Recebimento maior (sobra) |
Sistema apontou a falta do item P002 no documento 1 e a quantidade faltante do item é igual à sobra apontada para o item P001. Nesse caso, a sobra foi considerada no ultimo documento da ordem, apontando quantidade prevista zero e quantidade recebida a sobra apontada já que o saldo possível do item nos demais documentos foi atingido.
- Exemplo de Item não previsto:
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 100 | Recebimento Total |
| D002 | P001 | 100 | 100 | Recebimento Total |
| D002 | P003 | 0 | 15 | Recebimento maior (sobra) |
Todos os itens previstos foram distribuidos em seus documentos porém ocorreu sobra de um item não previsto em nenhum documento. A quantidade prevista é zero e o saldo apontado como sobra atribuído no ultimo documento.
- Exemplo de faltas, sobras e itens não previstos Documento de Entrada Item Quantidade Prevista Quantidade Recebida Regra
| Documento de Entrada | Item | Quantidade Prevista | Quantidade Recebida | Regra |
| D001 | P001 | 100 | 100 | Recebimento Total |
| D001 | P002 | 100 | 85 | Recebimento Parcial (falta) |
| D002 | P001 | 100 | 100 | Recebimento Total |
| D002 | P001 | 0 | 15 | Recebimento maior (sobra) |
| D002 | P003 | 0 | 15 | Recebimento maior (sobra) |
O sistema apontou tanto falta de um item previsto quanto sobra de um item previsto além de apontar a sobra de um item não previsto.A falta foi atribuída no documento 1 pois foi o primeiro documento com saldo apto para o item faltante. As sobras tanto de item previsto quanto item não previsto foram atribuídas ao último documento com quantidade prevista zero e quantidade recebida o saldo com sobra.
- Objetivo: Notificar o sistema parceiro sobre movimentações de estoque, como ajustes e remanejamentos.
- Quando usar: Sempre que ocorrerem movimentações internas significativas, como transferências entre setores com depósitos lógicos distintos ou ajustes de estoque.
- Exemplo de Uso:
- Ajuste de estoque por avaria: O WMS X envia uma notificação ao ERP detalhando a alteração no estoque, incluindo o motivo.
- Benefícios:
- Atualiza o sistema parceiro em tempo real.
- Mantém a integridade das informações de estoque.
- Link da API: https://dev.senior.com.br/api_privada/wmsx_stock_general/
- Eventos: /general/events/exportStockOperationPerformed
- Objetivo: Transmitir a posição consolidada do estoque para que o sistema parceiro tenha uma visão atualizada dos níveis de inventário.
- Quando usar: Em horários programados ou sob demanda, conforme o projeto definir.
- Exemplo de Uso:
- Consulta de disponibilidade: O ERP consulta o WMS X para verificar a quantidade disponível antes de avaliar estoque lógico.
- Benefícios:
- Garante decisões de venda mais precisas.
- Minimiza riscos de vendas acima do disponível.
- Link da API: https://dev.senior.com.br/api_privada/wmsx_stock_general/
- Eventos: /general/events/exportOwnerStockRequested
- Objetivo: Notificar o sistema parceiro sobre a conclusão de um pedido, detalhando as quantidades atendidas, quantidade de volumes, lotes e informações de fabricação.
- Quando usar: Após a conclusão da separação e expedição do pedido no armazém.
- Exemplo de Uso:
- Envio de dados para faturamento: O WMS X envia as informações completas de um pedido processado e com processo de packing finalizado para que o ERP gere a fatura e siga com o processo de expedição.
- Benefícios:
- Atualiza o sistema parceiro com os detalhes de cumprimento do pedido.
- Reduz erros de informação e melhora a precisão do faturamento e da logística de saída.
- Link da API: https://dev.senior.com.br/api_privada/wmsx_shipment_checkin/
- Eventos: /checkin/events/outboundConfirmed
- Objetivo: Consultar a qualquer momento o status de determinada ordem de separação, consumindo as notificações disponibilizadas pelo WMS a cada mudança de status da ordem, desde o início da separação até a conclusão da expedição ou cancelamento da ordem.
- Quando usar: Sempre que necessitar consultar o status de uma ordem.
- Exemplo de Uso:
- Envio de notificação para plataforma e-commerce: O WMS X envia as notificações de status de um pedido para o sistema parceiro, que por sua vez, as encaminha para uma plataforma de e-commerce para notificar a separação do item para posterior envio.
- Benefícios:
- Atualiza o sistema parceiro com os detalhes de status do pedido
- Status em tempo real do pedido
- Exportação de status do outbound ao cancelar a ordem de separação
- Link da API: https://dev.senior.com.br/api_privada/wmsx_shipment_general/
- Eventos: /general/events/exportOutboundStatusChanged
Para aprimorar a comunicação entre o sistema da Senior e os sistemas integradores, foi implementado um novo processo de integração que reduz a necessidade de consultas manuais, permitindo que os integradores recebam notificações automáticas sobre o resultado do processamento das integrações. Isto elimina a dependência de verificações periódicas no endpoint de status, tornando o fluxo mais ágil e eficiente.
Ao concluir uma integração, o sistema emite o evento integrationProcessed. Os consumidores desse evento receberão um payload contendo o ID do processamento, o nome da entidade processada, o status da operação e, caso aplicável, uma mensagem de erro. Veja abaixo o funcionamento:
O Hub do Gestão de Armazenagem | WMS X publica automaticamente um evento assim que uma integração é processada, eliminando a necessidade de polling, veja:
"contents": [
"id": "72255dd9-e633-4730-ac3a-d8164cac8bb3",
"name": "receiving_document",
"status": "ACCEPTED"
},
{
"id": "e98d01e4-744c-4b50-af5b-6cde17456deb",
"product": "replication_table_data",
"status": "OVERFAIL",
"errorMessage": "Não foi possível concluir a solicitação dentro do tempo limite"
},
{
"id": "cebc545e-c06b-4a92-9d3f-b2021e8fd268",
"name": "receiving_document",
"status": "FAIL",
"errorMessage": "Código do Armazém `MATRIZ` não encontrado."
}]
Esse evento é emitido sempre que uma pendência de integração (enviada via /integration/{id}) é concluída, seja com sucesso ou erro.
Fluxo Recomendado:
- O cliente envia a integração via POST /hub/apis/integration/{nome_integracao}.
- O Hub processa a solicitação de forma assíncrona.
- Quando o processamento termina, o Hub dispara o evento integrationProcessed para o Webhook configurado pelo cliente.
Caso o cliente deseje verificar manualmente, pode consultar /hub/apis/pendency/{id} como fallback.
Boas Práticas:
- Prefira webhooks para evitar sobrecarga com consultas recorrentes.
- Recomendamos que use o hub/apis/pendency/{id} somente em casos pontuais, como quando o cliente precisa exibir o status imediatamente após o envio.
- Armazene o id retornado pela criação da integração para consultas posteriores, se necessário.
Campos Importantes
- status: pode assumir os seguintes valores:
- PENDING: Aguardando processamento
- ACCEPTD: Processado com sucesso
- FAIL: Ocorreu uma falha
- OVERFAIL: quando ocorreram mais de cinco falhas, não é realizado nova tentativa. Veja, clicando aqui como realizar o processamento.
Para mais detalhes e exemplos de código, acesse a documentação dos endpoints e Swagger correspondentes.


English
Español


