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

# Eventos do Pix Direct via JD

> CloudEvents emitidos pela integração Pix Direct via JD para os ciclos de vida de transação, chave DICT e Pix Automático.

A integração Pix Direct via JD emite 22 fatos de negócio JSON como CloudEvents 1.0 em modo binário de conteúdo via Kafka. O streaming é opcional. Quando habilitado, a integração escreve o estado de negócio e o envelope do evento no outbox do PostgreSQL na mesma transação. O relay do outbox é o único publisher do broker.

## Contrato de transporte

| Campo | Valor |
| - | - |
| `ce-source` | `plugin-br-pix-jd` |
| Tópico | `lerian.streaming.plugin-br-pix-jd` |
| Versão do schema | `1.0.0` para todo evento |
| Tipo de conteúdo | `application/json` |
| Entrega | Pelo menos uma vez, por meio do outbox transacional |
| Tópico de comandos | Nenhum |
| Manifesto em runtime | Não exposto |

Defina `STREAMING_ENABLED=true` e `OUTBOX_ENABLED=true` juntos. Se você definir `STREAMING_CLOUDEVENTS_SOURCE`, o valor dele deve ser exatamente `plugin-br-pix-jd`. Quando o streaming está desligado, a integração não escreve eventos de ciclo de vida no outbox de streaming.

> [!WARNING]
>
> Esta integração não expõe um endpoint de manifesto de streaming. Seu catálogo de bootstrap contém apenas a definição estrutural de `transaction.created`, enquanto os caminhos de emissão em produção abaixo publicam todos os 22 fatos. Use esta página como o inventário atual de eventos, não o catálogo incompleto em runtime.

Deduplique por `(ce-source, ce-id)` e mantenha os consumidores idempotentes. A integração não provisiona nenhum tópico de comandos.

## Catálogo de eventos

Todo `ce-type` usa `studio.lerian.plugin-br-pix-jd.<event-key>`.

### Transações

| Chave do evento | Dispara quando |
| - | - |
| `transaction.created` | Um cash-out externo é persistido como pendente, seu lançamento pendente no Midaz existe, e o envio ao JDPI é bem-sucedido. |
| `transaction.executed` | Uma transferência interna é concluída de forma síncrona, um cash-in é aplicado, ou a conciliação liquida um cash-out externo. |
| `transaction.refunded` | Uma transação de devolução é persistida e vinculada à transação original. |
| `transaction.failed` | A conciliação move um cash-out externo pendente para seu estado terminal de erro e cancela o lançamento pendente. Também dispara quando um Pix recebido é encerrado como devolvido ao pagador: status `ERROR`, `pendingReason` `RETURNED` e nenhum crédito lançado. |

### Chaves DICT e reivindicações

| Chave do evento | Dispara quando |
| - | - |
| `key.registered` | Uma chave é registrada no DICT e persistida como ativa. |
| `key.validation-requested` | A integração armazena e envia um desafio de validação de posse. |
| `key.confirmed` | O desafio enviado é verificado e a chave sai do estado de aguardando confirmação. |
| `key.deleted` | Uma chave é excluída no DICT e recebe soft delete localmente. |
| `key.claimed` | Uma reivindicação é aberta no DICT e seu identificador é persistido. |
| `key.claim-confirmed` | O doador confirma a reivindicação. |
| `key.claim-concluded` | O reivindicante conclui a reivindicação. |
| `key.claim-cancelled` | A reivindicação é cancelada. |
| `key.claim-received` | Outro participante abre uma reivindicação sobre uma chave que você tem. É opcional: defina `JOBS_CLAIM_RECEIVED_POLL_ENABLED=true`. Dispara uma vez para cada reivindicação, e o `ce-id` dele deriva do id da reivindicação. |

### Autorizações do Pix Automático

