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

# List DICT infractions

> Returns paginated local DICT infraction records.



## OpenAPI

````yaml /pt/openapi/v3-current/spi-dict.yaml get /api/v1/dict/infractions
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, the MED 2.0 dispute
    surface (infraction reports, refunds, fraud markers, and funds recoveries),
    antifraud statistics, synchronous DICT reports, and the internal 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://api.example.com
    description: >-
      Replace the example host with the URL provided during environment
      onboarding.
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: 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: >-
      Durable MED operation-intent status: the operationId every
      create/lifecycle-transition backlog route returns or references on every
      outcome, queryable independently of the business resource.
    name: Operations
  - 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: >-
      DICT 8.4 section 13.2.3 query monitoring: read the query indicators, block
      or release an end user after a founded suspicion, and read the DICT
      request-limiting token buckets.
    name: Query Monitoring
  - description: >-
      DICT synchronism checks transported to BACEN for the participant named in
      X-ISPB: sync verification, CID resolution and CID set events, projected
      verbatim.
    name: VSync
paths:
  /api/v1/dict/infractions:
    get:
      tags:
        - Infractions
      summary: List DICT infractions
      description: Returns paginated local DICT infraction records.
      operationId: listInfractions
      parameters:
        - description: Page size (default 25, max 100)
          explode: false
          in: query
          name: limit
          schema:
            default: 25
            description: Page size (default 25, max 100)
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Page offset (default 0)
          explode: false
          in: query
          name: offset
          schema:
            default: 0
            description: Page offset (default 0)
            format: int64
            minimum: 0
            type: integer
        - description: >-
            Narrows the page to one half of the DICT 8.4 §20.3 seven-day
            backlog: AWAITING_ACKNOWLEDGMENT (still OPEN, nobody has declared it
            received) or AWAITING_ANALYSIS_RESULT (acknowledged, analysis result
            not yet sent). Omit to cover both halves.
          explode: false
          in: query
          name: analysisStage
          schema:
            description: >-
              Narrows the page to one half of the DICT 8.4 §20.3 seven-day
              backlog: AWAITING_ACKNOWLEDGMENT (still OPEN, nobody has declared
              it received) or AWAITING_ANALYSIS_RESULT (acknowledged, analysis
              result not yet sent). Omit to cover both halves.
            enum:
              - AWAITING_ACKNOWLEDGMENT
              - AWAITING_ANALYSIS_RESULT
            examples:
              - AWAITING_ACKNOWLEDGMENT
            type: string
        - description: >-
            Narrows the page to notifications whose seven-day analysis deadline
            falls at or before this instant, ordered most-overdue-first instead
            of newest-first. The deadline is counted from the moment the DICT
            made the notification available as OPEN (Manual de Tempos do Pix
            v7.0 §4.2.1.6). Pass the current instant for the ones already
            expired.
          explode: false
          in: query
          name: analysisDeadlineBefore
          schema:
            description: >-
              Narrows the page to notifications whose seven-day analysis
              deadline falls at or before this instant, ordered
              most-overdue-first instead of newest-first. The deadline is
              counted from the moment the DICT made the notification available
              as OPEN (Manual de Tempos do Pix v7.0 §4.2.1.6). Pass the current
              instant for the ones already expired.
            examples:
              - '2026-06-17T12:00:00Z'
            format: date-time
            type: string
        - description: >-
            Lower bound of the same seven-day window: drops notifications whose
            deadline is at or before this instant. Combine with
            analysisDeadlineBefore to page exactly one alarm gauge's rows —
            analysisDeadlineAfter=<now>&analysisDeadlineBefore=<now+horizon> is
            the due-soon set alone, where an upper bound by itself returns every
            already-expired notification first and can push the actionable rows
            off the page.
          explode: false
          in: query
          name: analysisDeadlineAfter
          schema:
            description: >-
              Lower bound of the same seven-day window: drops notifications
              whose deadline is at or before this instant. Combine with
              analysisDeadlineBefore to page exactly one alarm gauge's rows —
              analysisDeadlineAfter=<now>&analysisDeadlineBefore=<now+horizon>
              is the due-soon set alone, where an upper bound by itself returns
              every already-expired notification first and can push the
              actionable rows off the page.
            examples:
              - '2026-06-17T12:00:00Z'
            format: date-time
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfractionListResponse'
          description: OK
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    InfractionListResponse:
      additionalProperties: false
      properties:
        items:
          description: Local DICT infraction records for the requested limit/offset window.
          items:
            $ref: '#/components/schemas/InfractionResponse'
          type: array
        limit:
          description: Effective page size applied to this response.
          format: int64
          type: integer
        offset:
          description: Zero-based offset of the first item in this page.
          format: int64
          type: integer
        requestId:
          description: >-
            Request-scoped identifier echoing X-Request-ID, for pivoting from
            response to trace. This is OUR OWN echo, distinct from any item's
            bacen.correlationId, which is BACEN's own value.
          type: string
      required:
        - items
        - limit
        - offset
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          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
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      required:
        - correlationId
      type: object
    InfractionResponse:
      additionalProperties: false
      properties:
        acknowledgedAt:
          description: >-
            When a human acknowledged the notification (RFC 3339, UTC) — the
            local evidence that a person, not a scheduler, declared it received.
            Absent while status is OPEN.
          examples:
            - '2026-06-20T10:00:00Z'
          type: string
        analysisDeadlineAt:
          description: >-
            When the DICT 8.4 §20.3 seven-day analysis window closes (RFC 3339,
            UTC), counted from bacenCreationTime. Absent while BACEN's creation
            instant has not been observed — an unknown anchor is not a deadline,
            and a local clock would put the deadline later than the one BACEN
            counts.
          examples:
            - '2026-06-21T12:00:00Z'
          type: string
        analysisDetails:
          description: >-
            Free-text analysis details accompanying analysisResult; omitted
            until close (ours or the counterparty's, via refresh)
          type: string
        analysisResult:
          description: >-
            closeInfractionReport analysis outcome: AGREED or DISAGREED; omitted
            until close (ours or the counterparty's, via refresh)
          enum:
            - AGREED
            - DISAGREED
          examples:
            - AGREED
          type: string
        bacen:
          $ref: '#/components/schemas/BACENEnvelopeResponse'
          description: >-
            BACEN's own operational envelope for its most recent interaction on
            this infraction, including its LastModified version; omitted when no
            BACEN interaction has ever landed on it.
        bacenCreationTime:
          description: >-
            When BACEN created this infraction notification (RFC 3339, UTC);
            distinct from createdAt
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        contactInformation:
          $ref: '#/components/schemas/ContactInformationResponse'
          description: BACEN-echoed regulator-facing contact
        counterpartyISPB:
          description: >-
            BACEN-assigned counterparty participant ISPB
            (ExtendedInfractionReport.CounterpartyParticipant)
          examples:
            - '87654321'
          type: string
        createdAt:
          description: Record creation timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        discoveredAt:
          description: >-
            When THIS deployment first observed a notification created elsewhere
            (RFC 3339, UTC). Read against analysisDeadlineAt it separates an
            operator who did not act on a notification held for six days from a
            rail that discovered it minutes ago already six days old — a blocked
            feed or a deployment that was down. Absent for a notification this
            rail itself reported.
          examples:
            - '2026-06-20T09:00:00Z'
          type: string
        endToEndId:
          description: BACEN end-to-end identifier (E2E ID) of the disputed PIX transaction
          examples:
            - E12345678202607101200D3E4F5A6B7C
          type: string
        fraudMarkerId:
          description: BACEN-assigned fraud marker id, present only after an AGREED close
          examples:
            - 550e8400-e29b-41d4-a716-446655440002
          type: string
        fundsRecoveryId:
          description: >-
            BACEN-assigned funds-recovery id this infraction is linked to (MED
            2.0); omitted for a standalone infraction
          examples:
            - 550e8400-e29b-41d4-a716-446655440003
          type: string
        id:
          description: >-
            BACEN-assigned infraction resource UUID — the public, canonical
            identity of this record
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        infractionAmount:
          description: >-
            BACEN-reported blockable amount, exact decimal
            (ExtendedInfractionReport.InfractionAmount); absent when BACEN's
            response omitted it
          examples:
            - 1500
          type: number
        originOperationId:
          description: >-
            Durable operation-intent id that produced this snapshot's current
            state, when known
          examples:
            - 01930000-0000-7000-8000-000000000000
          type: string
        reason:
          description: >-
            BACEN infraction notification reason: REFUND_REQUEST or
            REFUND_CANCELLED
          examples:
            - REFUND_REQUEST
          type: string
        reportDetails:
          description: >-
            Detail supplied for the counterparty PSP's analysis; present when
            the situation carries one
          type: string
        reportStatus:
          description: >-
            BACEN report delivery state. Always SENT at rest (a resource row is
            persisted only once BACEN has confirmed it; a rejected or ambiguous
            attempt creates no row).
          examples:
            - SENT
          type: string
        reportedByISPB:
          description: >-
            ISPB (8 digits or uppercase letters) of the participant that
            reported the infraction
          examples:
            - '12345678'
          type: string
        reporterISPB:
          description: >-
            BACEN-assigned reporter (payer) participant ISPB
            (ExtendedInfractionReport.ReporterParticipant)
          examples:
            - '12345678'
          type: string
        situationType:
          description: >-
            Situation that gave rise to the infraction: SCAM, ACCOUNT_TAKEOVER,
            COERCION, FRAUDULENT_ACCESS, OTHER, or UNKNOWN
          examples:
            - SCAM
          type: string
        status:
          description: >-
            Local infraction lifecycle state: OPEN, ACKNOWLEDGED, CLOSED, or
            CANCELLED
          examples:
            - OPEN
          type: string
        transactionDepth:
          description: >-
            MED tracking-graph layer of the disputed transaction (DICT 8.5
            TransactionDepth): 1 for the root transaction, 2 for the second
            layer, and so on. Absent when BACEN has not stated a layer — notably
            for notifications answered before the 2026-10-26 vigencia.
          examples:
            - 1
          format: int64
          minimum: 1
          type: integer
        updatedAt:
          description: Last update timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - id
        - endToEndId
        - reportedByISPB
        - reason
        - situationType
        - status
        - reportStatus
        - createdAt
        - updatedAt
      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
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
    BACENEnvelopeResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: >-
            BACEN's own correlation identifier for its most recent interaction
            on this record — the wire value, distinct from any request-scoped
            echo.
          examples:
            - a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
          type: string
        lastModified:
          description: >-
            BACEN's own LastModified for this resource (RFC 3339, UTC) — the
            version this response reflects; present only on the MED resources
            (infraction, refund, fraud marker, funds recovery).
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        responseTime:
          description: >-
            Instant BACEN answered its most recent interaction on this record,
            RFC 3339 (UTC); omitted when BACEN's response carried no parseable
            instant.
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - correlationId
      type: object
    ContactInformationResponse:
      additionalProperties: false
      properties:
        email:
          description: Regulator-facing contact email
          examples:
            - compliance@participant.example
          type: string
        phone:
          description: Regulator-facing contact phone
          examples:
            - '+5511999999999'
          type: string
      required:
        - email
        - phone
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

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