> ## 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 SPI participants

> Returns the full SPI participant directory from §8.6.1 - the same JDPI call GET /v1/banks makes, with every field instead of the ispb-and-name pair: ispb, cnpj, legalName, shortName, participantType (1=direct, 2=indirect), modality (1=transactional-account provider, 2=government entity, 3=special settler, 4=user institution), startedAt, endedAt and status (1=active, 2=inactive, 3=awaiting BACEN activation, 4=activation failed).

Only ispb, shortName, participantType and status are mandatory in §8.6.1; the rest are omitted from a row when JDPI does not send them, so treat them as optional instead of assuming a fixed shape. status and endedAt are what say whether a participant can receive a payment today - a row can be present and inactive.

The route takes no parameters and applies no filter, page or sort, and nothing is cached: the whole directory is fetched live from JDPI on every call, in JDPI's own order. JDPI unreachable or faulting is 503 PIX-1050, and a timeout is 504 PIX-1051.

participantType=2 here means SPI's own classification of an institution as indirect at BACEN, and it says NOTHING about whether that institution is an indirect participant registered with THIS participant. The two are unrelated lists: this one is the national directory, and the institutions this deployment serves are read with GET /v1/indirects. A row being participantType=2 is not a reason to send its ISPB an order or a credit, and an institution registered here does not have to appear as 2 in this directory.



## OpenAPI

````yaml /en/openapi/v3-current/pix.yaml get /v1/banks/participants
openapi: 3.1.0
info:
  description: Brazilian PIX Direct (DICT + SPI) plugin API.
  title: plugin-br-pix-jd
  version: 1.0.0
servers: []
security:
  - BearerAuth: []
paths:
  /v1/banks/participants:
    get:
      tags:
        - Banks
      summary: List SPI participants
      description: >-
        Returns the full SPI participant directory from §8.6.1 - the same JDPI
        call GET /v1/banks makes, with every field instead of the ispb-and-name
        pair: ispb, cnpj, legalName, shortName, participantType (1=direct,
        2=indirect), modality (1=transactional-account provider, 2=government
        entity, 3=special settler, 4=user institution), startedAt, endedAt and
        status (1=active, 2=inactive, 3=awaiting BACEN activation, 4=activation
        failed).


        Only ispb, shortName, participantType and status are mandatory in
        §8.6.1; the rest are omitted from a row when JDPI does not send them, so
        treat them as optional instead of assuming a fixed shape. status and
        endedAt are what say whether a participant can receive a payment today -
        a row can be present and inactive.


        The route takes no parameters and applies no filter, page or sort, and
        nothing is cached: the whole directory is fetched live from JDPI on
        every call, in JDPI's own order. JDPI unreachable or faulting is 503
        PIX-1050, and a timeout is 504 PIX-1051.


        participantType=2 here means SPI's own classification of an institution
        as indirect at BACEN, and it says NOTHING about whether that institution
        is an indirect participant registered with THIS participant. The two are
        unrelated lists: this one is the national directory, and the
        institutions this deployment serves are read with GET /v1/indirects. A
        row being participantType=2 is not a reason to send its ISPB an order or
        a credit, and an institution registered here does not have to appear as
        2 in this directory.
      operationId: listParticipants
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParticipantsBody'
          description: OK
        '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
components:
  schemas:
    ParticipantsBody:
      additionalProperties: false
      properties:
        data:
          description: The SPI participant directory, ordered by ISPB as JDPI returns it.
          items:
            $ref: '#/components/schemas/ParticipantItem'
          type:
            - array
            - 'null'
      required:
        - data
      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
        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.
      type: object
    ParticipantItem:
      additionalProperties: false
      properties:
        cnpj:
          description: The participant CNPJ.
          examples:
            - '04358798000107'
          type: string
        endedAt:
          description: >-
            When the participant was removed from JDPI (dtHrFimPsp),
            yyyy-mm-ddTHH:mm:ss.
          examples:
            - '2020-12-09T22:00:00'
          type: string
        ispb:
          description: >-
            The participant ISPB (§8.6.1 String(8); leading zeros are
            significant).
          examples:
            - '04358798'
          type: string
        legalName:
          description: The participant legal name (razão social).
          examples:
            - Banco JDConsultores
          type: string
        modality:
          description: >-
            Pix arrangement modality (modalidade): 1 = transactional-account
            provider, 2 = government entity, 3 = special settler, 4 = user
            institution.
          examples:
            - 1
          format: int64
          type: integer
        participantType:
          description: >-
            SPI participation type (tpPsp): 1 = direct participant, 2 = indirect
            participant.
          examples:
            - 1
          format: int64
          type: integer
        shortName:
          description: The participant short name (nome reduzido).
          examples:
            - Banco JD
          type: string
        startedAt:
          description: >-
            When the participant was added to JDPI (dtHrInicioPsp),
            yyyy-mm-ddTHH:mm:ss.
          examples:
            - '2020-11-03T06:00:01'
          type: string
        status:
          description: >-
            SPI participation status (stPsp): 1 = active, 2 = inactive, 3 =
            awaiting BACEN activation, 4 = activation failed.
          examples:
            - 1
          format: int64
          type: integer
      required:
        - ispb
        - shortName
        - participantType
        - status
      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
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````