Pular para o conteúdo principal
A Cubbo envia um POST HTTPS para o seu endpoint quando algo muda na sua conta. Use webhooks em vez de consultar periodicamente os endpoints de listagem.

Eventos

O nome do evento vem no header X-Webhook-Event. Faça o roteamento por esse header, não pela URL. O payload completo de cada evento está na referência da API, em Webhooks.
shippingUpdated não inclui o id do pedido na Cubbo. Correlacione-o com order_number e store_id.

Configurar seu endpoint

Seu endpoint deve usar https e um nome de domínio. Endereços IP são rejeitados. Configure-o no app da Cubbo: abra Integrações, encontre sua integração Open API e clique em Configurar Webhooks. Lá você ativa os webhooks de pedidos, inventário e remessas de estoque, define as URLs, adiciona headers personalizados, testa a URL e copia o segredo compartilhado. Veja Configure sua integração. Se o seu endpoint exige credenciais de cliente OAuth, peça ao seu contato na Cubbo para configurá-las. O feed de inventário só envia eventos enquanto o feed de pedidos estiver ativado. O feed de recebimentos é independente.

Teste de conectividade

Quando a Cubbo verifica sua URL, ela envia este corpo, sem headers de assinatura e sem X-Webhook-Event:
Responda 2xx em até 10 segundos. Aceite esse ping mesmo que ele não seja assinado, caso contrário a verificação falha.

Headers

Os headers estáticos configurados para a sua integração também são adicionados.

Verificar a assinatura

Todo evento é assinado com HMAC-SHA256 usando o secret do seu webhook. Verifique-a antes de confiar no corpo.
1

Leia o corpo bruto

Use exatamente os bytes que você recebeu. Não faça o parse e a re-serialização do JSON: a ordem das chaves e os espaços devem coincidir.
2

Monte a string assinada

Junte quatro valores com um ponto literal: o ID da mensagem, isa, exp e o corpo bruto.
3

Calcule e compare

Calcule o HMAC-SHA256 dessa string. Use o secret como uma string UTF-8 simples, sem decodificá-lo. Compare o digest hexadecimal em minúsculas com X-Cubbo-Hmac-SHA256 em tempo constante.
4

Verifique a expiração

Rejeite a requisição se o horário atual for posterior a exp. Permita alguns segundos de diferença de relógio.
Todos os feeds de uma integração usam o mesmo secret. Quando a Cubbo o renova, o novo secret se aplica a todas as entregas a partir desse momento, incluindo novas tentativas de eventos mais antigos.

Responder e novas tentativas

Responda com qualquer status 2xx assim que tiver armazenado o evento e, em seguida, processe-o de forma assíncrona. Respostas lentas correm o risco de timeout e de uma nova tentativa. Os eventos de inventário e de recebimento são entregues um de cada vez por integração, em ordem. Uma entrega com falha retém os eventos seguintes até ser bem-sucedida ou esgotar as novas tentativas.
Não responda 400 ou 401 enquanto seu endpoint estiver sendo implantado ou mal configurado. A Cubbo trata essas respostas como definitivas e descarta o evento. Responda 503 para que o evento seja reenviado.

Tratar duplicados

As novas tentativas reenviam o mesmo corpo, mas com um novo ID de mensagem, isa, exp e assinatura. Nunca faça a deduplicação por X-Cubbo-Webhook-Message-Id. Guarde as chaves processadas por pelo menos 26 horas, a maior janela de novas tentativas. Os valores de sequence crescem, mas podem pular números, então não espere que aumentem de um em um.