Pular para o conteúdo principal

Atualizar Webhook

Descrição: Cadastra ou atualiza o gatilho de determinado evento (comportamento de upsert).

Este endpoint é um upsert. O registro é localizado por cooperativa + evento (webhook_event do corpo; o id do webhook não é usado). Se já existir um webhook ativo para aquele evento na cooperativa, ele é atualizado; se não existir, o webhook é criado — e nos dois casos a resposta é 204 No Content. Um 204 portanto não confirma que existia um cadastro anterior.

Endpoint​

PUT/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 PUT \
-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 ocorrerStringSim
basic_authenticationCredencial de autenticação básica para o header da chamada ao cliente (opcional)StringNão

Sobrescrita total: url e basic_authentication são sempre gravados com o que vier no corpo. Não há atualização parcial — omitir basic_authentication (ou enviá-lo vazio) apaga a credencial que estava cadastrada. Para preservar a autenticação básica, reenvie-a a cada PUT.

Armazenamento: o valor de basic_authentication é codificado em Base64 antes de ser armazenado, e é esse Base64 que a Merx envia no header Authorization: Basic <base64> das entregas. Envie sempre no formato claro usuário:senha — codificar antes resultaria em uma credencial duplamente codificada. Nas consultas (GET), o campo retorna já em Base64.

Respostas​

  • 204 - No Content

Sem corpo. Devolvido tanto quando o webhook existente é atualizado quanto quando ele é criado por não existir cadastro para aquele evento.

  • 400 - Bad Request

Campo obrigatório ausente ou vazio no corpo:

{
"messages": ["message.webhook-event.mandatory"]
}
{
"messages": ["message.url.mandatory"]
}
  • 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

Ocorre apenas quando o valor de webhook_event não corresponde a nenhum evento cadastrado na plataforma:

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

Webhook inexistente nunca gera 404 neste endpoint: nesse caso o registro é criado e a resposta é 204.