| Chave do evento | Dispara quando |
| - | - |
| `authorization.requested` | O PSP recebedor solicita uma autorização e a integração a persiste como solicitada. |
| `authorization.accepted` | O pagador aceita a autorização. |
| `authorization.rejected` | A autorização transita para rejeitada. |
| `authorization.activated` | A autorização é confirmada com sucesso e transita para ativa. |
| `authorization.cancelled` | A autorização é cancelada e recebe soft delete. Um cancelamento que você pede dispara este evento apenas depois que a JD informa que a contraparte o aceitou. |

### Agendamentos do Pix Automático

| Chave do evento | Dispara quando |
| - | - |
| `schedule.requested` | O PSP recebedor solicita um agendamento de pagamento e a integração o persiste como solicitado. |
| `schedule.accepted` | O agendamento transita para aceito. |
| `schedule.rejected` | O agendamento transita para rejeitado. |
| `schedule.cancelled` | O agendamento é cancelado e recebe soft delete. Um cancelamento que você pede dispara este evento apenas depois que a JD informa que a contraparte o aceitou. |

## Contratos de payload

Todos os timestamps são strings RFC 3339 em UTC. Os valores monetários de transação e Pix Automático são centavos inteiros, não strings decimais nem números de ponto flutuante. Os campos marcados com `?` são opcionais.

> [!WARNING]
>
> O contrato de wire codifica `amount`, `value` e `payerMaxValue` como tokens numéricos `int64` em JSON. Consumidores JavaScript que aceitam o intervalo completo de `int64` devem usar um parsing de JSON sem perdas e compatível com BigInt, ou rejeitar valores acima de `Number.MAX_SAFE_INTEGER`. O `JSON.parse` padrão pode arredondar inteiros maiores.

```typescript theme={null}
interface TransactionEventData {
  id: string
  jdpiRequestId?: string
  indirectId?: string
  endToEndId?: string
  status: string
  flow: number
  type: number
  amount: number // int64 centavos
  accountId: string
  isRefund: boolean
  isInternal: boolean
  refundType?: number
  refundAccountId?: string
  refundEndToEndId?: string
  refundCode?: string
  createdAt: string
  updatedAt: string
  midazPostingId?: string
  creditPostingId?: string
  organizationId?: string
  ledgerId?: string
  creditLedgerId?: string
  conciliationId?: string
  description?: string
  refundTypeName?: string
  holdReleased?: boolean
  payerName?: string
  payerDocument?: string
  payerIspb?: string
  payerBranch?: string
  payerAccountNumber?: string
  payerAccountDigit?: string
  payerKey?: string
  payerKeyType?: string
  payeeName?: string
  payeeDocument?: string
  payeeIspb?: string
  payeeBranch?: string
  payeeAccountNumber?: string
  payeeAccountDigit?: string
  payeeKey?: string
  payeeKeyType?: string
}

interface KeyEventData {
  id: string
  key: string
  accountId: string
  status: number
  keyType: number
  claimId?: string
  claimType?: number
  createdAt: string
  updatedAt: string
}

// key.claim-received carries this payload, not KeyEventData.
interface ClaimReceivedEventData {
  claimId: string
  key: string
  keyType: number
  claimType: number
  situation: number
  claimerIspb: string
  donorIspb: string
  account?: { branch?: string; number: string }
  resolutionDeadline?: string
  conclusionDeadline?: string
}

interface AuthorizationEventData {
  id: string
  idRecorrencia: string
  idReqJdPi?: string
  idCancelamento?: string
  tenantId?: string
  status: number
  frequency: number
  value?: number // int64 centavos
  payerMaxValue?: number // int64 centavos
  recipientIspb?: string
  recipientCnpj?: string
  payerCpfCnpj?: string
  contractNumber?: string
  createdAt: string
  updatedAt: string
}

interface ScheduleEventData {
  id: string
  endToEndId: string
  idRecorrencia: string
  idConciliacaoRecebedor?: string
  idCancelamento?: string
  tenantId?: string
  status: number
  finalidadeAgendamento: number
  dtVencimento?: string
  value?: number // int64 centavos
  recipientIspb?: string
  recipientCnpj?: string
  payerCpfCnpj?: string
  createdAt: string
  updatedAt: string
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.