Pular para o conteúdo principal

Criar Webhook

Descrição: Cadastra um gatilho a partir de determinado evento

Endpoint​

POST/api/v1/integration/webhooks

Regras​

AtributoDescriçãoTipoObrigatórioValidações
webhook_eventEvento que irá gerar o disparo do gatilhostringSimValores válidos: CREATE_PRODUCER, UPDATE_PRODUCER, DELETE_PRODUCER, CREATE_WAREHOUSE, UPDATE_WAREHOUSE, DELETE_WAREHOUSE, CREATE_FARM, UPDATE_FARM, DELETE_FARM, CREATE_GUEST_USER, UPDATE_GUEST_USER, DELETE_GUEST_USER, CREATE_DELIVERY_PLACE, UPDATE_DELIVERY_PLACE, DELETE_DELIVERY_PLACE, CREATE_ORDER_COMMITMENT, UPDATE_ORDER_COMMITMENT, DELETE_ORDER_COMMITMENT, CREATE_WALLET, UPDATE_WALLET, DELETE_WALLET, UPDATE_WORKFLOW_ORDER_COMMITMENT, CHANGE_PRODUCER_STATUS_ESG, CHANGE_FARM_STATUS_ESG, PRODUCER_PRODUCTION
urlURI do cliente que deverá ser acionada quando o evento ocorrerstringSimEx: https://api.cliente.com/api/v1/receive (Deverá aceitar requisições do tipo POST.) Máximo de 250 caracteres — a coluna é VARCHAR(250) e não há validação de tamanho na entrada: uma URL maior faz a requisição falhar com 500.
basic_authenticationSe preenchido, utilizaremos essa informação para passar no header via basic authstringNão

Exemplo de Requisição​

curl -X POST \
-H "Authorization: {SUA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"webhook_event": "CREATE_FARM",
"url": "https://api.cliente.com/api/v1/receive",
"basic_authentication": "usuário:senha"
}' \
"https://api.merx.tech/api/v1/integration/webhooks"

Parâmetros​

Parâmetros de Cabeçalho​
NomeDescriçãoTipoObrigatório
AuthorizationChave de API obtida via support-api@merx.techStringSim
Content-Typeapplication/jsonStringSim

Parâmetros do Corpo​

NomeDescriçãoTipoObrigatório
webhook_eventEvento que irá gerar o disparo do gatilhoStringSim
urlURI do cliente que deverá ser acionada quando o evento ocorrer (máx. 250 caracteres)StringSim
basic_authenticationCredencial de autenticação básica para o header da chamada ao cliente (opcional)StringNão

Respostas​

  • 201 - Created

A resposta vem sem corpo. O cadastro não devolve o id do webhook.

Atenção: a resposta traz um header Location: /api/v1/address/{id}. Esse caminho não existe na API e não deve ser seguido. Para obter o id do webhook recém-criado, faça em seguida:

  • GET /api/v1/integration/webhooks — lista todos os webhooks da cooperativa; ou
  • GET /api/v1/integration/webhooks/-/events/{webhook_event} — retorna o webhook do evento cadastrado.

O id obtido nessa consulta é o que deve ser usado no DELETE /api/v1/integration/webhooks/{id}.

  • 400 - Bad Request

Campo obrigatório ausente ou vazio no corpo:

{
"messages": ["message.webhook-event.mandatory"]
}
{
"messages": ["message.url.mandatory"]
}

Já existe um webhook ativo para o mesmo webhook_event nesta cooperativa. Só é permitido um webhook por evento — a tentativa de cadastrar um segundo viola o índice único e devolve:

{
"messages": ["message.duplicate.key"]
}

Para trocar a URL de um evento já cadastrado, use o PUT em vez de um novo POST.

  • 401 - Unauthorized

Devolvido pelo gateway quando o Authorization está ausente ou inválido — nesse caso a resposta traz corpo, no formato {"data": [], "error": {...}}. A mensagem dentro de error varia conforme o plugin de autenticação da rota, então não programe em cima do texto.

  • 404 - Not Found

O valor informado em webhook_event não corresponde a nenhum evento cadastrado na plataforma:

{
"messages": ["message.event.not-found"]
}