> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-api/caf-api-pt-br/core-api/webhooks/transaction.md).

# Transação

### **Configurando o webhook**

Existem duas maneiras de configurar um webhook: vinculando-o a um modelo de consulta ou inserindo-o diretamente na requisição ao iniciar uma transação. Para configurar a URL padrão do webhook de um modelo de consulta, navegue até a **Modelos de Consulta** menu no CAF [Trust Platform](https://trust.caf.io/) e selecione o modelo desejado e edite o **Webhook** campo.

> * *Cada Modelo de Consulta criado no CAF* [*Trust Platform*](https://trust.caf.io/profile-templates/profile-models) *precisará de uma URL de callback atribuída para os webhooks. Essa URL pode ser diferente entre os modelos ativos ou a mesma.*
> * *A URL configurada deve estar pronta para receber uma requisição POST após a execução de um serviço do CAF.*
> * *A* <mark style="color:verde;">/</mark><mark style="color:verde;">`transação`</mark> *o endpoint de serviço pode receber como parâmetro opcional* <mark style="color:verde;">`_callbackUrl`</mark> *com cada transação ou* *requisição de onboarding. A URL padrão configurada no modelo de consulta associado será ignorada ao usar este parâmetro em qualquer requisição POST individual. Para mais detalhes sobre essa substituição, vá para a* [*Página de criação de transação*](https://github.com/combateafraude/public-docs/blob/docs-api/core-api/webhooks/available-resources/transaction.md#transactions)*.*

{% hint style="info" %}
[*<mark style="color:azul;">**Testador de Webhook**</mark>*](https://webhook.site/) *<mark style="color:azul;">\*\*\*\*</mark> e* [***Request Bin***](https://requestbin.com/) *são ferramentas úteis para receber chamadas de webhook. Você pode usá-las para gerar uma URL de webhook e usar essa URL em quaisquer requisições do Postman que exijam que você especifique uma URL de webhook; em seguida, use os sites para inspecionar o conteúdo de quaisquer webhooks que eles tenham recebido.*
{% endhint %}

### **Notificações de webhook**

Você receberá uma notificação via webhook nos seguintes eventos:

* **Nova transação de onboarding web**

Especificamente, no onboarding web, uma transação é iniciada quando um usuário conclui o fluxo, e você receberá uma notificação do tipo `process_started`. Isso significa que os documentos foram capturados e enviados para revisão.

* **Enviado para documentscopy**

Quando o documento tiver sido enviado para o documentscopy, você receberá uma notificação do tipo `documentscopy_requested`. O status da transação permanece `PROCESSING` até que o documentscopy seja concluído.

* **Alteração de status**

Quando o status da transação mudar, você receberá uma `status_updated` notificação.

{% hint style="warning" %}
O status de uma transação é definido com base nas validações configuradas no modelo de consulta.
{% endhint %}

### Parâmetros de resposta do webhook

| Nome                                             | Tipo   | Descrição                                                                                                                                 |
| ------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| tipo<mark style="color:vermelho;">\*</mark>      | String | Tipo do evento (process\_started, status\_updated ou documentscopy\_requested)                                                            |
| relatório<mark style="color:vermelho;">\*</mark> | String | Identificador do relatório (suporte ao fluxo legado). Se a transação não tiver relatório, o valor retornará como 000000000000000000000000 |
| uuid<mark style="color:vermelho;">\*</mark>      | String | Identificador da transação                                                                                                                |
| status<mark style="color:vermelho;">\*</mark>    | String | Status da transação                                                                                                                       |
| data<mark style="color:vermelho;">\*</mark>      | String | Data em que o webhook é enviado no formato UTC                                                                                            |
| onboardingId                                     | String | Se disponível, o identificador do link de onboarding usado na captura de dados.                                                           |
| templateId                                       | String | Identificador do modelo de consulta da transação, se existir                                                                              |
| statusReasons                                    | Array  | Motivos do status                                                                                                                         |
| statusReasons\[x].category                       | String | Categoria do motivo                                                                                                                       |
| statusReasons\[x].code                           | String | Código do motivo                                                                                                                          |
| statusReasons\[x].status                         | String | Status do motivo: ("VALID", "INVALID")                                                                                                    |
| statusReasons\[x].resultStatus                   | String | Resultado do status: ("APPROVED", "REPROVED", "PENDING")                                                                                  |
| statusReasons\[x].description                    | String | Descrição do motivo                                                                                                                       |

#### Exemplo de envio do webhook:

```json
{
  "report": "000000000000000000000000",
  "uuid": "xxxxxxxxxxxxxxxxxxxxxxxxx",
  "type": "status_updated",
  "status": "APPROVED",
  "date": "2023-08-16T16:27:32.801Z",
  "statusReasons": [
    {
      "category": "VALIDATION",
      "code": "over_18",
      "status": "VALID",
      "resultStatus": "APPROVED",
      "description": "Maior de idade (18 anos)."
    }
  ],
  "templateId": "xxxxxxxxxxxxxxxxxxxxxxxxx",
  "onboardingId": "yyyyyyyyyyyyyyyyyyyyyyyy",
}
```

### Tratamento de erros

Se não conseguirmos nos comunicar com o seu webhook, faremos até 5 tentativas em no máximo 5 horas. Durante o intervalo entre as requisições, alterações podem ocorrer no status da transação. Caso as notificações sejam entregues fora de ordem cronológica, o status pode não estar majoritariamente atualizado. Portanto, a recomendação é considerar o atributo date e sempre consultar a versão mais recente da transação.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-api/caf-api-pt-br/core-api/webhooks/transaction.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
