> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Visão geral dos webhooks

> Endpoints da API de webhooks para registrar webhooks e receber atualizações sobre eventos

export const PlansAvailable = ({plans = [], maxPackRequired}) => {
  let displayPlans = plans;
  if (plans && plans.length === 1) {
    const lowerCasePlan = plans[0].toLowerCase();
    if (lowerCasePlan === "business") {
      displayPlans = ["Launch", "Business", "Enterprise"];
    } else if (lowerCasePlan === "premium") {
      displayPlans = ["Premium", "Launch", "Business", "Enterprise"];
    }
  }
  return <Note>
Available on {displayPlans.length === 1 ? "the " : ""}
{displayPlans.join(", ").replace(/\b\w/g, l => l.toUpperCase())}{" "}
{displayPlans.length > 1 ? "plans" : "plan"}.

{maxPackRequired && <span onClick={() => window.open('https://www.ayrshare.com/docs/additional/maxpack', '_self')} className="flex items-center mt-2 cursor-pointer">
 <span className="px-1.5 py-0.5 rounded text-sm" style={{
    backgroundColor: '#C264B6',
    color: 'white',
    fontSize: '12px'
  }}>
   Max Pack required
 </span>
</span>}
</Note>;
};

<PlansAvailable plans={["premium"]} maxPackRequired={false} />

## O que é um webhook?

Um webhook permite que você seja notificado quando determinadas *ações* do sistema ocorrem, por meio de uma chamada a uma URL fornecida por você. Webhooks também são conhecidos como "URL Callbacks" ou "HTTP push calls". Sua URL deve usar SSL e começar com HTTPS.

<Card title="Ações de webhook" icon="link" href="/apis/webhooks/actions" horizontal>
  Veja as ações disponíveis para webhooks.
</Card>

### Entendendo os webhooks do Ayrshare

Os webhooks são categorizados pela ação específica e são *registrados no nível do Primary Profile ou do User Profile*. Quaisquer atualizações do Primary Profile ou dos User Profiles são enviadas primeiro para o webhook registrado do User Profile. Se o User Profile não tiver um webhook registrado, a atualização será enviada para o webhook registrado do Primary Profile.

Por exemplo:

<ul class="custom-bullets">
  <li>
    Se um User Profile tiver um webhook Social Action registrado e desvincular o TikTok,
    a URL do webhook Social Action registrado para o User Profile será
    chamada. O webhook do Primary Profile *não* será chamado.
  </li>

  <li>
    Se um User Profile desvincular o TikTok e *não* tiver um webhook
    Social Action registrado, mas o Primary Profile tiver um webhook registrado, a URL do
    webhook Social Action registrado para o Primary Profile será chamada.
  </li>
</ul>

### Registrar um webhook

Registre um webhook fornecendo uma URL de endpoint e o tipo de ação para o endpoint POST [`/hook/webhook`](/apis/webhooks/register). Quando a ação ocorrer, uma mensagem `HTTP POST` será enviada para a URL fornecida.
Por exemplo, registre uma URL para ser notificado sobre o status de uma publicação agendada.

A URL do endpoint do webhook não deve utilizar redirecionamentos e precisa ser a URL de destino final.

Se você registrar apenas o webhook do Primary Profile, os User Profiles herdarão automaticamente o webhook do Primary Profile.
Para ter um webhook exclusivo para cada User Profile, você precisa registrar um webhook para cada User Profile.

<Note>
  Depois que seu webhook receber o `HTTP POST`, seu servidor **deve** responder com
  um status HTTP `200` para marcar a chamada como bem-sucedida. Se o seu servidor não
  responder em 10 segundos, uma resposta `503` será registrada.
</Note>

Você também pode registrar webhooks no Painel do Desenvolvedor.

### Novas tentativas de webhook

Se a resposta HTTP do seu servidor não estiver na faixa de sucesso `200-299`, o sistema tentará automaticamente a chamada do webhook mais duas vezes. A primeira nova tentativa ocorrerá após 5 segundos e a segunda ocorrerá 30 segundos depois. As novas tentativas terão o mesmo `hookId` e serão marcadas como tentativas de retry.

## Segurança do webhook

Você pode optar por adicionar segurança adicional definindo autenticação HMAC como uma requisição HTTP. Isso é feito frequentemente para evitar ataques de replay. O Ayrshare usa [HMAC-SHA256](https://en.wikipedia.org/wiki/HMAC) para gerar o hash do corpo da mensagem e o inclui, junto com o timestamp UNIX, no cabeçalho do POST.

```bash theme={"system"}
X-Authorization-Timestamp : <Unix Timestamp In Seconds>
X-Authorization-Content-SHA256 : <HashedContent>
```

Com base em uma chave secreta definida ao [registrar seu webhook](/apis/webhooks/register), você pode validar o POST comparando o cabeçalho X-Authorization-Content-SHA256 com o hash SHA256 do corpo do POST. A chave secreta é usada em todas as ações de webhook, portanto, defini-la para uma ação alterará a chave secreta para todas as ações.

## Logs de webhooks

No Painel do Ayrshare, você pode visualizar os [webhooks ativos](https://app.ayrshare.com/webhooks), ver os detalhes do webhook enviado, o status de resposta do seu servidor e reenviar o webhook para a URL registrada.
Alterne para um User Profile específico para visualizar os logs de webhook desse profile.

### Códigos de resposta HTTP

A primeira coluna indica uma resposta HTTP bem-sucedida ✔️ (200, 300) do webhook ou uma resposta com falha ✖️ (400, 500).

Alterne para um user profile específico para visualizar os logs de webhook desse profile.

### Taxa de erro

A "Error Rate" das 1.000 publicações mais recentes pode ser visualizada tanto nas páginas Actions quanto Webhook Logs dentro do painel. Qualquer resposta de webhook do seu servidor de 400-500 é considerada um erro.
