> ## 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 de Pix Direct via JD

> CloudEvents emitidos por la integración Pix Direct via JD para los ciclos de vida de transacciones, claves DICT y Pix Automático.

La integración Pix Direct via JD emite 21 hechos de negocio JSON como CloudEvents 1.0 en modo de contenido binario sobre Kafka. El streaming es opcional. Cuando está habilitado, la integración escribe el estado de negocio y el envelope del evento en el outbox de PostgreSQL dentro de la misma transacción. El outbox relay es el único publicador hacia el broker.

## Contrato de transporte

| Campo | Valor |
| - | - |
| `ce-source` | `plugin-br-pix-jd` |
| Tema | `lerian.streaming.plugin-br-pix-jd` |
| Versión del esquema | `1.0.0` para cada evento |
| Tipo de contenido | `application/json` |
| Entrega | Al menos una vez a través del outbox transaccional |
| Tema de comandos | Ninguno |
| Manifest en tiempo de ejecución | No expuesto |

Configura `STREAMING_ENABLED=true` y `OUTBOX_ENABLED=true` juntos. Si configuras `STREAMING_CLOUDEVENTS_SOURCE`, su valor debe ser exactamente `plugin-br-pix-jd`. Cuando el streaming está desactivado, la integración no escribe eventos de ciclo de vida en el outbox de streaming.

<Warning>
  Esta integración todavía no expone un endpoint de manifest de streaming. Su catálogo de bootstrap contiene solo la definición estructural de `transaction.created`, mientras que los flujos de emisión en producción descritos abajo publican los 21 hechos. Usa esta página como el inventario de eventos actual, no como el catálogo incompleto en tiempo de ejecución.
</Warning>

Deduplica según `(ce-source, ce-id)` y mantén los consumidores idempotentes. La integración no aprovisiona ningún tema de comandos.

## Catálogo de eventos

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

### Transacciones

| Clave del evento | Se dispara cuando |
| - | - |
| `transaction.created` | Se persiste un cash-out externo como pendiente, existe su posting pendiente en Midaz y el envío a JDPI se completa con éxito. |
| `transaction.executed` | Una transferencia interna se completa de forma sincrónica, se aplica un cash-in, o la conciliación liquida un cash-out externo. |
| `transaction.refunded` | Se persiste una transacción de devolución y se vincula a la transacción original. |
| `transaction.failed` | La conciliación mueve un cash-out externo pendiente a su estado de error terminal y cancela el posting pendiente. |

### Claves DICT y reclamaciones

| Clave del evento | Se dispara cuando |
| - | - |
| `key.registered` | Se registra una clave en DICT y se persiste como activa. |
| `key.validation-requested` | La integración almacena y despacha un desafío de validación de propiedad. |
| `key.confirmed` | Se verifica el desafío enviado y la clave sale del estado de espera de confirmación. |
| `key.deleted` | Se elimina una clave en DICT y se elimina de forma lógica localmente. |
| `key.claimed` | Se abre una reclamación en DICT y se persiste su identificador. |
| `key.claim-confirmed` | El donante confirma la reclamación. |
| `key.claim-concluded` | El reclamante concluye la reclamación. |
| `key.claim-cancelled` | Se cancela la reclamación. |

### Autorizaciones de Pix Automático

| Clave del evento | Se dispara cuando |
| - | - |
| `authorization.requested` | El PSP receptor solicita una autorización y la integración la persiste como solicitada. |
| `authorization.accepted` | El pagador acepta la autorización. |
| `authorization.rejected` | La autorización pasa a estado rechazada. |
| `authorization.activated` | La autorización se confirma con éxito y pasa a estado activa. |
| `authorization.cancelled` | La autorización se cancela y se elimina de forma lógica. |

### Programaciones de Pix Automático

| Clave del evento | Se dispara cuando |
| - | - |
| `schedule.requested` | El PSP receptor solicita una programación de pago y la integración la persiste como solicitada. |
| `schedule.accepted` | La programación pasa a estado aceptada. |
| `schedule.rejected` | La programación pasa a estado rechazada. |
| `schedule.cancelled` | La programación se cancela y se elimina de forma lógica. |

## Contratos de payload

Todas las marcas de tiempo son strings UTC en formato RFC 3339. Los valores monetarios de transacciones y Pix Automático son centavos enteros, no strings decimales ni números de punto flotante. Los campos marcados con `?` son opcionales.

<Warning>
  El contrato de wire codifica `amount`, `value` y `payerMaxValue` como tokens numéricos JSON `int64`. Los consumidores de JavaScript que acepten el rango completo de `int64` deben usar un parseo JSON sin pérdida y compatible con BigInt, o rechazar valores por encima de `Number.MAX_SAFE_INTEGER`. El `JSON.parse` estándar puede redondear enteros más grandes.
</Warning>

```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
}

interface KeyEventData {
  id: string
  key: string
  accountId: string
  status: number
  keyType: number
  claimId?: string
  claimType?: number
  createdAt: string
  updatedAt: 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
}
```
