Documentação da API v1 · Conheça a Naut
v1

Cadastrar um endpoint

Cadastra um endereço para receber eventos e devolve o segredo UMA única vez. É esse segredo que assina cada entrega.

POSThttps://api.navenaut.com/webhooks-out/endpoints

Autenticação

A sessão do painel autentica esta rota, e ela é lida de forma autoritativa: não há parâmetro em que o chamador aponte para outra conta.

Esta rota não exige escopo nomeado — o que não quer dizer que ela seja aberta: sem a credencial acima ela recusa.

Exige sessão de vendedor. Todo endpoint lido ou escrito é escopado pela sessão: o identificador na URL nunca alcança o endpoint de outro vendedor.

Parâmetros

Corpo da requisição

application/json.

CampoTipoDescrição
apiKeytextoA chave que o seu servidor exige para aceitar a chamada. Opcional. Fica cifrada e não volta em nenhuma resposta.
authHeadertextoO cabeçalho que leva a chave. Sem ele, a chave vai em Authorization: Bearer seguido da chave; com ele, pura no cabeçalho escolhido.
eventTypesarranjo de um de: `account.migration_scheduled`, `advance.credited`, `charge.cancelled`, `debt.settled`, `funds.held`, `funds.released`, `kyc.updated`, `payout.failed`, `payout.paid`, `payout.partially_settled`, `payout.reversed`, `sale.chargeback`, `sale.disputed`, `sale.med_returned`, `sale.paid`, `sale.refunded`, `withdrawal.completed`Os tipos de evento que este endpoint assina. Entregamos só o que está nesta lista.
nameobrigatóriotextoO nome que você dá a este destino. Só aparece no painel.
productIdsobrigatórioarranjo de texto (uuid)Os produtos cujas vendas este destino recebe. Obrigatório, com ao menos um produto da sua conta.
urlobrigatóriotextoPara onde entregar. Endereço de rede interna é recusado: a entrega sai para a internet pública.
{
  "apiKey": "valor-de-exemplo-nao-use",
  "authHeader": "exemplo",
  "eventTypes": [
    "account.migration_scheduled"
  ],
  "name": "Meu servidor de pedidos",
  "productIds": [
    "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06"
  ],
  "url": "https://loja.exemplo.com.br/webhooks"
}

Respostas

200 · sucesso

{
  "active": true,
  "eventTypes": [
    "exemplo"
  ],
  "id": "0f2a4e6c-91c4-4e1b-9a3d-5b7c2e8f4a06",
  "name": "Loja Exemplo",
  "productIds": [
    "exemplo"
  ],
  "secret": "valor-de-exemplo-nao-use"
}

Endpoint cadastrado, com o segredo no corpo. Cada entrega chega com X-Naut-Signature (sha256= mais o HMAC-SHA256 de timestamp.corpoCru) e X-Naut-Timestamp em segundos. Verifique sobre o corpo CRU, recuse timestamp fora de 300 s ANTES de comparar o HMAC, e compare em tempo constante. A receita pronta, por plataforma, está em docs/webhook-out-verification-recipe.md. O corpo de sale.paid traz chargeId, que é o mesmo identificador devolvido por POST /v1/charges: é por ele que você liga o aviso de pagamento ao pedido que criou, sem consultar cobrança pendente nenhuma.

409 · conflito

Já existe um endpoint com essa URL nesta conta.

422 · corpo inválido

A URL, os produtos, o cabeçalho ou a lista de eventos não passou na validação.

Erros desta rota

StatusCódigoQuandoO que fazer
409WEBHOOK_ENDPOINT_DUPLICATEJá existe um endpoint com essa mesma URL nesta conta. Cadastrar o segundo faria cada evento chegar duas vezes no mesmo lugar, com dois segredos diferentes.Use o endpoint que já existe, e altere os tipos assinados dele por PATCH /webhooks-out/endpoints/{endpointId} se for isso que você queria. Nenhum endpoint novo foi criado, e nenhum segredo novo foi emitido.
422WEBHOOK_ENDPOINT_URL_NOT_ALLOWEDA URL não é um destino para onde a entrega possa sair: endereço de rede interna, esquema que não é HTTP, ou nome que não resolve para fora. A entrega sai da nossa rede para a internet pública, e um endereço interno faria a chamada voltar para dentro de casa.Cadastre um endereço público e alcançável e reenvie. Nada foi cadastrado.
422WEBHOOK_ENDPOINT_PRODUCT_INVALIDA lista de produtos traz um produto que não é desta conta. O destino só recebe vendas de produtos seus.Escolha só produtos da sua conta, na listagem de produtos, e reenvie. Nada foi gravado.
422WEBHOOK_AUTH_HEADER_NOT_ALLOWEDO cabeçalho escolhido para a chave de API é um dos reservados: os de assinatura da Naut (X-Naut-Signature, X-Naut-Timestamp) ou os do transporte, como Content-Type e Host.Use Authorization ou outro nome para o cabeçalho da chave e reenvie. Nada foi gravado.

Os códigos são estáveis e fazem parte do contrato. A lista completa, com todos os vocabulários, está na tabela de erros.

Próximo passo