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

# Histórico de Eventos do Webhook

> Lista o histórico de eventos dos webhooks associados ao usuário autenticado com suporte a filtros, busca e paginação

#### Escopo

```bash theme={null}
    read webhooks
```

## Filtros Disponíveis

<Tip>
  Filtros podem ser combinados para refinar ainda mais os resultados.

  Exemplo: `?event_id=purchase_approved&event_status=200` - Filtra eventos de compra aprovada que foram enviados com sucesso (status 200).
</Tip>

<AccordionGroup>
  <Accordion title="Filtros por Identificação" icon="id-card">
    * `id` - Id do histórico do evento
    * `app_id` - Id do app webhook

    <Tip>
      Suporte a múltiplos valores separados por vírgula.
    </Tip>

    **Exemplo:** `?id=123,456` - Filtra históricos com Id 123 ou 456
  </Accordion>

  <Accordion title="Filtros por Evento" icon="bolt">
    * `event_id` - [`custom_id` do evento](#response-results-event-id) enviado

    <Tip>
      Suporte a múltiplos valores separados por vírgula.
    </Tip>

    **Exemplo:** `?event_id=purchase_approved,subscription_created` - Filtra eventos de compra aprovada e assinatura criada
  </Accordion>

  <Accordion title="Filtros por Status" icon="flag">
    * `event_status` - Código de status HTTP da resposta do webhook

    <Tip>
      Suporte a operadores de comparação (`__gt`, `__gte`, `__lt`, `__lte`)
    </Tip>

    <Note>
      Status 200-299 indicam sucesso, 400-499 erros do cliente, 500-599 erros do servidor.
    </Note>

    **Exemplos:**

    * `?event_status=200` - Filtra eventos com status 200
    * `?event_status__gte=400` - Filtra eventos com erros (status >= 400)
  </Accordion>

  <Accordion title="Filtros por Data de Envio" icon="calendar">
    * `dispatchedAt` - Data e hora em que o evento foi enviado

    <Tip>
      Suporte a operadores de comparação (`__gt`, `__gte`, `__lt`, `__lte`)
    </Tip>

    <Note>
      Formato de data: `YYYY-MM-DD` ou [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) `YYYY-MM-DDTHH:MM:SS±hh:mm`
    </Note>

    **Exemplo:** `?dispatchedAt__gte=2024-01-01&dispatchedAt__lt=2024-02-01` - Filtra eventos enviados em janeiro de 2024
  </Accordion>
</AccordionGroup>

## Busca

O endpoint suporta busca textual pelo parâmetro `search` nos seguintes campos:

* `app.name` - Nome do webhook
* `url` - URL de destino do webhook
* `errors` - Mensagens de erro do evento

**Exemplo:** `?search=timeout` - Busca pelo texto "timeout" nos campos de busca.
Qualquer histórico de evento onde um dos campos contenha o texto `timeout` será retornado.

## Ordenação

Você pode ordenar os resultados usando o parâmetro `ordering`.

Campos suportados: `event_id`, `dispatchedAt`, `scheduledAt`, `sentAt`

<Tip>
  Use o prefixo `-` para ordenação decrescente.
</Tip>

**Exemplo:** `?ordering=-dispatchedAt` - Ordena por data de envio (mais recentes primeiro)


## OpenAPI

````yaml GET /public_api/webhook/event_history/
openapi: 3.0.3
info:
  title: Cakto API
  version: 1.0.0
  description: Documentação da API pública do Cakto.
servers:
  - url: https://api.cakto.com.br
    description: Cakto API
security: []
paths:
  /public_api/webhook/event_history/:
    get:
      tags:
        - webhook
      description: |-
        API for listing event history, inherits from AppHistoryEventsAPI
        and customize schema generation settings.
      operationId: webhook_event_history_list
      parameters:
        - name: limit
          required: false
          in: query
          description: Número de resultados a serem retornados por página.
          schema:
            type: integer
        - name: page
          required: false
          in: query
          description: Número da página a ser retornada.
          schema:
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedWebhookEventHistorySchemaList'
              examples:
                Successo:
                  value:
                    count: 123
                    next: http://api.example.org/accounts/?page=4
                    previous: http://api.example.org/accounts/?page=2
                    results:
                      - id: 28127
                        app:
                          id: 925
                          status: active
                          name: Webhook App
                          url: >-
                            https://webhook.site/1b2a8cb1-74a8-4c92-9943-4d8558b1119c
                          products:
                            - f947c21c-d8f0-41a1-a0a6-fede9f27b3ab
                            - e1f68a26-24be-4e2a-9f2e-a3fa9cb2abe6
                          events:
                            - 1
                            - 2
                            - 3
                          fields:
                            secret: 8402b43f-c839-4090-bbd1-186725d185cd
                        url: >-
                          https://webhook.site/1b2a8cb1-74a8-4c92-9943-4d8558b1119c
                        payload:
                          data:
                            id: b3df956e-1998-4322-b091-ac0c54f7b4ba
                            fbc: null
                            fbp: null
                            sck: null
                            card:
                              brand: null
                              holderName: Teste Automatizado
                              lastDigits: '4242'
                            fees: 6.62
                            offer:
                              id: a8BcHrY
                              name: Produto Farm
                              image: null
                              price: 5
                              currency: BRL
                            refId: 4852F91
                            amount: 5
                            paidAt: '2025-11-06T16:01:55.741948-03:00'
                            reason: null
                            status: paid
                            address:
                              city: Monte Carmelo
                              state: MG
                              number: '123'
                              street: Rua A
                              country: BR
                              zipcode: '38500000'
                              complement: ''
                              neighborhood: Centro
                            product:
                              id: cd287b31-d4b7-4e94-858a-96e05ce2f4a2
                              name: Produto Farm
                              type: unique
                              short_id: 42bruPi
                              supportEmail: teste@teste.com
                              invoiceDescription: '213'
                            checkout: 84183
                            customer:
                              id: 481920
                              name: Teste Automatizado
                              email: customer2@example.com
                              phone: '5534999999999'
                              docType: cpf
                              birthDate: null
                              docNumber: 9908807766
                            discount: '0.00'
                            due_date: null
                            shipping: null
                            utm_term: null
                            affiliate: ''
                            createdAt: '2025-11-06T16:01:53.935243-03:00'
                            baseAmount: 5
                            canceledAt: null
                            couponCode: null
                            offer_type: main
                            refundedAt: null
                            utm_medium: null
                            utm_source: null
                            checkoutUrl: https://pay.cakto.com.br/a8BcHrY
                            commissions:
                              - type: producer
                                user: producer@example.com
                                percentage: 100
                                totalAmount: 2.36
                            utm_content: null
                            installments: 1
                            parent_order: ''
                            subscription: null
                            utm_campaign: null
                            chargedbackAt: null
                            paymentMethod: credit_card
                            refund_reason: null
                            paymentMethodName: Cartão de Crédito
                            subscription_period: null
                            charged_fees: '0.00'
                            interest: null
                            additionalInstallmentInterest: '0.00'
                          event: purchase_approved
                          secret: 8402b43f-c839-4090-bbd1-186725d185cd
                        response:
                          error:
                            id: ''
                            message: >-
                              Token "1b2a8cb1-74a8-4c92-9943-4d8558b1119c" not
                              found
                          success: false
                        event_id: purchase_approved
                        event_name: Compra aprovada
                        event_status: 404
                        scheduledAt: '2025-11-06T16:01:57.458330-03:00'
                        dispatchedAt: '2025-11-06T16:01:58.458330-03:00'
                        sentAt: '2025-11-06T16:01:57.458330-03:00'
          description: Corpo da resposta status 200
        '401':
          description: Request não autenticado devido à ausência ou invalidez do token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedError'
              examples:
                Token ausente ou inválido:
                  $ref: '#/components/examples/UnauthenticatedErrorExample'
      security:
        - OAuth Token: []
components:
  schemas:
    PaginatedWebhookEventHistorySchemaList:
      type: object
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEventHistorySchema'
    UnauthenticatedError:
      type: object
      properties:
        detail:
          type: string
    WebhookEventHistorySchema:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: Id do histórico do evento
        app:
          allOf:
            - $ref: '#/components/schemas/App'
          readOnly: true
          description: App que disparou o evento
        url:
          type: string
          format: uri
          nullable: true
          description: URL de destino em que o evento foi enviado
          maxLength: 2048
        payload:
          description: Payload enviado no evento
        response:
          title: Resposta
          description: Resposta recebida da url de destino
        event_id:
          allOf:
            - $ref: '#/components/schemas/EventType'
          description: |-
            custom_id do evento associado ao histórico

            * `initiate_checkout` - Inicio de Checkout
            * `checkout_abandonment` - Abandono de Checkout
            * `purchase_approved` - Compra aprovada
            * `purchase_refused` - Compra recusada
            * `pix_gerado` - Pix gerado
            * `boleto_gerado` - Boleto gerado
            * `picpay_gerado` - PicPay gerado
            * `openfinance_nubank_gerado` - Nubank gerado
            * `chargeback` - Chargeback
            * `refund` - Reembolso
            * `subscription_created` - Assinatura criada
            * `subscription_canceled` - Assinatura cancelada
            * `subscription_renewed` - Assinatura renovada
            * `subscription_renewal_refused` - Renovação de assinatura recusada
            * `subscription_paused` - Assinatura pausada
            * `subscription_resumed` - Assinatura reativada
        event_name:
          allOf:
            - $ref: '#/components/schemas/EventNameEnum'
          description: Nome do evento enviado
          readOnly: true
        event_status:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          nullable: true
          description: Status HTTP da resposta do evento
        response_time:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          nullable: true
          title: Tempo de resposta
          description: Tempo de resposta em milissegundos
        steps:
          title: Etapas
          description: Etapas do envio do evento
        errors:
          type: string
          nullable: true
          description: Erros ocorridos durante o envio do evento
        scheduledAt:
          type: string
          format: date-time
          nullable: true
          title: Data de agendamento
          description: Data e hora em que o evento foi enfileirado no RQ.
        dispatchedAt:
          type: string
          format: date-time
          nullable: true
          title: Data de envio
          description: >-
            Data e hora em que o request HTTP foi efetivamente disparado ao
            destino.
        sentAt:
          type: string
          format: date-time
          readOnly: true
          title: Data de envio (legado)
          description: >-
            ⚠️ DEPRECATED: mantido por compatibilidade. Use
            scheduledAt/dispatchedAt.
      required:
        - app
        - event_id
        - event_name
        - id
        - sentAt
    App:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        status:
          allOf:
            - $ref: '#/components/schemas/AppStatus'
          description: |-
            Status atual do app

            * `active` - Ativo
            * `disabled` - Desativado
            * `waiting_config` - Aguardando Configuração
            * `paused` - Pausado
        name:
          type: string
          title: Nome
          description: Nome do app
          maxLength: 255
        url:
          type: string
          format: uri
          nullable: true
          description: URL de destino, onde os eventos serão enviados
          maxLength: 2048
        products:
          type: array
          items:
            type: string
            title: Produtos
          title: Produtos
          description: Produtos que utilizam este app
        events:
          type: array
          items:
            type: integer
            title: Eventos
          title: Eventos
          description: Eventos que ativam este app
        fields:
          title: Campos adicionais
          description: Campos adicionais para o app
      required:
        - id
        - name
    EventType:
      enum:
        - initiate_checkout
        - checkout_abandonment
        - purchase_approved
        - purchase_refused
        - pix_gerado
        - boleto_gerado
        - picpay_gerado
        - openfinance_nubank_gerado
        - chargeback
        - refund
        - subscription_created
        - subscription_canceled
        - subscription_renewed
        - subscription_renewal_refused
        - subscription_paused
        - subscription_resumed
      type: string
      description: |-
        * `initiate_checkout` - Inicio de Checkout
        * `checkout_abandonment` - Abandono de Checkout
        * `purchase_approved` - Compra aprovada
        * `purchase_refused` - Compra recusada
        * `pix_gerado` - Pix gerado
        * `boleto_gerado` - Boleto gerado
        * `picpay_gerado` - PicPay gerado
        * `openfinance_nubank_gerado` - Nubank gerado
        * `chargeback` - Chargeback
        * `refund` - Reembolso
        * `subscription_created` - Assinatura criada
        * `subscription_canceled` - Assinatura cancelada
        * `subscription_renewed` - Assinatura renovada
        * `subscription_renewal_refused` - Renovação de assinatura recusada
        * `subscription_paused` - Assinatura pausada
        * `subscription_resumed` - Assinatura reativada
    EventNameEnum:
      enum:
        - Inicio de Checkout
        - Abandono de Checkout
        - Compra aprovada
        - Compra recusada
        - Pix gerado
        - Boleto gerado
        - PicPay gerado
        - Nubank gerado
        - Chargeback
        - Reembolso
        - Assinatura criada
        - Assinatura cancelada
        - Assinatura renovada
        - Renovação de assinatura recusada
        - Assinatura pausada
        - Assinatura reativada
      type: string
    AppStatus:
      enum:
        - active
        - disabled
        - waiting_config
        - paused
      type: string
      description: |-
        * `active` - Ativo
        * `disabled` - Desativado
        * `waiting_config` - Aguardando Configuração
        * `paused` - Pausado
  examples:
    UnauthenticatedErrorExample:
      summary: Token ausente ou inválido
      description: Token ausente ou inválido
      value:
        detail: As credenciais de autenticação não foram fornecidas.
  securitySchemes:
    OAuth Token:
      type: http
      scheme: bearer
      in: header
      name: Authorization
      description: >-
        Token de autenticação do tipo `Bearer {access_token}`, onde
        `{access_token}` é o token obtido no fluxo de
        [autenticação](/authentication).

````