> ## 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.

# Reconcile DICT keys against a BACEN event-list

> CONTINGENCY reconciliation: reconciles an operator-supplied BACEN DICT event-list (CID) against local key state, flagging divergences. Used when the live CID/VSync inventory channel is unavailable. Enumeration/divergence only — no BACEN call, no money, no position.



## OpenAPI

````yaml en/openapi/v3-current/spi-dict.yaml post /api/v1/dict/internal/reconciliation/run-events
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for the DICT (Diretório de Identificadores de Contas
    Transacionais) capability of Lerian SPI, the direct integration between the
    institution and the Brazilian Instant Payment System (SPI/Pix). It covers
    the PIX key lifecycle, portability and ownership claims, infraction reports,
    refunds, fraud markers, synchronous DICT reports, and the internal
    reconciliation and provisioning operations that keep the key directory
    consistent.
  license:
    name: Lerian Studio General License
  title: Lerian SPI — DICT API
  version: 1.0.0
servers:
  - url: https://spi.sandbox.lerian.net
security: []
tags:
  - description: 'PIX key lifecycle: register, list, search, lookup, delete, and statistics.'
    name: Keys
  - description: >-
      PIX key portability and ownership claims through their full lifecycle
      (initiate, confirm, reject, cancel, acknowledge, complete).
    name: Claims
  - description: 'DICT infraction reports: create, list, and retrieve.'
    name: Infractions
  - description: 'DICT refund requests: create, list, and retrieve.'
    name: Refunds
  - description: 'PIX fraud markers: create, list, and statistics.'
    name: Fraud Markers
  - description: >-
      Synchronous reports over Lerian SPI's own DICT record: COUNT(*) summaries
      of keys (by type/status) and claims (by type/status + open-past-deadline).
      COUNT-only — DICT holds no money.
    name: Reports
  - description: >-
      Internal DICT operations: reconciliation runs, participant ISPB
      provisioning, claim deadline processing, and orphaned-key cleanup.
    name: Internal
paths:
  /api/v1/dict/internal/reconciliation/run-events:
    post:
      tags:
        - Internal
      summary: Reconcile DICT keys against a BACEN event-list
      description: >-
        CONTINGENCY reconciliation: reconciles an operator-supplied BACEN DICT
        event-list (CID) against local key state, flagging divergences. Used
        when the live CID/VSync inventory channel is unavailable.
        Enumeration/divergence only — no BACEN call, no money, no position.
      operationId: runEventsReconciliation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventListReconciliationRequest'
              description: >-
                BACEN DICT event-list (CID) to reconcile against local key
                state; at least one event required
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                description: Reconciliation run(s) started, as a bare JSON array
                items:
                  $ref: '#/components/schemas/ReconciliationRunResponse'
                type:
                  - array
                  - 'null'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    EventListReconciliationRequest:
      additionalProperties: false
      properties:
        events:
          description: >-
            BACEN DICT event-list entries to reconcile against local key state;
            must contain at least one event.
          items:
            $ref: '#/components/schemas/EventListEntry'
          type:
            - array
            - 'null'
      required:
        - events
      type: object
    ReconciliationRunResponse:
      additionalProperties: false
      properties:
        discrepancies:
          description: Details of each detected discrepancy; omitted when none were found.
          items:
            $ref: '#/components/schemas/DiscrepancyResponse'
          type:
            - array
            - 'null'
        discrepanciesDetected:
          description: Total count of discrepancies detected during the run.
          examples:
            - 2
          format: int64
          type: integer
        finishedAt:
          description: >-
            Timestamp the run finished, RFC 3339 (UTC); omitted while the run is
            still RUNNING.
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        id:
          description: Unique reconciliation run identifier (UUID).
          examples:
            - 550e8400-e29b-41d4-a716-446655440003
          type: string
        keysChecked:
          description: Number of keys checked against BACEN DICT during the run.
          examples:
            - 24
          format: int64
          type: integer
        mode:
          description: 'Reconciliation mode the run executed with: FULL or INCREMENTAL.'
          examples:
            - FULL
          type: string
        startedAt:
          description: Timestamp the reconciliation run started, RFC 3339 (UTC).
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        status:
          description: 'Run lifecycle status: RUNNING, COMPLETED, or FAILED.'
          examples:
            - COMPLETED
          type: string
      required:
        - id
        - mode
        - status
        - startedAt
        - keysChecked
        - discrepanciesDetected
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    EventListEntry:
      additionalProperties: false
      properties:
        eventId:
          description: BACEN event identifier (opaque, deduplication key).
          examples:
            - evt-7f3a
          type: string
        key:
          description: PIX key value the event refers to.
          examples:
            - alice@example.com
          type: string
        keyType:
          description: 'PIX key type reported by BACEN: CPF, CNPJ, EMAIL, PHONE, or EVP.'
          examples:
            - EMAIL
          type: string
        op:
          description: 'Directory-side operation: CREATED, UPDATED, or DELETED.'
          examples:
            - CREATED
          type: string
        timestamp:
          description: Event timestamp from BACEN, RFC 3339 (UTC); optional.
          examples:
            - '2026-06-21T10:00:00Z'
          type: string
      required:
        - eventId
        - keyType
        - key
        - op
      type: object
    DiscrepancyResponse:
      additionalProperties: false
      properties:
        detectedAt:
          description: Timestamp the discrepancy was detected, RFC 3339 (UTC).
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        discrepancyType:
          description: >-
            Mismatch classification: MISSING_LOCALLY (BACEN has a key local
            storage lacks), MISSING_REMOTELY (local storage has a key BACEN
            lacks), or STALE_DATA (local and BACEN metadata differ).
          examples:
            - STALE_DATA
          type: string
        keyValue:
          description: >-
            PII-masked PIX key value of the mismatching key (suffix-only; most
            characters redacted).
          examples:
            - '***@example.com'
          type: string
        localStatus:
          description: Key status in local storage; empty when the key is MISSING_LOCALLY.
          examples:
            - ACTIVE
          type: string
        remoteStatus:
          description: >-
            Key status reported by BACEN DICT; empty when the key is
            MISSING_REMOTELY.
          examples:
            - ACTIVE
          type: string
      required:
        - keyValue
        - discrepancyType
        - detectedAt
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````