components:
  schemas:
    ActivateCertificateRequest:
      additionalProperties: false
      properties:
        reason:
          description: "Optional operator rationale recorded with the activation submission. The 200-character bound is LERIAN'S OWN, not BACEN's: the rationale is Lerian SPB audit evidence and is not an element of the CodCertifrAtv submission."
          examples:
            - Activating Q2 ICP-Brasil certificate
          maxLength: 200
          type: string
      type: object
    ActivateCertificateResponseWire:
      additionalProperties: false
      properties:
        certificateId:
          description: UUID of the activated OUTBOUND_SIGNING certificate-state row.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        certificateSerial:
          description: Hex serial number of the activated certificate, read from the persisted certificate-state evidence.
          examples:
            - 00A1B2C3D4E5F60718293A4B5C5D6E7F
          type: string
        controlNumber:
          description: IF control number assigned to the GEN0006 submission (official ControleIF, 1-20 characters).
          examples:
            - "20260610000000000001"
          maxLength: 20
          minLength: 1
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        messageType:
          description: STR message code of the submission (always GEN0006 for activation).
          examples:
            - GEN0006
          type: string
        nuOp:
          description: BACEN protocol identifier (NUOp) assigned to the GEN0006 activation submission.
          examples:
            - "12345678202606100000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: Submission status; always SUBMITTED until BACEN's GEN0006R1 acknowledgment flips it to CONFIRMED.
          examples:
            - SUBMITTED
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp when the activation was persisted before dispatch.
          examples:
            - "2026-06-10T18:30:00Z"
          format: date-time
          type: string
      required:
        - certificateId
        - certificateSerial
        - nuOp
        - controlNumber
        - messageType
        - status
        - submittedAt
        - correlationId
      type: object
    ApproveStuckActionRequest:
      additionalProperties: false
      properties:
        reason:
          description: Checker justification, persisted on the case.
          maxLength: 512
          minLength: 1
          type: string
      required:
        - reason
      type: object
    AuditRecordListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Audit records for the current page.
          items:
            $ref: "#/components/schemas/AuditRecordResponse"
          type: array
        limit:
          description: Effective page size applied to this response.
          examples:
            - 20
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when this is the last page. Do not parse.
          type: string
        total:
          description: COUNT(*) of audit records matching the same filters as items, excluding the cursor/limit — the full filtered-set size, stable across pages (a record count, never a monetary sum).
          examples:
            - 57
          format: int64
          type: integer
      required:
        - items
        - limit
        - total
        - correlationId
      type: object
    AuditRecordResponse:
      additionalProperties: false
      properties:
        actionType:
          description: Canonical audit action type that was recorded.
          enum:
            - MESSAGE_SUBMITTED
            - MESSAGE_RETURNED
            - MESSAGE_CANCELLED
            - OPERATION_ACCEPTED
            - OPERATION_RETURNED
            - OPERATION_CANCELLED
            - SETTINGS_UPDATED
            - CERTIFICATE_ROTATED
            - RECONCILIATION_ACTION
            - INBOUND_QUARANTINE_REPLAY
          examples:
            - CERTIFICATE_ROTATED
          type: string
        actorId:
          description: Identifier of the principal that performed the audited action.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        auditId:
          description: Audit record UUID.
          examples:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        correlationId:
          description: Request-scoped correlation identifier under which the action was performed.
          examples:
            - req-7a3f9c2e
          type: string
        details:
          additionalProperties: {}
          description: Sanitized structured details of the action, scrubbed before persistence; omitted when there are none.
          type: object
        occurredAt:
          description: RFC3339 UTC timestamp when the action occurred.
          examples:
            - "2026-05-04T18:30:00Z"
          format: date-time
          type: string
        operationId:
          description: UUID of the related operation when the action is operation-scoped; omitted otherwise.
          examples:
            - 6c8e7e9a-2f3b-4c5d-8e9f-0a1b2c3d4e5f
          format: uuid
          type: string
        resourceId:
          description: Identifier of the targeted resource; omitted when the action has no specific resource.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        resourceType:
          description: Type of resource the action targeted (e.g. certificate, settings).
          examples:
            - certificate
          type: string
        summary:
          description: Human-readable one-line summary of the audited action.
          examples:
            - Certificate rotated successfully
          type: string
      required:
        - auditId
        - actorId
        - actionType
        - resourceType
        - summary
        - correlationId
        - occurredAt
      type: object
    AutoTransferConfigAcceptedResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        nuOp:
          description: SFN operation number stamped on the transmitted LPI0005 frame; the LPI0005R1 ACK correlates back to it.
          examples:
            - "12345678202606190000005"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: "Submit status: dispatch was accepted (the STR ACK arrives asynchronously as LPI0005R1)."
          examples:
            - SUBMITTED
          type: string
        wireCode:
          description: LPI wire code of the auto-transfer config-set (always LPI0005).
          enum:
            - LPI0005
          examples:
            - LPI0005
          type: string
      required:
        - wireCode
        - status
        - correlationId
      type: object
    CapabilityDetailResponse:
      additionalProperties: false
      properties:
        capability:
          $ref: "#/components/schemas/CapabilityResponse"
          description: The requested capability detail.
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
      required:
        - capability
        - correlationId
      type: object
    CapabilityListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Capabilities on this page.
          items:
            $ref: "#/components/schemas/CapabilityResponse"
          type: array
        limit:
          description: Page size applied to this response (max items returned).
          examples:
            - 50
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when there are no further pages.
          type: string
      required:
        - items
        - limit
        - correlationId
      type: object
    CapabilityResponse:
      additionalProperties: false
      properties:
        capabilityId:
          description: "Public capability identifier: the rail's message code (STR0004 on SPB, the ISO 20022 message type pacs.008 on SPI)."
          type: string
        direction:
          description: "Message flow direction: INBOUND (received), OUTBOUND (submitted), or BIDIRECTIONAL."
          enum:
            - INBOUND
            - OUTBOUND
            - BIDIRECTIONAL
          examples:
            - OUTBOUND
          type: string
        disposition:
          description: "Curated coverage disposition for this capability: full — a client transacts or queries this code end to end; notice — a routed inbound notice handled with domain semantics and an emitted event, rather than bare routing; deferred — an explicit, documented deferral of work not built and intended to be; not-addressed — the message exists in the protocol but is addressed to NEITHER leg of this participant, so this deployment can never send or receive it. isAvailable is the coarser boolean and answers a different question: whether the capability can be exercised right now. This answers what coverage is claimed for it."
          enum:
            - full
            - notice
            - deferred
            - not-addressed
          examples:
            - full
          type: string
        handlingMode:
          description: "How the capability may be exercised: PUBLICLY_SUBMITTABLE (caller-initiated), RECEIVE_ONLY (inbound only), LIFECYCLE_RESPONSE (protocol-driven reply), DIAGNOSTIC_ONLY, NOT_APPLICABLE, or NOT_READY."
          enum:
            - PUBLICLY_SUBMITTABLE
            - RECEIVE_ONLY
            - LIFECYCLE_RESPONSE
            - DIAGNOSTIC_ONLY
            - NOT_APPLICABLE
            - NOT_READY
          examples:
            - PUBLICLY_SUBMITTABLE
          type: string
        isAvailable:
          description: Whether the capability is currently available for use.
          examples:
            - true
          type: boolean
        name:
          description: Human-readable capability name.
          type: string
        operationFamily:
          description: Operation family the capability belongs to (bankTransfer on SPB, the ISO 20022 family PACS on SPI).
          type: string
        protocolMetadata:
          additionalProperties: {}
          description: Optional capability-specific protocol metadata (safe codes and feature flags only).
          type: object
        supportsAudit:
          description: Whether the capability records audit evidence.
          examples:
            - true
          type: boolean
        supportsEvents:
          description: Whether the capability emits lifecycle events on the event-delivery surface.
          examples:
            - true
          type: boolean
        supportsInbound:
          description: Whether the capability processes inbound messages from BACEN.
          examples:
            - false
          type: boolean
        supportsSubmission:
          description: Whether the capability accepts caller-initiated submissions.
          examples:
            - true
          type: boolean
      required:
        - capabilityId
        - name
        - operationFamily
        - direction
        - handlingMode
        - isAvailable
        - disposition
        - supportsSubmission
        - supportsInbound
        - supportsEvents
        - supportsAudit
      type: object
    CertificateStatusResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Current state of each certificate in the ICP-Brasil/RSFN set.
          items:
            $ref: "#/components/schemas/CertificateStatusWire"
          type: array
      required:
        - items
        - correlationId
      type: object
    CertificateStatusWire:
      additionalProperties: false
      properties:
        certificateId:
          description: Certificate-state row UUID.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        daysUntilExpiry:
          description: Whole days remaining until expiry; null when expiry is unknown.
          examples:
            - 45
          format: int64
          type: integer
        expiresAt:
          description: RFC3339 UTC expiry timestamp; null when unknown.
          examples:
            - "2027-05-04T18:30:00Z"
          format: date-time
          type: string
        purpose:
          description: "Role this certificate serves: OUTBOUND_SIGNING (signs submissions), INBOUND_PROCESS, BACEN_VERIFICATION, or EXTERNAL_RAIL."
          enum:
            - OUTBOUND_SIGNING
            - INBOUND_PROCESS
            - BACEN_VERIFICATION
            - EXTERNAL_RAIL
          examples:
            - OUTBOUND_SIGNING
          type: string
        readinessImpact:
          description: "Effect of this certificate's state on service readiness: NONE, WARNING, or BLOCKER."
          enum:
            - NONE
            - WARNING
            - BLOCKER
          examples:
            - NONE
          type: string
        status:
          description: "Current validity state: VALID, EXPIRING (within the warning window), EXPIRED, INVALID, or MISSING."
          enum:
            - VALID
            - EXPIRING
            - EXPIRED
            - INVALID
            - MISSING
          examples:
            - VALID
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp of the last certificate-state update.
          examples:
            - "2026-05-04T18:30:00Z"
          format: date-time
          type: string
      required:
        - certificateId
        - purpose
        - status
        - readinessImpact
        - updatedAt
      type: object
    ComposeMessageRequest:
      additionalProperties: false
      properties:
        amount:
          description: "Transfer amount as a decimal string in BRL, minor-unit precision (two decimal places). Forwarded VERBATIM into the submit DTO and the alçada gate — Lerian SPB performs NO arithmetic on it. Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422."
          examples:
            - "150000.00"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        capabilityId:
          description: STR capability code to compose. Required and non-blank. Must resolve in the catalog, be PUBLICLY_SUBMITTABLE, and be in the compose allowlist (STR0004/STR0005/STR0006/STR0007/STR0008/STR0046/STR0047/STR0048/STR0052/STR0053).
          examples:
            - STR0008
          minLength: 1
          type: string
        description:
          description: Optional free-text description; mandatory when purposeCode or finlddCli is 99999 (RSTR0034). Serialized into the STR Hist element.
          examples:
            - Wire transfer for invoice 2026-Q2-A47
          type: string
        finlddCli:
          description: Optional client-level purpose code (5 digits) carried on STR0004/STR0008. When 99999 the description is required (RSTR0034).
          examples:
            - "00001"
          pattern: ^[0-9]{5}$
          type: string
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the submit DTO (NOT sent to BACEN). Do not include sensitive fields.
          type: object
        openFinancePortability:
          $ref: "#/components/schemas/OpenFinancePortabilityGroup"
          description: "STR0052 (portabilidade de crédito no âmbito do Open Finance) elements: the IPOC code of the ported credit operation, its modality and the portability UUID. Required when composing STR0052; refused on any other capabilityId. sender/recipient account, document (CNPJ) and name fill the optional financial-agent groups (RSTR0024)."
        portability:
          $ref: "#/components/schemas/PortabilityGroup"
          description: "STR0047 (portabilidade de operação de crédito de pessoas naturais) elements: the unique portability number and the service provider ISPB. Required when composing STR0047; refused on any other capabilityId. sender/recipient account, document (CNPJ) and name fill the optional financial-agent groups, used only when that IF has no Reservas Bancárias or settlement account (RSTR0024)."
        portabilityReturn:
          $ref: "#/components/schemas/PortabilityReturnGroup"
          description: "STR0048 (devolução de portabilidade indevida) elements: the return reason, the STR control number of the portability credit being returned and the service provider ISPB. The return is unique and for the full amount received (RSTR0033). Required when composing STR0048; refused on any other capabilityId."
        purposeCode:
          description: "BACEN STR purpose code (finalidade), exactly 5 digits, and one the BACEN purpose dictionary names: 176 codes for the institution-level FinlddIF and 113 for the client-level FinlddCli. An unassigned five-digit number is refused. Required for every code that declares a Finalidade element (refused with 422 when absent); omitted for STR0053, which declares none. When 99999 (Outros) a description is mandatory (RSTR0034)."
          examples:
            - "00001"
          pattern: ^[0-9]{5}$
          type: string
        recipient:
          $ref: "#/components/schemas/ComposeParticipantAccount"
          description: Crediting (creditor) participant account receiving the transfer.
        repasse:
          $ref: "#/components/schemas/IBSRepasseGroup"
          description: "STR0053 repasse identification: the [1..1] identifier and date, the optional originator CNPJ and transaction count, and the [0..n] segregation-informe group. Required when composing STR0053; refused on any other capabilityId, which has no repasse element on the wire."
        sender:
          $ref: "#/components/schemas/ComposeParticipantAccount"
          description: Debiting (debtor) participant account originating the transfer.
        split:
          $ref: "#/components/schemas/TaxSplitRequest"
          description: Optional IBS/CBS tax-split group (all three children required when the group is present). Carried on STR0005/STR0007/STR0008.
        taxRepasseReturn:
          $ref: "#/components/schemas/TaxRepasseReturnGroup"
          description: "STR0046 (devolução de repasse de receitas de tributos) elements: collection type and date, the collected and remuneration amounts, the return reason and the STR control number of the repasse being returned. Required when composing STR0046; refused on any other capabilityId."
      required:
        - capabilityId
        - sender
        - recipient
        - amount
      type: object
    ComposeMessageResponse:
      additionalProperties: false
      properties:
        controlNumber:
          description: Participant control number identifying the message on the SPB network (official ControleIF, 1-20 characters).
          examples:
            - "20260621000000000001"
          maxLength: 20
          minLength: 1
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        emissionApprovalId:
          description: "Set ONLY when the emission parked: the maker-checker queue id (equal to messageId). Poll GET /v1/str/emission-approvals to track it. Empty when SUBMITTED immediately."
          examples:
            - 6f2c8a1e-...
          type: string
        messageId:
          description: Internal outbound-message id assigned at persistence time; the key for the approval queue when parked.
          examples:
            - 6f2c8a1e-...
          type: string
        nuOp:
          description: 23-character STR operation number stamped on the composed message (protocol correlation).
          examples:
            - "12345678202606210000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        requiredSignatures:
          description: N-of-M distinct-actor quorum the parked emission must collect (the alçada band requirement). Omitted/0 when SUBMITTED immediately.
          examples:
            - 2
          format: int64
          type: integer
        status:
          description: "Emission status: SUBMITTED (dispatched / liquidatable) or PENDING_APPROVAL (parked awaiting maker-checker quorum)."
          enum:
            - SUBMITTED
            - PENDING_APPROVAL
          examples:
            - PENDING_APPROVAL
          type: string
      required:
        - messageId
        - status
        - nuOp
        - controlNumber
        - correlationId
      type: object
    ComposeParticipantAccount:
      additionalProperties: false
      properties:
        account:
          description: Optional traditional bank account number.
          examples:
            - "123456"
          type: string
        accountType:
          description: "Optional account type, BACEN TpCt: CC (conta corrente), CD (conta de depósito), CG (conta garantida), PG (payment account/conta de pagamento) or PP (savings/poupança). PG is the only code carried in paymentAccount; every other code uses branch + account. CI (conta de investimento) is not accepted: BACEN deactivated it in production on 31/10/2011."
          enum:
            - CC
            - CD
            - CG
            - PG
            - PP
          examples:
            - CC
          type: string
        branch:
          description: Optional bank branch (agência) number.
          examples:
            - "0001"
          type: string
        document:
          description: Holder document (CPF or CNPJ), carried verbatim onto the wire by every composed code that carries a holder document.
          examples:
            - "12345678901"
          type: string
        ispb:
          description: Participant ISPB, the 8-character BACEN institution identifier.
          examples:
            - "12345678"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        name:
          description: Holder name, at most 80 characters (official type Nome), carried by every composed code that carries a holder name.
          examples:
            - João da Silva
          maxLength: 80
          type: string
        paymentAccount:
          description: Optional payment account identifier (conta de pagamento). Required when accountType is PG.
          examples:
            - "00000000123456"
          type: string
      required:
        - ispb
      type: object
    ConnectivityTestRequest:
      additionalProperties: false
      properties:
        certificateNotActivated:
          description: "Send the GEN0001 with SFN header C04 = 1: the frame is signed by a certificate BACEN has not activated yet (Manual de Segurança do SFN v6.00, items 5.6.2 and 5.6.3), so the echo can be tested before the GEN0006 activation. Default false sends the normal C04 = 0 frame."
          examples:
            - false
          type: boolean
        message:
          description: "Optional free-text MsgECO payload echoed back by the counterparty. At most 50 characters (BACEN type MsgECO, Catálogo v5.13 Vol IV: Alfanumérico 0..50; the Vol III GEN0001 sample reads \"texto de ate 50 posicoes\"). Anything longer is refused by the wire facet before BACEN ever sees it."
          examples:
            - connectivity check
          maxLength: 50
          type: string
        recipientIspb:
          description: ISPB of the counterparty participant the echo is addressed to (8 uppercase alphanumeric characters).
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - recipientIspb
      type: object
    ConnectivityTestResponse:
      additionalProperties: false
      properties:
        controlNumber:
          description: IF control number assigned to the GEN0001 submission (official ControleIF, 1-20 characters).
          examples:
            - "20260610000000000001"
          maxLength: 20
          minLength: 1
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        messageType:
          description: STR message code of the submission (always GEN0001 for connectivity tests).
          examples:
            - GEN0001
          type: string
        nuOp:
          description: BACEN protocol identifier (NUOp) assigned to the GEN0001 connectivity-test submission.
          examples:
            - "12345678202606100000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: Submission status; SUBMITTED until the counterparty's GEN0001R1 echo correlates by NUOp and flips it to CONFIRMED.
          examples:
            - SUBMITTED
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp when the submission was persisted before send.
          examples:
            - "2026-06-10T12:00:00Z"
          type: string
      required:
        - nuOp
        - controlNumber
        - messageType
        - status
        - submittedAt
        - correlationId
      type: object
    CorrelationResponse:
      additionalProperties: false
      properties:
        messageType:
          description: Catalogue message type.
          examples:
            - STR0008
          type: string
        operationRef:
          description: Operation identity the row is keyed on.
          type: string
        protocolRef:
          description: Rail protocol control number / reference.
          type: string
      required:
        - operationRef
      type: object
    CreateAutoTransferConfigRequest:
      additionalProperties: false
      properties:
        ccmePercent:
          description: "CCME class: percentage of the CCME balance to auto-transfer, a decimal of up to 3 integer and 2 fractional digits (e.g. 40.5). Set exactly one of ccmePercent or ccmeValue. '0' disables auto-transfer for this class."
          examples:
            - "25"
          type: string
        ccmeValue:
          description: "CCME class: fixed amount in reais to auto-transfer, a decimal of up to 17 integer and 2 fractional digits. Set exactly one of ccmePercent or ccmeValue. '0.00' disables auto-transfer for this class."
          examples:
            - "300.00"
          type: string
        rbClPercent:
          description: "RB/CL class: percentage of the reserve/settlement balance to auto-transfer, a decimal of up to 3 integer and 2 fractional digits (e.g. 40.5). Set exactly one of rbClPercent or rbClValue. '0' disables auto-transfer for this class."
          examples:
            - "50"
          type: string
        rbClValue:
          description: "RB/CL class: fixed amount in reais to auto-transfer, a decimal of up to 17 integer and 2 fractional digits. Set exactly one of rbClPercent or rbClValue. '0.00' disables auto-transfer for this class."
          examples:
            - "1500.25"
          type: string
      type: object
    CreateBankTransferCancellationRequest:
      additionalProperties: false
      properties:
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the legacy submit DTO; not persisted on the cancellation intent.
          type: object
        reason:
          description: Optional free-text reason for the cancellation.
          examples:
            - Client requested cancellation
          type: string
        senderIspb:
          description: ISPB of the participant requesting the cancellation, the 8-character BACEN institution identifier.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - senderIspb
      type: object
    CreateBankTransferOperationRequest:
      additionalProperties: false
      properties:
        amount:
          description: "Transfer amount as a decimal string in BRL, minor-unit precision (two decimal places). Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422."
          examples:
            - "150.00"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        clientReference:
          description: Optional caller-supplied correlation reference echoed back for client-side reconciliation.
          examples:
            - client-ref-1
          type: string
        description:
          description: Optional free-text description carried with the operation.
          examples:
            - Wire transfer for invoice 2026-Q2-A47
          type: string
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the legacy submit DTO. NOT persisted on the operation intent or sanitized payload; do not include sensitive fields (the legacy pipeline sees the raw value).
          type: object
        purposeCode:
          description: "BACEN STR purpose code (finalidade), exactly 5 digits, and one the BACEN purpose dictionary names: 176 codes for the institution-level FinlddIF and 113 for the client-level FinlddCli. An unassigned five-digit number is refused."
          examples:
            - "00001"
          pattern: ^[0-9]{5}$
          type: string
        recipient:
          $ref: "#/components/schemas/OperationParticipantAccount"
          description: Crediting (creditor) participant account receiving the transfer; its party role drives STR-code derivation.
        scheduledExecutionAt:
          description: "Optional future settlement instant for a scheduled (agendada) STR transfer (RFC3339). BACEN window: at most 3 business days ahead, settlement hour must be one of 8/9/10/11/12 (Brasília), and at least 15 minutes ahead for same-day. Absent means immediate."
          examples:
            - "2026-06-23T10:00:00Z"
          format: date-time
          type: string
        sender:
          $ref: "#/components/schemas/OperationParticipantAccount"
          description: Debiting (debtor) participant account originating the transfer; its party role drives STR-code derivation.
        split:
          $ref: "#/components/schemas/TaxSplitRequest"
          description: Optional IBS/CBS tax-split group (all three children required when the group is present). Carried on the derived transfer codes STR0005/STR0007/STR0008.
      required:
        - sender
        - recipient
        - amount
        - purposeCode
      type: object
    CreateBankTransferReturnRequest:
      additionalProperties: false
      properties:
        description:
          description: Optional free-text description of the return (Hist).
          examples:
            - Wrong account
          type: string
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the legacy submit DTO; not persisted on the return intent.
          type: object
        returnCode:
          description: "BACEN return reason (CodDevTransf) of the STR0010: one of the codes the BACEN dicionário de domínios keeps active, without a leading zero (type CodDevTransf, Catálogo v5.13 Vol IV). The retired 10-14, 78, 79 and 81 are refused."
          enum:
            - "1"
            - "2"
            - "3"
            - "4"
            - "5"
            - "6"
            - "7"
            - "8"
            - "9"
            - "15"
            - "16"
            - "17"
            - "18"
            - "19"
            - "20"
            - "21"
            - "22"
            - "23"
            - "24"
            - "25"
            - "26"
            - "27"
            - "28"
            - "29"
            - "31"
            - "40"
            - "51"
            - "52"
            - "53"
            - "61"
            - "63"
            - "68"
            - "69"
            - "70"
            - "71"
            - "72"
            - "73"
            - "74"
            - "75"
            - "76"
            - "77"
            - "80"
            - "82"
            - "83"
            - "84"
            - "85"
            - "86"
          examples:
            - "1"
          type: string
      required:
        - returnCode
      type: object
    CreateDeclaredBankTransferReturnRequest:
      additionalProperties: false
      properties:
        amount:
          description: The credit's full amount, as a decimal string with exactly two places (VlrLanc of the STR0010). The STR refuses an amount above the original's (ESTR0025); no refusal of a smaller one is documented for STR0010.
          examples:
            - "150.00"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        description:
          description: Optional free-text description of the return (Hist).
          examples:
            - Wrong account
          type: string
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the legacy submit DTO; not persisted on the return intent.
          type: object
        numCtrlSTROr:
          description: NumCtrlSTR of the TED credit being returned, as its STR0004R2..STR0008R2 carried it (NumCtrlSTROr of the STR0010; official type Controle, XXXAAAAMMDDnnnnnnnnn, whose date must parse).
          examples:
            - STR20261020000000123
          maxLength: 20
          minLength: 20
          type: string
        originalSenderIspb:
          description: ISPB of the institution that sent the credit (its ISPBIFDebtd), which the return credits.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        returnCode:
          description: "BACEN return reason (CodDevTransf) of the STR0010: one of the codes the BACEN dicionário de domínios keeps active, without a leading zero (type CodDevTransf, Catálogo v5.13 Vol IV). The retired 10-14, 78, 79 and 81 are refused."
          enum:
            - "1"
            - "2"
            - "3"
            - "4"
            - "5"
            - "6"
            - "7"
            - "8"
            - "9"
            - "15"
            - "16"
            - "17"
            - "18"
            - "19"
            - "20"
            - "21"
            - "22"
            - "23"
            - "24"
            - "25"
            - "26"
            - "27"
            - "28"
            - "29"
            - "31"
            - "40"
            - "51"
            - "52"
            - "53"
            - "61"
            - "63"
            - "68"
            - "69"
            - "70"
            - "71"
            - "72"
            - "73"
            - "74"
            - "75"
            - "76"
            - "77"
            - "80"
            - "82"
            - "83"
            - "84"
            - "85"
            - "86"
          examples:
            - "1"
          type: string
      required:
        - numCtrlSTROr
        - amount
        - originalSenderIspb
        - returnCode
      type: object
    CreateIBSRepasseOperationRequest:
      additionalProperties: false
      properties:
        amount:
          description: "Repasse amount as a decimal string in BRL, minor-unit precision (two decimal places). Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422."
          examples:
            - "1500.25"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        clientReference:
          description: Optional caller-supplied correlation reference echoed back for client-side reconciliation.
          examples:
            - ibs-ref-1
          type: string
        cnpjOrigdrRepFinanc:
          description: "Optional repasse-originator CNPJ (official CNPJ type: exactly 14 characters, [0-9A-Z]{12}[0-9]{2}). Omitted from the wire when absent."
          examples:
            - "12345678000199"
          pattern: ^[0-9A-Z]{12}[0-9]{2}$
          type: string
        description:
          description: Optional free-text description carried with the operation.
          examples:
            - Repasse IBS comite gestor
          type: string
        dtRepFinanc:
          description: Financial repasse date in BACEN STR0053 ISO date form (e.g. 2026-06-09). Required and non-blank.
          examples:
            - "2026-06-09"
          minLength: 1
          type: string
        identdRepFinanc:
          description: "Financial-repasse identifier the comitê gestor keys the repasse on (required, 1-50 characters). This service mints no value for it: an absent or blank identifier is refused with 422."
          examples:
            - REP-2026-0001
          maxLength: 50
          minLength: 1
          type: string
        infSeggc:
          description: "Repeating segregation-informe group ([0..n]); each entry requires both an identifier and a timestamp. Absent means the repasse references no informe. No item ceiling is imposed: the official XSD declares maxOccurs='unbounded' and no BACEN rule caps it."
          items:
            $ref: "#/components/schemas/IBSRepasseInfSeggc"
          type:
            - array
            - "null"
        metadata:
          additionalProperties: {}
          description: Opaque client-side metadata forwarded verbatim to the legacy submit DTO. NOT persisted on the operation intent or sanitized payload.
          type: object
        qtdTransc:
          description: Optional transaction count (digits only).
          examples:
            - "10"
          type: string
        recipient:
          $ref: "#/components/schemas/OperationParticipantAccount"
          description: Crediting participant account (comitê gestor) receiving the IBS repasse.
        sender:
          $ref: "#/components/schemas/OperationParticipantAccount"
          description: Debiting participant account originating the IBS repasse.
      required:
        - sender
        - recipient
        - amount
        - identdRepFinanc
        - dtRepFinanc
      type: object
    CreateLDLDepositRequest:
      additionalProperties: false
      properties:
        advisoryId:
          description: ce-id of the registered SILOC deposit-required advisory to deposit; an unknown advisory answers 404, a credit-expected one 422. Receipt of the advisory authorizes no money; this authenticated command does.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
      required:
        - advisoryId
      type: object
    CreateLDLSettlementRequest:
      additionalProperties: false
      properties:
        amount:
          description: The declared total as an unsigned, non-zero decimal-reais string (at most two fractional digits). Forwarded verbatim into VlrLanc — Lerian SPB performs NO arithmetic.
          examples:
            - "1250.00"
          pattern: ^([1-9][0-9]{0,16}(\.[0-9]{1,2})?|0\.(0[1-9]|[1-9][0-9]?))$
          type: string
        detail:
          $ref: "#/components/schemas/LDLSettlementDetailRequest"
          description: "The code-specific fields: control numbers, the debited account pair, the credited counterparty of a return, and the breakdown group."
        messageType:
          description: "Which STR settlement transfer to command: LDL0004 settles a debit net position, LDL0006 returns funds transferred in error, LDL0008 funds events and emissions, LDL0011 moves the câmara current account into its settlement account, LDL0014 funds a deposit. It decides which detail fields are required and which are refused."
          enum:
            - LDL0004
            - LDL0006
            - LDL0008
            - LDL0011
            - LDL0014
          examples:
            - LDL0004
          type: string
        traceabilityId:
          description: This participant's OWN control number for the entry (official ControleIF, 1-20 characters, no leading or trailing spaces), carried verbatim as the command's NumCtrlIF. Reusing one another outbound entry already carries is refused as a conflict.
          examples:
            - LDLSETT0000000000001
          maxLength: 20
          minLength: 1
          type: string
      required:
        - messageType
        - amount
        - traceabilityId
        - detail
      type: object
    CreateLTRTransferRequest:
      additionalProperties: false
      properties:
        amount:
          description: The declared amount as an unsigned, non-zero decimal-reais string (at most two fractional digits). Forwarded verbatim into VlrLanc — Lerian SPB performs NO arithmetic.
          examples:
            - "1250.00"
          pattern: ^([1-9][0-9]{0,16}(\.[0-9]{1,2})?|0\.(0[1-9]|[1-9][0-9]?))$
          type: string
        detail:
          $ref: "#/components/schemas/LTRTransferDetailRequest"
          description: "The code-specific fields: the original control number, the credited account pair, the asset descriptors and the queue-preference level."
        ispbIFCredtd:
          description: ISPB of the credited institution. Required by LTR0003 and LTR0006; refused on LTR0004, whose layout names the câmara as the destination and no credited institution at all. This participant is always the debited side and its own ISPB is server-derived.
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        messageType:
          description: "Which STR transfer to command: LTR0003 moves Reservas Bancárias to another institution and has the STR notify the Câmara, LTR0004 settles this participant's negotiation result into the Câmara's account, LTR0006 returns funds transferred in error. It decides which detail fields are required and which are refused."
          enum:
            - LTR0003
            - LTR0004
            - LTR0006
          examples:
            - LTR0003
          type: string
        traceabilityId:
          description: This participant's OWN control number for the entry (official ControleIF, 1-20 characters, no leading or trailing spaces), carried verbatim as the command's NumCtrlIF — spelled NumCtrlIF_LTR on the LTR0006 wire. Reusing one another outbound entry already carries is refused as a conflict.
          examples:
            - LTRXFER0000000000001
          maxLength: 20
          minLength: 1
          type: string
      required:
        - messageType
        - amount
        - traceabilityId
        - detail
      type: object
    CreateLiquidityTransferRequest:
      additionalProperties: false
      properties:
        accountType:
          description: Counterparty account type. RB_CL = Reservas Bancárias / Conta de Liquidação ((aporte,RB_CL)->LPI0001, (resgate,RB_CL)->LPI0003); CCME = Conta Correspondente a Moeda Eletrônica, own-account only ((aporte,CCME)->LPI0002, (resgate,CCME)->LPI0004). Omitting the key defaults to RB_CL; an explicit empty string is refused.
          enum:
            - RB_CL
            - CCME
          examples:
            - RB_CL
          type: string
        amount:
          description: "Movement amount as a decimal-reais string, forwarded verbatim into the LPI submit — Lerian SPB performs NO arithmetic on it. Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422."
          examples:
            - "1500.25"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        contaPiISPB:
          description: Optional Conta-PI owner ISPB (8 uppercase alphanumeric characters). Empty means the FI's OWN Conta PI (own-account path); a value differing from the issuer ISPB is the liquidante-funded path (RB_CL only). For CCME it must be empty or equal the issuer ISPB — CCME is own-account only.
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        direction:
          description: "Operator-facing movement direction: aporte funds the FI's Conta PI; resgate recalls funds from Conta PI."
          enum:
            - aporte
            - resgate
          examples:
            - aporte
          type: string
        finalidadeLPI:
          description: "Purpose of the Conta-PI withdrawal (wire field FinlddLPI, official type xs:integer totalDigits=2). REQUIRED for a resgate to RB_CL — the only LPI liquidity layout that declares it — and rejected for every other direction/accountType pair. Forwarded verbatim: BACEN publishes no code list for this field, so the participant names the code and Lerian SPB gates its shape only. Distinct from the STR purposeCode (FinlddCli/FinlddIF); do not send one for the other."
          examples:
            - "12"
          pattern: ^[0-9]{1,2}$
          type: string
      required:
        - direction
        - amount
      type: object
    CreateRCOFilingQueryRequest:
      additionalProperties: false
      properties:
        compulsoryCode:
          description: CodRCO — required on both.
          examples:
            - "9"
          type: string
        institutionGroup:
          description: GrupoIFRCO — optional, and read only by the period calendar.
          type: string
        kind:
          description: periodCalendar asks which periods are open and when they close (RCO0001); filingReadBack reads a statement already filed (RCO0003).
          enum:
            - periodCalendar
            - filingReadBack
          examples:
            - periodCalendar
          type: string
        periodEnd:
          description: End of that period. Same treatment.
          format: date
          type: string
        periodStart:
          description: Start of the calculation period a read-back is scoped to. Required for filingReadBack; it does NOT reach the wire — it is what makes the reference-date rule checkable before the round trip is spent.
          format: date
          type: string
        referenceDate:
          description: DtRef — the day being asked about. On a filing read-back it must fall inside the declared period (RRCO0002).
          examples:
            - "2026-09-03"
          format: date
          type: string
      required:
        - kind
        - compulsoryCode
        - referenceDate
      type: object
    CreateRCOFilingRequest:
      additionalProperties: false
      properties:
        compulsoryCode:
          description: CodRCO — which compulsory reserve is being reported.
          examples:
            - "9"
          type: string
        days:
          description: The statement days being filed. Every day must fall inside the declared period — a day outside it is refused here rather than spent on a round trip BACEN would reject.
          items:
            $ref: "#/components/schemas/RCOStatementDayRequest"
          minItems: 1
          type:
            - array
            - "null"
        periodEnd:
          description: DtFimPerCalc — end of the calculation period.
          examples:
            - "2026-09-15"
          format: date
          type: string
        periodStart:
          description: DtIniPerCalc — start of the CALCULATION period, as the period calendar (RCO0001R1) published it.
          examples:
            - "2026-09-01"
          format: date
          type: string
      required:
        - compulsoryCode
        - periodStart
        - periodEnd
        - days
      type: object
    CreateRCOMovementRequest:
      additionalProperties: false
      properties:
        amount:
          description: Movement amount in decimal reais, two places. Forwarded to BACEN verbatim — this rail performs no arithmetic on it and holds no compulsory position.
          examples:
            - "1500000.00"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        beneficiaryCNPJ:
          description: "CNPJIF — carried by a DEPOSIT only (RRCO0004): the institution whose compulsory deposits this movement funds, when that institution holds neither a Reservas Bancárias nor a settlement account. Supplying it on a withdrawal is refused, not ignored."
          examples:
            - "12345678000199"
          pattern: ^[0-9]{14}$
          type: string
        compulsoryCode:
          description: CodRCO — which compulsory reserve the movement is against. The demand-deposit compulsory is refused on both directions (RRCO0005).
          examples:
            - "9"
          type: string
        kind:
          description: Direction of the movement. withdrawal takes value OUT of the compulsory deposits into Reservas Bancárias (RCO0010); deposit funds the compulsory deposits from Reservas Bancárias (RCO0011). The BACEN message code is derived from this server-side.
          enum:
            - withdrawal
            - deposit
          examples:
            - deposit
          type: string
        modality:
          description: CodMod — the optional modality of the reserve.
          examples:
            - "1"
          type: string
        preferenceLevel:
          description: NivelPref — the optional settlement priority the participant asks for. A letter (A/B/C/D) on the official type, not a digit.
          examples:
            - B
          type: string
      required:
        - kind
        - compulsoryCode
        - amount
      type: object
    CreateRCOMovementResponse:
      additionalProperties: false
      properties:
        amount:
          description: Amount commanded, verbatim.
          examples:
            - "1500000.00"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          type: string
        id:
          description: Durable identifier of the commanded movement.
          type: string
        kind:
          description: Direction commanded.
          examples:
            - deposit
          type: string
        messageCode:
          description: BACEN message code derived from the direction.
          examples:
            - RCO0011
          type: string
        nuOp:
          description: Outbound operation number, once the frame is accepted onto the rail.
          examples:
            - "12345678202609150000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlIF:
          description: Participant control number — the handle the BACEN answer echoes, and the key this movement is read back by.
          type: string
        status:
          description: "Projection state. PENDING until the R1 answer arrives: having sent the command is never a settlement."
          examples:
            - PENDING
          type: string
      required:
        - id
        - kind
        - messageCode
        - status
        - amount
      type: object
    CreateRCOReportQueryRequest:
      additionalProperties: false
      properties:
        compulsoryCode:
          description: CodRCO. Required for statement and compliance; OPTIONAL for costs alone, which answers across every reserve when it is blank.
          examples:
            - "9"
          type: string
        kind:
          description: statement reads the compulsory-account movement extrato (RCO0005); compliance reads the position against the requirement (RCO0006); costs reads the cost ledger (RCO0007).
          enum:
            - statement
            - compliance
            - costs
          examples:
            - compliance
          type: string
        modality:
          description: CodMod — optional on all three.
          type: string
        referenceDate:
          description: DtRef — read by the compliance position.
          format: date
          type: string
        windowEnd:
          description: DtFim — read by the statement and the cost ledger.
          format: date
          type: string
        windowStart:
          description: DtIni — read by the statement and the cost ledger.
          format: date
          type: string
      required:
        - kind
      type: object
    CreateReconciliationActionRequest:
      additionalProperties: false
      properties:
        action:
          description: "Recovery action to record: ACKNOWLEDGE, RESOLVE, DISMISS, or INVESTIGATE."
          enum:
            - ACKNOWLEDGE
            - RESOLVE
            - DISMISS
            - INVESTIGATE
          examples:
            - ACKNOWLEDGE
          type: string
        metadata:
          additionalProperties: {}
          description: Optional sanitized JSON object with additional action context (no PII).
          type: object
        reason:
          description: "Operator-supplied human-readable rationale for the action. The 512-character bound is LERIAN'S OWN, not BACEN's: a recovery-action rationale is Lerian SPB audit evidence and never crosses an SFN wire. The case service enforces the same bound as defence in depth."
          examples:
            - investigating with bank
          maxLength: 512
          minLength: 1
          type: string
      required:
        - action
        - reason
      type: object
    CreateRediscountQueryRequest:
      additionalProperties: false
      properties:
        kind:
          description: "Operator-facing consulta kind. The server derives the wire code: eligibleTitlePrice -> RDC0001 (what is one eligible security worth), openPositions -> RDC0006 (what rediscounts does this institution still have open today)."
          enum:
            - eligibleTitlePrice
            - openPositions
          examples:
            - openPositions
          type: string
        maturityDate:
          description: Maturity of that security (DtVenc). Required by kind=eligibleTitlePrice, refused by kind=openPositions.
          examples:
            - "2027-01-01"
          type: string
        startTime:
          description: Optional window start (HrIni) narrowing the answer. kind=openPositions only; BACEN defaults an absent value to the system's opening time.
          examples:
            - "09:00:00"
          pattern: ^[0-9]{2}:[0-9]{2}:[0-9]{2}$
          type: string
        titleId:
          description: Selic identifier of the security whose unit price is asked for (IdentdTitSEL). Required by kind=eligibleTitlePrice, refused by kind=openPositions.
          examples:
            - "100000"
          type: string
      required:
        - kind
      type: object
    CreateRediscountQueryResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Correlation id (the outbound NUOp). Poll GET /v1/str/rediscount-queries/{nuOp} with it.
          examples:
            - "12345678202606150000014"
          type: string
        kind:
          description: Consulta kind, echoed back.
          examples:
            - openPositions
          type: string
        movementDate:
          description: BACEN business date (DtMovto) the consulta was sent for, derived server-side.
          examples:
            - "2026-06-15"
          type: string
        status:
          description: "Projection state: PENDING until the answer arrives."
          examples:
            - PENDING
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the consulta was submitted.
          examples:
            - "2026-06-15T12:00:00Z"
          type: string
        wireCode:
          description: RDC message code the server derived and put on the wire.
          examples:
            - RDC0006
          type: string
      required:
        - id
        - kind
        - wireCode
        - status
        - movementDate
        - submittedAt
        - correlationId
      type: object
    CreateRediscountRequest:
      additionalProperties: false
      properties:
        amount:
          description: "Financed amount (VlrFinanc) in decimal reais, forwarded verbatim — never parsed or multiplied out of quantity x unit price. On a conversion this is the amount of the NEW operation; the original's return amount is returnAmount. A cancellation carries NO amount and supplying one is refused: the RDC0014 layout declares none."
          examples:
            - "1500000.00"
          type: string
        cedentAccount:
          description: Selic account of the securities cedent (CtCed). Contracts only.
          examples:
            - "123456789"
          type: string
        clearingHouseIspb:
          description: ISPB of the clearing house whose collateral release backs the operation (ISPBLDL). contractFlavour=collateralRelease only.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        contractFlavour:
          description: "Which contract entry point (kind=contract only): intraday -> RDC0002, oneBusinessDay -> RDC0003, selicPurchase -> RDC0004, collateralRelease -> RDC0009, consolidation -> RDC0013."
          enum:
            - intraday
            - oneBusinessDay
            - selicPurchase
            - collateralRelease
            - consolidation
          examples:
            - intraday
          type: string
        kind:
          description: "Operator-facing command kind. The server derives the RDC wire code from this plus contractFlavour/paymentForm: contract -> RDC0002/0003/0004/0009/0013, payment -> RDC0007/0008, conversion -> RDC0005, cancellation -> RDC0014."
          enum:
            - contract
            - payment
            - conversion
            - cancellation
          examples:
            - contract
          type: string
        maturityDate:
          description: Maturity of the pledged security (DtVenc). Contracts only.
          examples:
            - "2027-01-01"
          type: string
        originalHandle:
          description: BACEN handle (NumCtrlRDCOr) of the operation this command acts on — the NumCtrlRDC its contract response returned. Required by a payment, a conversion and a cancellation; refused on a contract, which opens an operation rather than acting on one.
          examples:
            - RDC20260615000000001
          type: string
        paymentForm:
          description: "How the payment is funded (kind=payment only): cash -> RDC0007 (own reserves), sale -> RDC0008 (proceeds of selling the pledged securities, which is why only this form carries selicTradeKey)."
          enum:
            - cash
            - sale
          examples:
            - cash
          type: string
        paymentType:
          description: "Payment form (TpPgto), a closed BACEN domain distinguishing a partial payment from a total one. Payments only. Partial payment is first-class and repeatable: the response reports the remaining balance and the operation stays open until it reaches zero."
          examples:
            - T
          type: string
        preferenceLevel:
          description: "Optional settlement priority (NivelPref): A = alta, N = normal. Payments and conversions."
          enum:
            - A
            - "N"
          examples:
            - "N"
          type: string
        recontractTitleQuantity:
          description: Quantity of the NEW operation a conversion opens. Conversions only.
          examples:
            - "1000"
          type: string
        recontractUnitPrice:
          description: Unit price of the NEW operation a conversion opens (Grupo_RDC0005_ConvrRecontr). Conversions only.
          examples:
            - "1052.00000000"
          type: string
        returnAmount:
          description: Amount of the ORIGINAL operation's return leg on a conversion. Kept separate from amount so neither half of a conversion can borrow the other's numbers. Conversions only.
          examples:
            - "1051000.00"
          type: string
        returnTitleQuantity:
          description: Quantity of the ORIGINAL operation's return leg on a conversion (Grupo_RDC0005_VoltaOpOr). Conversions only.
          examples:
            - "1000"
          type: string
        returnUnitPrice:
          description: Unit price the securities return at (PURet) — same eight-decimal price facet as unitPrice. Payments and conversions.
          examples:
            - "1051.00000000"
          type: string
        selicOperation:
          description: "Selic operation number (NumOpSEL) of THIS frame — mandatory on all nine commands. On a payment it is that payment leg's own number, not the contract's: an intermediate partial takes a new number from the institution's daily range while the last one takes back the number the rediscount was granted under."
          examples:
            - "000123"
          type: string
        selicTradeKey:
          description: Selic trade key (ChASEL) binding the rediscount to what backs it. Required by contractFlavour=selicPurchase (the purchase), contractFlavour=collateralRelease (the câmara release) and paymentForm=sale (the sale funding the payment); refused everywhere else.
          examples:
            - "000999"
          type: string
        titleId:
          description: Selic identifier of the security being pledged (IdentdTitSEL). Contracts only.
          examples:
            - "100000"
          type: string
        titleQuantity:
          description: Number of securities pledged (contracts) or returned (payments) — QtdTit.
          examples:
            - "1000"
          type: string
        unitPrice:
          description: Unit price of the pledged security (PU) — a PRICE with eight decimal places, not a money amount. Contracts only.
          examples:
            - "1050.12345678"
          type: string
      required:
        - kind
        - selicOperation
      type: object
    CreateReserveBalanceQueryRequest:
      additionalProperties: false
      properties:
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house (8 uppercase alphanumeric characters).
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - ispbIfLdl
      type: object
    CreateReserveBalanceQueryResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Correlation id (the outbound STR0013 NUOp). Poll GET /v1/str/reserve-balance-queries/{id} for the answer.
          examples:
            - "12345678202606150000013"
          type: string
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        status:
          description: "Projection state: PENDING until the STR0013R1 answer arrives and is projected."
          examples:
            - PENDING
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the STR0013 query was persisted before send.
          examples:
            - "2026-06-15T12:00:00Z"
          type: string
      required:
        - id
        - ispbIfLdl
        - status
        - submittedAt
        - correlationId
      type: object
    CreateReserveStatementQueryRequest:
      additionalProperties: false
      properties:
        dtHrFim:
          description: Optional statement-window end (DtHrFim).
          examples:
            - "2026-06-15T23:59:59"
          type: string
        dtHrIni:
          description: Optional statement-window start (DtHrIni).
          examples:
            - "2026-06-15T00:00:00"
          type: string
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house (8 uppercase alphanumeric characters).
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - ispbIfLdl
      type: object
    CreateReserveStatementQueryResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Correlation id (the outbound STR0014 NUOp). Poll GET /v1/str/reserve-statement-queries/{id} for the answer.
          examples:
            - "12345678202606150000014"
          type: string
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        status:
          description: "Projection state: PENDING until the STR0014R1 answer arrives and is projected."
          examples:
            - PENDING
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the STR0014 query was persisted before send.
          examples:
            - "2026-06-15T12:00:00Z"
          type: string
      required:
        - id
        - ispbIfLdl
        - status
        - submittedAt
        - correlationId
      type: object
    CreateSLBBACENPaymentRequest:
      additionalProperties: false
      properties:
        agreementCnpj:
          description: Optional agreement CNPJ (CNPJConv).
          examples:
            - "00038166000105"
          maxLength: 14
          type: string
        amount:
          description: Payment amount in decimal reais (VlrLanc).
          examples:
            - "2500.75"
          pattern: ^[1-9][0-9]{0,15}\.[0-9]{2}$|^0\.(0[1-9]|[1-9][0-9])$
          type: string
        controlNumberSLBOriginal:
          description: Control number of the SLB0005 credit being returned (RSLB0008). Omit it for a spontaneous payment.
          examples:
            - SLB20260915000000009
          maxLength: 20
          type: string
        description:
          description: Free text (Hist). Mandatory on this message — SLB0002 declares no Hist at all, and that asymmetry is BACEN's.
          examples:
            - DEVOLUCAO DE CREDITO
          maxLength: 200
          minLength: 1
          type: string
        preferenceLevel:
          description: Optional processing preference (NivelPref).
          examples:
            - "0001"
          maxLength: 4
          type: string
        purpose:
          description: BACEN finalidade code (FinlddSLB) of the payment. Mandatory on this message.
          examples:
            - "01"
          maxLength: 4
          minLength: 1
          type: string
      required:
        - purpose
        - amount
        - description
      type: object
    CreateSLBEntryQueryRequest:
      additionalProperties: false
      properties:
        controlNumberSLB:
          description: Entry control number (NumCtrlSLB) — asks for that one entry (RSLB0006). Mutually exclusive with referenceDate.
          examples:
            - SLB20260915000000001
          maxLength: 20
          type: string
        entryKind:
          description: "Optional debit/credit filter (TpDeb_Cred). It is a FILTER, not a mode: it composes with all three."
          enum:
            - D
            - C
          examples:
            - D
          type: string
        referenceDate:
          description: Reference date (DtRef) — asks for all entries of that date (RSLB0005). Mutually exclusive with controlNumberSLB.
          examples:
            - "2026-09-14"
          pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
          type: string
      type: object
    CreateSLBPaymentRequest:
      additionalProperties: false
      properties:
        amount:
          description: The charge's FULL value in decimal reais. SLB admits no partial payment (Catálogo v5.13 Vol I), so anything other than the notified amount is refused.
          examples:
            - "1500.00"
          pattern: ^[1-9][0-9]{0,15}\.[0-9]{2}$|^0\.(0[1-9]|[1-9][0-9])$
          type: string
        controlNumberSLB:
          description: "Control number (NumCtrlSLB) of the charge being paid, as the SLB0001 notice carried it. Rule RSLB0002 makes it mandatory on the wire: a payment that does not name the charge it pays is not a payment of that charge."
          examples:
            - SLB20260915000000001
          maxLength: 20
          minLength: 1
          type: string
        preferenceLevel:
          description: Optional processing preference (NivelPref).
          examples:
            - "0001"
          maxLength: 4
          type: string
      required:
        - controlNumberSLB
        - amount
      type: object
    CreateSMEStatementQueryRequest:
      additionalProperties: false
      properties:
        ispbIEME:
          description: ISPB of the IEME whose conta correspondente a moeda eletrônica (CCME) statement is requested (8 uppercase alphanumeric characters).
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - ispbIEME
      type: object
    CreateSMEStatementQueryResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Correlation id (the outbound SME0003 NUOp). The SME0003R1 answer is correlated to it.
          examples:
            - "12345678202606150000014"
          type: string
        ispbIEME:
          description: ISPB of the IEME whose CCME statement was requested.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        movementDate:
          description: BACEN business date (DtMovto) the statement was requested for, derived server-side — the only filter SME0003 accepts.
          examples:
            - "2026-06-15"
          type: string
        status:
          description: "Projection state: PENDING until the SME0003R1 answer arrives and is projected."
          examples:
            - PENDING
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the SME0003 consulta was submitted.
          examples:
            - "2026-06-15T12:00:00Z"
          type: string
      required:
        - id
        - ispbIEME
        - status
        - movementDate
        - submittedAt
        - correlationId
      type: object
    CreateSMETransferRequest:
      additionalProperties: false
      properties:
        amount:
          description: "Movement amount as a decimal-reais string, forwarded verbatim into the SME submit — Lerian SPB performs NO arithmetic on it. Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422."
          examples:
            - "1500.25"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        counterpartyISPB:
          description: The other party's ISPB. On a deposit it is the OPTIONAL ISPBIEME whose CCME is credited (empty is the own-CCME deposit); on a return it is the REQUIRED credited IEME being paid back. A withdrawal names its credited FI inside creditedAccount instead, so supplying one there is refused.
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        creditedAccount:
          $ref: "#/components/schemas/SMECreditedAccountRequest"
          description: Withdrawal-only credited Reservas Bancárias account (all four children required when the group is present). Absent is the own-account withdrawal. Supplying it on a deposit or return is refused.
        description:
          description: Return-only free-text history (Hist). SME0001 and SME0002 declare no such element, so supplying it there is refused.
          examples:
            - devolucao lancamento indevido
          type: string
        kind:
          description: Operator-facing movement kind. deposit funds an IEME's conta correspondente a moeda eletrônica (CCME) from Reservas Bancárias / Conta de Liquidação (wire SME0001); withdrawal recalls funds out of the CCME (SME0002); return gives back an entry received in error (SME0004).
          enum:
            - deposit
            - withdrawal
            - return
          examples:
            - deposit
          type: string
        originalControlNumber:
          description: "Return-only: the BACEN STR control number (NumCtrlSTROr) of the entry this return reverses. Required on a return; refused on a deposit or withdrawal."
          examples:
            - "20260619000001"
          type: string
      required:
        - kind
        - amount
      type: object
    CreateScheduleQueryRequest:
      additionalProperties: false
      properties:
        dtRef:
          description: "Reference date (Data Referência, DtRef) the STR schedule grid is requested for. Exactly ten characters in AAAA-MM-DD form: DtRef carries BACEN type Data, \"Alfanumérico 10 10, Formato = AAAA-MM-DD\" (Catálogo v5.13 Vol IV; the field-to-type row is Vol IV), so a blank, whitespace-only or free-form date is refused at the door."
          examples:
            - "2026-06-15"
          maxLength: 10
          minLength: 10
          pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
          type: string
        ispbIf:
          description: ISPB of the querying financial institution (8 uppercase alphanumeric characters).
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        tpHrio:
          description: "Schedule type (Tipo Horário): P (padrão/standard) or E (eventual) — the two values BACEN's rules RSTR0001/RSTR0002 name (Catálogo v5.13 Vol IV; type TpHrio, Vol IV, Alfanumérico 1..1). Omit the key to get both standard and eventual grids in force on DtRef (RSTR0003); an explicit empty string is refused."
          enum:
            - P
            - E
          examples:
            - P
          type: string
      required:
        - ispbIf
        - dtRef
      type: object
    CreateScheduleQueryResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        dtRef:
          description: Reference date the schedule grid was requested for.
          examples:
            - "2026-06-15"
          type: string
        id:
          description: Correlation id (the outbound STR0001 NUOp). Poll GET /v1/str/schedule-queries/{id} for the answer.
          examples:
            - "12345678202606150000001"
          type: string
        ispbIf:
          description: ISPB of the querying financial institution.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        status:
          description: "Projection state: PENDING until the STR0001R1 answer arrives and is projected."
          examples:
            - PENDING
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the STR0001 query was persisted before send.
          examples:
            - "2026-06-15T12:00:00Z"
          type: string
      required:
        - id
        - ispbIf
        - dtRef
        - status
        - submittedAt
        - correlationId
      type: object
    DenyEmissionRequest:
      additionalProperties: false
      properties:
        reason:
          description: Optional denial rationale recorded on the failed emission. Defaults to "approval denied".
          examples:
            - out of policy
          type: string
      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
    EmissionApprovalActionResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Outbound message id the action was applied to.
          examples:
            - 6f2c...
          type: string
        quorumReached:
          description: True when this signature met the required quorum and flipped the emission to SUBMITTED (approve only).
          examples:
            - true
          type: boolean
        status:
          description: Post-action message status (SUBMITTED on quorum, PENDING_APPROVAL while awaiting more signers, FAILED on deny).
          examples:
            - SUBMITTED
          type: string
      required:
        - id
        - status
        - quorumReached
        - correlationId
      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
    EventCatalogResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: All control-plane event definitions in the shared catalog.
          items:
            $ref: "#/components/schemas/EventDefinitionResponse"
          type: array
      required:
        - items
        - correlationId
      type: object
    EventDefinitionResponse:
      additionalProperties: false
      properties:
        description:
          description: Human-readable description of when the event is emitted.
          examples:
            - Operation accepted by control plane
          type: string
        eventType:
          description: Canonical control-plane event type identifier (e.g. str.operation.accepted).
          examples:
            - str.operation.accepted
          type: string
        eventVersion:
          description: Semantic version of the event payload schema.
          examples:
            - 1.0.0
          type: string
        isDeprecated:
          description: Whether this event type is deprecated and may be removed in a future version.
          examples:
            - false
          type: boolean
        requiredFields:
          description: Field names guaranteed to be present in the event payload.
          examples:
            -   - operationId
                - operationFamily
                - capabilityId
                - status
          items:
            type: string
          type:
            - array
            - "null"
      required:
        - eventType
        - eventVersion
        - description
        - requiredFields
        - isDeprecated
      type: object
    GENNoticeResponse:
      additionalProperties: false
      properties:
        bacenRefId:
          description: BACEN reference identifying the inbound frame; the idempotency key alongside noticeType.
          examples:
            - "00038166202606100000005"
          type: string
        id:
          description: Row identifier of the persisted notice.
          examples:
            - 0190b3a1-1c2d-7e4f-8a9b-0c1d2e3f4a5b
          type: string
        noticeType:
          description: GEN message code that produced the notice (GEN0001, GEN0004 or GEN0005).
          examples:
            - GEN0005
          type: string
        receivedAt:
          description: RFC3339 UTC timestamp the notice was received from BACEN.
          examples:
            - "2026-06-10T12:00:00Z"
          format: date-time
          type: string
        senderIspb:
          description: ISPB of the announcing participant (official ISPBEmissor), when present.
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        summary:
          additionalProperties: {}
          description: Sanitized, operator-facing official fields of the notice. Never a raw frame echo.
          type: object
      required:
        - id
        - noticeType
        - bacenRefId
        - summary
        - receivedAt
      type: object
    GENNoticesResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        limit:
          description: Effective page size applied to this response.
          examples:
            - 50
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when this is the last page. Do not parse.
          type: string
        notices:
          description: Inbound GEN notices matching the request, most recent first.
          items:
            $ref: "#/components/schemas/GENNoticeResponse"
          type: array
      required:
        - notices
        - limit
        - correlationId
      type: object
    GetRCOMovementOutputBody:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        movement:
          $ref: "#/components/schemas/RCOMovementItem"
      required:
        - movement
        - correlationId
      type: object
    GovernanceBand:
      additionalProperties: false
      properties:
        maxAmountExclusive:
          description: Half-open upper edge of this band as a decimal-reais string; the boundary value belongs to the next band. Bands must be ascending.
          examples:
            - "100000.00"
          type: string
        requiredSignatures:
          description: N-of-M distinct-actor quorum for amounts in this band. 0 means single-step (no approval).
          examples:
            - 2
          format: int64
          type: integer
      required:
        - maxAmountExclusive
        - requiredSignatures
      type: object
    GovernanceConfigDTO:
      additionalProperties: false
      properties:
        bands:
          description: The alçada value-band table (half-open ascending intervals).
          items:
            $ref: "#/components/schemas/GovernanceBand"
          type:
            - array
            - "null"
        perMessageType:
          additionalProperties:
            $ref: "#/components/schemas/GovernancePerMessageRule"
          description: Optional per-message-type signature overrides keyed by catalogue message code (e.g. STR0008).
          type: object
      required:
        - bands
      type: object
    GovernanceConfigResponse:
      additionalProperties: false
      properties:
        bands:
          description: The alçada value-band table (half-open ascending intervals).
          items:
            $ref: "#/components/schemas/GovernanceBand"
          type: array
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        perMessageType:
          additionalProperties:
            $ref: "#/components/schemas/GovernancePerMessageRule"
          description: Optional per-message-type signature overrides keyed by catalogue message code (e.g. STR0008).
          type: object
      required:
        - correlationId
        - bands
      type: object
    GovernancePerMessageRule:
      additionalProperties: false
      properties:
        minAmountForSignature:
          description: Threshold at or above which this override applies; below it the band table governs. Empty means any amount.
          examples:
            - "50000.00"
          type: string
        requiredClass:
          description: "Optional signer-class requirement: REDIG, APROV, PILOT or AUDIT. When set, a signer must additionally hold the mapped class scope; omitting the key means no class gate, while an explicit empty string is refused."
          enum:
            - REDIG
            - APROV
            - PILOT
            - AUDIT
          examples:
            - APROV
          type: string
        requiredSignatures:
          description: N-of-M quorum this override demands. Must be >= 1.
          examples:
            - 2
          format: int64
          type: integer
      required:
        - requiredSignatures
      type: object
    IBSRepasseGroup:
      additionalProperties: false
      properties:
        cnpjOrigdrRepFinanc:
          description: "Optional repasse-originator CNPJ (official CNPJ type: exactly 14 characters, [0-9A-Z]{12}[0-9]{2}). Omitted from the wire when absent."
          examples:
            - "12345678000199"
          pattern: ^[0-9A-Z]{12}[0-9]{2}$
          type: string
        dtRepFinanc:
          description: Financial repasse date in BACEN STR0053 ISO date form (e.g. 2026-06-09). Required and non-blank.
          examples:
            - "2026-06-09"
          minLength: 1
          type: string
        identdRepFinanc:
          description: "Financial-repasse identifier the comitê gestor keys the repasse on (required, 1-50 characters). This service mints no value for it: an absent or blank identifier is refused with 422."
          examples:
            - REP-2026-0001
          maxLength: 50
          minLength: 1
          type: string
        infSeggc:
          description: "Repeating segregation-informe group ([0..n]); each entry requires both an identifier and a timestamp. Absent means the repasse references no informe. No item ceiling is imposed: the official XSD declares maxOccurs='unbounded' and no BACEN rule caps it."
          items:
            $ref: "#/components/schemas/IBSRepasseInfSeggc"
          type:
            - array
            - "null"
        qtdTransc:
          description: Optional transaction count (digits only).
          examples:
            - "10"
          type: string
      required:
        - identdRepFinanc
        - dtRepFinanc
      type: object
    IBSRepasseInfSeggc:
      additionalProperties: false
      properties:
        dtHrInfSeggc:
          description: Segregation-informe timestamp in BACEN STR0053 ISO dateTime form (e.g. 2026-06-09T12:00:00) WITHOUT a timezone offset; the wire validator enforces the BACEN format.
          examples:
            - "2026-06-09T12:00:00"
          minLength: 1
          type: string
        identdInfSeggc:
          description: Segregation-informe identifier the repasse references (1-50 characters).
          examples:
            - SEGGC-INFO-0001
          maxLength: 50
          minLength: 1
          type: string
      required:
        - identdInfSeggc
        - dtHrInfSeggc
      type: object
    InboundQuarantineFrameResponse:
      additionalProperties: false
      properties:
        errorMessage:
          description: The classified failure, untruncated — the reason the evidence row exists.
          type: string
        lastReplayError:
          description: Why the most recent replay attempt failed, verbatim and truncated at the column boundary. Absent when no attempt has failed since the last successful replay. This is where the reason a replay was refused reaches the operator — the command's own response does not carry it, because the reason quotes wire text.
          type: string
        messageCode:
          description: STR/GEN/SME message code as far as it could be read; absent for a frame refused before its code resolved.
          examples:
            - STR0008
          type: string
        nuOp:
          description: BACEN operation reference as far as it could be read, VERBATIM — a quarantined frame routinely carries one the official shape refuses, so this field is deliberately unconstrained; absent when unreadable.
          examples:
            - "1234567820260614000001"
          type: string
        parkKey:
          description: "The frame's identity: the 64-character lowercase sha256 hex of the raw parked bytes. It is the path parameter of the replay command and the row's idempotency key. It is not the frame and nothing authorizes on it."
          examples:
            - 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
          type: string
        quarantineId:
          description: Evidence row UUID — the same id the inbound-quarantine alarm and the INBOUND_QUARANTINED reconciliation case print.
          examples:
            - 2f8d1c40-0a1b-4c2d-8e3f-000000000001
          type: string
        receivedAt:
          description: "RFC3339 UTC instant the frame arrived. The sort anchor: the listing is newest first."
          examples:
            - "2026-09-01T12:00:00Z"
          type: string
        recipientIspb:
          description: Addressed participant ISPB as far as it could be read; absent when unreadable.
          examples:
            - "46026562"
          type: string
        replayedAt:
          description: RFC3339 UTC instant an operator's replay of this frame succeeded. ABSENT is the positive fact 'never replayed' — the frame is still parked and still replayable.
          examples:
            - "2026-09-04T09:30:00Z"
          type: string
        replayedBy:
          description: The operator who commanded the successful replay, as derived from their bearer token. Absent exactly when replayedAt is.
          examples:
            - owner/operator
          type: string
        respondedAt:
          description: "RFC3339 UTC instant a courtesy GEN0004 for this frame was durably recorded. ABSENT means no durable response record exists for these bytes — usually because none was sent, but also when a notice was sent and the stamp failed. A frame that was parked and answered is acknowledged and does not come back, so on that frame an absent stamp is a stamp failure rather than an unanswered counterparty; correlate with the listener WARN naming this quarantine id before re-notifying anything by hand. Of the frames that do come back, only the one whose notice was attempted and failed to persist re-answers; the ones nobody could be told about — nothing readable to quote, a foreign recipient ISPB, no participant ISPB configured — come back and stay silent, so an absent stamp there is the steady state. Re-answering at all is at-least-once by choice: an extra notice is noise, a missing one is silence about a frame BACEN sent us."
          examples:
            - "2026-09-01T12:00:01Z"
          type: string
        senderIspb:
          description: Emitting participant ISPB as far as it could be read; absent when unreadable.
          examples:
            - "12345678"
          type: string
        stage:
          description: "Where the inbound path gave up. Closed vocabulary: delivery_plan, persistence, delivery_finalize, duplicate_event_delivery_timestamp, envelope_decode, xsd_validation, error_return_processing, inbound_routing."
          examples:
            - envelope_decode
          type: string
      required:
        - quarantineId
        - parkKey
        - stage
        - errorMessage
        - receivedAt
      type: object
    InboundQuarantineListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
        items:
          description: Parked inbound frames on this page, newest first.
          items:
            $ref: "#/components/schemas/InboundQuarantineFrameResponse"
          type: array
        limit:
          description: Page size applied to this response (max items returned).
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when there are no further pages.
          type: string
      required:
        - items
        - limit
        - correlationId
      type: object
    InboundQuarantineReplayResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
        parkKey:
          description: The frame's identity, echoed back.
          examples:
            - 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
          type: string
        processed:
          description: True when this command both put the frame back through the inbound path and claimed the row. A concurrent command that lost the claim is refused with 409 instead.
          type: boolean
        quarantineId:
          description: Evidence row UUID of the frame that was replayed.
          examples:
            - 2f8d1c40-0a1b-4c2d-8e3f-000000000001
          type: string
        stage:
          description: The stage the frame had originally been parked at.
          examples:
            - envelope_decode
          type: string
      required:
        - quarantineId
        - parkKey
        - stage
        - processed
        - correlationId
      type: object
    LDLDepositAcceptedResponseWire:
      additionalProperties: false
      properties:
        advisoryEventId:
          type: string
        amountRaw:
          type: string
        commandId:
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        movementDate:
          type: string
        numCtrlIF:
          type: string
        outboundNuOp:
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        product:
          type: string
        side:
          type: string
        status:
          description: ACCEPTED when the frame was queued for the STR, PENDING_APPROVAL when the alçada band parked it awaiting signatures.
          enum:
            - ACCEPTED
            - PENDING_APPROVAL
          type: string
      required:
        - correlationId
        - status
        - commandId
        - outboundNuOp
        - numCtrlIF
        - advisoryEventId
        - product
        - side
        - amountRaw
        - movementDate
      type: object
    LDLSettlementAcceptedResponseWire:
      additionalProperties: false
      properties:
        amountRaw:
          type: string
        commandId:
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        messageType:
          type: string
        movementDate:
          type: string
        numCtrlIF:
          type: string
        outboundNuOp:
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: ACCEPTED when the frame was queued for the STR, PENDING_APPROVAL when the alçada band parked it awaiting signatures.
          enum:
            - ACCEPTED
            - PENDING_APPROVAL
          type: string
      required:
        - correlationId
        - status
        - commandId
        - messageType
        - outboundNuOp
        - numCtrlIF
        - amountRaw
        - movementDate
      type: object
    LDLSettlementDetailRequest:
      additionalProperties: false
      properties:
        agDebtd:
          description: Branch of the debited câmara current account. Required by LDL0011 only.
          examples:
            - "0001"
          type: string
        codProdt:
          description: Product code of the entry being returned. Optional on LDL0006; carried by no other code.
          examples:
            - OT
          type: string
        ctDebtd:
          description: Number of the debited câmara current account. Required by LDL0011 only.
          examples:
            - "000000123456"
          type: string
        entries:
          description: "Per-participant breakdown of the declared total. Required (at least one) by LDL0004/LDL0008/LDL0014, optional on LDL0006, and refused on LDL0011. Lerian SPB never sums it against the total: no BACEN rule requires that reconciliation and doing arithmetic on a declared money total is position-keeping."
          items:
            $ref: "#/components/schemas/LDLSettlementEntryRequest"
          type:
            - array
            - "null"
        ispbIFCredtd:
          description: ISPB of the institution being credited by the return. Required by LDL0006 only; this participant is always the debited side and its own ISPB is server-derived.
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlLDLOr:
          description: The câmara's control number for the cycle being settled, received over the SILOC leg (LDL0001 / LDL0007 / LDL0013). Required by LDL0004, LDL0008, LDL0011 and LDL0014; carried by no other code.
          examples:
            - LDL000000000000001
          type: string
        numCtrlSTROr:
          description: Control number of the ORIGINAL STR entry being returned. Required by LDL0006 only — it is BACEN-issued and echoed verbatim, never minted here.
          examples:
            - "20260919000000000001"
          type: string
      type: object
    LDLSettlementEntryRequest:
      additionalProperties: false
      properties:
        amount:
          description: This entry's magnitude as an unsigned, non-zero decimal-reais string (at most two fractional digits). Forwarded verbatim — Lerian SPB performs NO arithmetic and never reconciles the entries against the declared total.
          examples:
            - "600.10"
          pattern: ^([1-9][0-9]{0,16}(\.[0-9]{1,2})?|0\.(0[1-9]|[1-9][0-9]?))$
          type: string
        cnpjNLiqdant:
          description: CNPJ of the non-liquidating participant this entry belongs to.
          examples:
            - "12345678000195"
          pattern: ^[0-9A-Z]{12}[0-9]{2}$
          type: string
        hist:
          description: Free-text history for the entry. Carried by LDL0006 only.
          examples:
            - Devolucao de credito
          type: string
        identdPartCamr:
          description: The câmara's own 8-character identifier for the participant, when the câmara issued one.
          examples:
            - PART0001
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlActeLDLOr:
          description: Control number of the câmara's acceptance, received on LDL0013 (RLDL0003). Carried by LDL0014 only.
          examples:
            - ACT0000000000000001
          type: string
        numCtrlReqIFOr:
          description: Control number of the originating IF request, received on LDL0013 (RLDL0004). Carried by LDL0014 only.
          examples:
            - REQ0000000000000001
          type: string
        numPgtoLDL:
          description: The câmara's payment number. Carried by LDL0006 and LDL0008.
          examples:
            - "000001"
          type: string
        tpMovtc:
          description: Asset-movement type. Carried by LDL0006 only.
          examples:
            - "1"
          type: string
        tpPgtoLDL:
          description: LDL payment type. Mandatory on LDL0008, optional on LDL0006, carried by no other code.
          examples:
            - "1"
          type: string
      required:
        - cnpjNLiqdant
        - amount
      type: object
    LTRTransferAcceptedResponseWire:
      additionalProperties: false
      properties:
        amountRaw:
          type: string
        commandId:
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        messageType:
          type: string
        movementDate:
          type: string
        numCtrlIF:
          type: string
        outboundNuOp:
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: ACCEPTED when the frame was queued for the STR, PENDING_APPROVAL when the alçada band parked it awaiting signatures.
          enum:
            - ACCEPTED
            - PENDING_APPROVAL
          type: string
      required:
        - correlationId
        - status
        - commandId
        - messageType
        - outboundNuOp
        - numCtrlIF
        - amountRaw
        - movementDate
      type: object
    LTRTransferDetailRequest:
      additionalProperties: false
      properties:
        agCredtd:
          description: Branch of the credited account at the credited institution. Optional on LTR0003 only, and only together with ctCredtd.
          examples:
            - "0001"
          type: string
        ctCredtd:
          description: Number of the credited account at the credited institution. Optional on LTR0003 only, and only together with agCredtd.
          examples:
            - "000000123456"
          type: string
        descAtv:
          description: Free-text asset description. Optional on LTR0003 and LTR0004; refused on LTR0006.
          examples:
            - LFT 010326
          type: string
        hist:
          description: Free-text history for the entry. Optional on all three codes.
          examples:
            - Liquidacao bilateral
          type: string
        nivelPref:
          description: Queue-preference level the STR reads when reserves are short. Optional on LTR0003 only.
          examples:
            - "1"
          type: string
        numCtrlLTROr:
          description: The Câmara's control number for the gross or bilateral result being settled, received over the SILOC leg. Required by LTR0003 and LTR0004; refused on LTR0006.
          examples:
            - LTR000000000000001
          type: string
        numCtrlSTROr:
          description: Control number of the ORIGINAL STR entry being returned. Required by LTR0006 only — it is BACEN-issued and echoed verbatim, never minted here.
          examples:
            - "20260921000000000001"
          type: string
        subTpAtv:
          description: Asset sub-type of the position being settled. Required by LTR0003 and LTR0004; refused on LTR0006, which returns what was moved and describes no asset.
          examples:
            - "0001"
          type: string
      type: object
    LiquidityTransferAcceptedResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        operationId:
          description: Server-assigned operation UUID to poll on GET /v1/str/operations/liquidity-transfers/{operationId}.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        status:
          description: Projection lifecycle status; PENDING on accept (awaiting the STR R-leg settlement confirmation).
          enum:
            - PENDING
            - SETTLED
            - REJECTED
          examples:
            - PENDING
          type: string
        wireCode:
          description: "LPI wire code derived server-side from (direction, accountType): (aporte,RB_CL)=LPI0001, (aporte,CCME)=LPI0002, (resgate,RB_CL)=LPI0003, (resgate,CCME)=LPI0004."
          enum:
            - LPI0001
            - LPI0002
            - LPI0003
            - LPI0004
          examples:
            - LPI0001
          type: string
      required:
        - operationId
        - status
        - wireCode
        - correlationId
      type: object
    LiquidityTransferStatusResponse:
      additionalProperties: false
      properties:
        amount:
          description: Movement amount as a decimal-reais string, verbatim.
          examples:
            - "1500.25"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        direction:
          description: Operator-facing movement direction.
          enum:
            - aporte
            - resgate
          examples:
            - aporte
          type: string
        nuOp:
          description: SFN operation number stamped on the transmitted LPI frame. Empty until the transfer has been submitted to STR.
          examples:
            - "12345678202606190000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlSTR:
          description: STR control number BACEN sent on the R-leg settlement confirmation, verbatim. Empty while PENDING.
          examples:
            - "20260619000001"
          type: string
        operationId:
          description: Operation UUID.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        rejectionReason:
          description: Failure detail when the status is REJECTED. Empty otherwise.
          examples:
            - insufficient reserve balance
          type: string
        sitLancSTR:
          description: STR settlement status BACEN sent on the R-leg, verbatim. Empty while PENDING.
          examples:
            - LIQ
          type: string
        status:
          description: "Projection lifecycle status: PENDING (awaiting the STR R-leg), SETTLED (R-leg confirmed), or REJECTED."
          enum:
            - PENDING
            - SETTLED
            - REJECTED
          examples:
            - PENDING
          type: string
      required:
        - operationId
        - status
        - direction
        - amount
        - correlationId
      type: object
    ListMessagesResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Page of message summaries ordered most-recent-first.
          items:
            $ref: "#/components/schemas/MessageSummary"
          type: array
        limit:
          description: Page size applied to this response (number of items requested).
          examples:
            - 50
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when there are no more results. Presence signals more results, absence signals end-of-list.
          examples:
            - eyJjcmVhdGVkQXQiOiIyMDI2LTA1LTA0VDE4OjMwOjAwWiIsImlkIjoiNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwIn0
          type: string
        total:
          description: Sum of the per-repository (outbound + inbound) COUNT(*) matching the same filters as items, excluding the cursor/limit — the full filtered-set size, stable across pages (a record count, never a monetary sum).
          examples:
            - 318
          format: int64
          type: integer
      required:
        - items
        - limit
        - total
        - correlationId
      type: object
    ListRCOAdvicesOutputBody:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Announced third-party deposits, newest first. Always an array.
          items:
            $ref: "#/components/schemas/RCOAdviceItem"
          type: array
        nextCursor:
          type: string
      required:
        - correlationId
        - items
      type: object
    ListRCOFilingsOutputBody:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Compulsory periods, most recently moved first. Always an array.
          items:
            $ref: "#/components/schemas/RCOFilingItem"
          type: array
        nextCursor:
          type: string
      required:
        - correlationId
        - items
      type: object
    ListRCOMovementsOutputBody:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Commanded movements, newest first. Always an array.
          items:
            $ref: "#/components/schemas/RCOMovementItem"
          type: array
        nextCursor:
          description: Continuation token, absent on the last page.
          type: string
      required:
        - correlationId
        - items
      type: object
    ListSLBObligationsResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        obligations:
          description: "Charges still owed, soonest due first. Always an array: an EMPTY list means nothing is owed, which is an answer and not a missing projection. No total is computed."
          items:
            $ref: "#/components/schemas/SLBObligationItem"
          type: array
      required:
        - obligations
        - correlationId
      type: object
    MessageCorrespondent:
      additionalProperties: false
      properties:
        amount:
          description: Correspondent amount as a decimal string in BRL.
          examples:
            - "150.00"
          pattern: ^[0-9]+(\.[0-9]+)?$
          type: string
        controlNumber:
          description: Control number of the correspondent, when assigned (official ControleIF, 1-20 characters).
          examples:
            - "20260503000000000001"
          maxLength: 20
          minLength: 1
          type: string
        createdAt:
          description: UTC RFC 3339 timestamp at which the correspondent record was created.
          examples:
            - "2026-05-04T18:30:02Z"
          format: date-time
          type: string
        direction:
          description: Flow direction of the correspondent (always the opposite of the primary message).
          enum:
            - INBOUND
            - OUTBOUND
          examples:
            - INBOUND
          type: string
        messageType:
          description: STR message type/code of the correspondent.
          examples:
            - STR0004R2
          type: string
        nuOp:
          description: NUOp of the correspondent message.
          examples:
            - "12345678202605040000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: "Normalized public processing status of the correspondent. PENDING_APPROVAL is the maker-checker parked state: the emission awaits its distinct-actor signatures before it may liquidate."
          enum:
            - SUBMITTED
            - DELIVERED
            - CONFIRMED
            - REJECTED
            - FAILED
            - RETURNED
            - CANCELED
            - RECEIVED
            - PENDING_APPROVAL
          examples:
            - RECEIVED
          type: string
        strStatus:
          description: Raw STR-network status of the correspondent.
          examples:
            - Acatado
          type: string
      required:
        - nuOp
        - messageType
        - status
        - direction
        - createdAt
      type: object
    MessageDetailResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        correspondent:
          $ref: "#/components/schemas/MessageCorrespondent"
          description: "The resolved original<->correspondent counterpart: for an outbound, the inbound response BACEN sent back; for an inbound, the outbound it answers. Absent when no counterpart has been correlated yet."
        message:
          $ref: "#/components/schemas/MessageStatusResponse"
          description: The message's status projection (identifiers, lifecycle, BACEN-receipt fields).
        payload:
          additionalProperties: {}
          description: The structured payload_json persisted for this message (parsed STR fields). Always present.
          type: object
        payloadFormat:
          description: "Availability label for the signed on-wire frame: 'reconstructed' means a frame was retained for this message and is readable at GET /v1/str/messages/{nuOp}/frame (guarded by its own scope), 'structured' means no on-wire bytes were retained and only the payload fields above exist."
          enum:
            - reconstructed
            - structured
          examples:
            - reconstructed
          type: string
      required:
        - message
        - payload
        - payloadFormat
        - correlationId
      type: object
    MessageFrameResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        nuOp:
          description: "STR operation number (NUOp) the frame belongs to, 23 characters: 8-character alphanumeric ISPB + 8-digit date + 7-digit sequence. Echoed so the body identifies itself."
          examples:
            - "12345678202605040000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        payloadFormat:
          description: "Discriminator for this body: 'reconstructed' means reconstructedXml carries the frame, 'structured' means no on-wire bytes were retained for this message and there is no frame to return (a legitimate 200, not an error)."
          enum:
            - reconstructed
            - structured
          examples:
            - reconstructed
          type: string
        reconstructedXml:
          description: The persisted on-wire STR payload decoded to UTF-8 XML, labeled reconstructed (the literal sent bytes are not separately retained). Omitted when payloadFormat is 'structured'.
          type: string
      required:
        - nuOp
        - payloadFormat
        - correlationId
      type: object
    MessageStatusResponse:
      additionalProperties: false
      properties:
        amount:
          description: Message amount as a decimal string in BRL, minor-unit precision (two decimal places).
          examples:
            - "150.00"
          pattern: ^[0-9]+(\.[0-9]+)?$
          type: string
        confirmedAt:
          description: UTC RFC 3339 timestamp at which BACEN confirmed (R1 Acatado) the message — JD's 'Confirmação BC'. Present only for a CONFIRMED outbound.
          examples:
            - "2026-05-04T18:30:05Z"
          format: date-time
          type: string
        controlNumber:
          description: "Control number identifying the message on the SPB network (official ControleIF, 1-20 characters). An outbound row carries the number this participant issued: 8-digit movement date + 12-digit sequence. An inbound row carries the number echoed by the counterparty, whose length is only bounded by the official type. Omitted until assigned."
          examples:
            - "20260503000000000001"
          maxLength: 20
          minLength: 1
          type: string
        createdAt:
          description: UTC RFC 3339 timestamp at which the message record was created.
          examples:
            - "2026-05-04T18:29:55Z"
          format: date-time
          type: string
        description:
          description: Optional free-text description carried with the message.
          examples:
            - Wire transfer for invoice 2026-Q2-A47
          type: string
        direction:
          description: "Message flow direction: OUTBOUND (sent by this participant) or INBOUND (received)."
          enum:
            - INBOUND
            - OUTBOUND
          examples:
            - OUTBOUND
          type: string
        messageType:
          description: STR message type (e.g. STR0004).
          examples:
            - STR0004
          type: string
        mqMessageId:
          description: Broker-assigned message identifier returned by MQPUT — JD's 'ID Recepção BC' on the receipt view. Outbound only.
          examples:
            - 414d5120514d2020202020202020202060f0c2a201a30b25
          type: string
        nuOp:
          description: "STR operation number (NUOp) of the message, 23 characters: 8-character alphanumeric ISPB + 8-digit date + 7-digit sequence."
          examples:
            - "12345678202605040000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        originalControlNumber:
          description: "Control number of the referenced original message for lifecycle (return/cancel) messages: 1-20 characters (official ControleIF). Quoted from the original message, not issued here, so the whole official range is accepted."
          examples:
            - "20260503000000000042"
          maxLength: 20
          minLength: 1
          type: string
        originalNuOp:
          description: For an inbound response, the NUOp of the original outbound message it answers — the correspondent linkage key.
          examples:
            - "12345678202605040000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        purposeCode:
          description: BACEN STR purpose code (finalidade), exactly 5 digits.
          examples:
            - "00001"
          pattern: ^[0-9]{5}$
          type: string
        recipientIspb:
          description: Recipient participant ISPB, the 8-character BACEN institution identifier.
          examples:
            - "00038166"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        resolvedAt:
          description: UTC RFC 3339 timestamp at which the message reached a terminal status; absent while still in flight.
          examples:
            - "2026-05-04T18:30:05Z"
          format: date-time
          type: string
        senderIspb:
          description: Sender participant ISPB, the 8-character BACEN institution identifier.
          examples:
            - "12345678"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        status:
          description: "Normalized public processing status of the message. PENDING_APPROVAL is the maker-checker parked state: the emission landed above its alçada band and awaits its distinct-actor signatures before it may liquidate; it precedes SUBMITTED and appears on the default unfiltered log."
          enum:
            - SUBMITTED
            - DELIVERED
            - CONFIRMED
            - REJECTED
            - FAILED
            - RETURNED
            - CANCELED
            - RECEIVED
            - PENDING_APPROVAL
          examples:
            - DELIVERED
          type: string
        strRejectReason:
          description: BACEN STR rejection reason code when the message was rejected (e.g. AB03).
          examples:
            - AB03
          type: string
        strStatus:
          description: Raw STR-network status string as returned by BACEN (e.g. Acatado) — JD's StatusCode column.
          examples:
            - Acatado
          type: string
        submittedAt:
          description: UTC RFC 3339 timestamp at which the message was submitted; empty until submission.
          examples:
            - "2026-05-04T18:30:00Z"
          format: date-time
          type: string
      required:
        - nuOp
        - messageType
        - direction
        - createdAt
      type: object
    MessageSummary:
      additionalProperties: false
      properties:
        amount:
          description: Message amount as a decimal string in BRL, minor-unit precision (two decimal places).
          examples:
            - "150.00"
          pattern: ^[0-9]+(\.[0-9]+)?$
          type: string
        controlNumber:
          description: Control number identifying the message on the SPB network (official ControleIF, 1-20 characters); an issued number is an 8-digit movement date + a 12-digit sequence. Omitted until assigned (outbound) or absent (inbound).
          examples:
            - "20260503000000000001"
          maxLength: 20
          minLength: 1
          type: string
        createdAt:
          description: UTC RFC 3339 timestamp at which the message record was created — JD's Data/Hora column.
          examples:
            - "2026-05-04T18:29:55Z"
          format: date-time
          type: string
        direction:
          description: "Message flow direction — JD's Fluxo column: OUTBOUND (Enviada) or INBOUND (Recebida)."
          enum:
            - INBOUND
            - OUTBOUND
          examples:
            - OUTBOUND
          type: string
        messageType:
          description: STR message type (e.g. STR0004).
          examples:
            - STR0004
          type: string
        mqMessageId:
          description: Broker-assigned message identifier returned by MQPUT — JD's 'ID Recepção BC'. Outbound only.
          examples:
            - 414d5120514d2020202020202020202060f0c2a201a30b25
          type: string
        nuOp:
          description: "STR operation number (NUOp) of the message, 23 characters: 8-character alphanumeric ISPB + 8-digit date + 7-digit sequence."
          examples:
            - "12345678202605040000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        resolvedAt:
          description: UTC RFC 3339 timestamp at which the message reached a terminal status; absent while still in flight.
          examples:
            - "2026-05-04T18:30:05Z"
          format: date-time
          type: string
        status:
          description: "Normalized public processing status of the message — JD's Situação column. PENDING_APPROVAL is the maker-checker parked state: the emission awaits its distinct-actor signatures before it may liquidate, and reaches this list unfiltered."
          enum:
            - SUBMITTED
            - DELIVERED
            - CONFIRMED
            - REJECTED
            - FAILED
            - RETURNED
            - CANCELED
            - RECEIVED
            - PENDING_APPROVAL
          examples:
            - DELIVERED
          type: string
        strStatus:
          description: Raw STR-network status string as returned by BACEN (e.g. Acatado) — JD's StatusCode column. Absent until BACEN responds.
          examples:
            - Acatado
          type: string
      required:
        - nuOp
        - messageType
        - status
        - direction
        - createdAt
      type: object
    OpenFinancePortabilityGroup:
      additionalProperties: false
      properties:
        codIPOC:
          description: IPOC code of the ported credit operation (CodIPOC, Catálogo v5.13 Vol I), 22 to 67 characters.
          examples:
            - "12345678000199202606010001"
          maxLength: 67
          minLength: 22
          type: string
        identdUniPortdd:
          description: Unique portability identifier in Open Finance (IdentdUniPortdd), UUID.
          examples:
            - 3f2504e0-4f89-41d3-9a0c-0305e82c3301
          pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
          type: string
        modOpCredPortd:
          description: Modality of the ported credit operation (ModOpCredPortd), 2 characters from the BACEN domain.
          examples:
            - "01"
          maxLength: 2
          minLength: 2
          type: string
      required:
        - codIPOC
        - modOpCredPortd
        - identdUniPortdd
      type: object
    OperationAcceptedResponse:
      additionalProperties: false
      properties:
        acceptedAt:
          description: UTC RFC 3339 timestamp at which the command was accepted.
          examples:
            - "2026-05-06T18:30:00Z"
          format: date-time
          type: string
        capabilityId:
          description: STR capability identifier resolved for the accepted operation (e.g. STR0004).
          examples:
            - STR0004
          type: string
        correlationId:
          description: Request correlation identifier for tracing the accept across logs and traces.
          examples:
            - req-7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          type: string
        isReplay:
          description: True when this response replays a prior idempotent accept rather than creating a new operation.
          examples:
            - false
          type: boolean
        operationFamily:
          description: Operation family the accepted command belongs to (e.g. bankTransfer).
          enum:
            - bankTransfer
          examples:
            - bankTransfer
          type: string
        operationId:
          description: Server-assigned operation aggregate UUID used for subsequent status, return, and cancellation calls.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        protocolMetadata:
          $ref: "#/components/schemas/OperationProtocolMetadata"
          description: Optional SAFE protocol correlation fields; present once the operation is mapped to STR wire identifiers.
        status:
          description: Current control-plane lifecycle status of the operation; ACCEPTED on initial accept.
          enum:
            - ACCEPTED
            - SUBMITTED
            - SENT
            - CONFIRMED
            - REJECTED
            - FAILED
            - PENDING_CONFIGURATION
            - PENDING_RECONCILIATION
            - RETURN_REQUESTED
            - RETURNED
            - CANCEL_REQUESTED
            - CANCELLED
            - RECEIVED
            - DELIVERED
          examples:
            - ACCEPTED
          type: string
      required:
        - operationId
        - operationFamily
        - capabilityId
        - status
        - acceptedAt
        - isReplay
        - correlationId
      type: object
    OperationDetail:
      additionalProperties: false
      properties:
        acceptedAt:
          description: RFC3339 UTC timestamp when the operation was accepted by the control plane; omitted until accepted.
          examples:
            - "2026-06-14T12:00:00Z"
          format: date-time
          type: string
        amount:
          description: Transaction amount as a decimal string in BRL, scale 2; omitted when not applicable.
          examples:
            - "150.00"
          type: string
        capabilityId:
          description: STR capability identifier that produced the operation (e.g. STR0004).
          examples:
            - STR0004
          type: string
        clientReference:
          description: Client-supplied reference echoed back for reconciliation; omitted when none was provided.
          examples:
            - client-ref-1
          type: string
        counterpartyISPB:
          description: The 8-character ISPB of the counterparty relative to this participant — the creditor/recipient for OUTBOUND, the debtor/sender for INBOUND. A verbatim copy of the received party identifier; omitted when the operation has no counterparty.
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        createdAt:
          description: RFC3339 UTC timestamp when the operation was first recorded.
          examples:
            - "2026-05-06T18:30:00Z"
          format: date-time
          type: string
        currentStateReason:
          description: Human-readable explanation of the current status (e.g. rejection reason); omitted when the status needs no explanation.
          type: string
        direction:
          description: "Flow direction relative to this participant: OUTBOUND (sent) or INBOUND (received)."
          enum:
            - INBOUND
            - OUTBOUND
          examples:
            - OUTBOUND
          type: string
        links:
          $ref: "#/components/schemas/OperationLinks"
          description: HATEOAS-style links to related resources (timeline, audit records, reconciliation case).
        operationFamily:
          description: Operation family the operation belongs to (e.g. bankTransfer).
          examples:
            - bankTransfer
          type: string
        operationId:
          description: Operation aggregate UUID, stable across the operation lifecycle.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        protocolMetadata:
          $ref: "#/components/schemas/OperationProtocolMetadata"
          description: Curated, safe STR protocol identifiers (nuOp, controlNumber); omitted when none are present.
        resolvedAt:
          description: RFC3339 UTC timestamp when the operation reached a terminal state; omitted while still in flight.
          examples:
            - "2026-06-14T12:05:00Z"
          format: date-time
          type: string
        returnOperationId:
          description: "On a received TED credit, the return operation (STR0010) that stands against it: while it stands the credit cannot be returned again. Omitted when there is none, including after the STR refused the return."
          examples:
            - 0193f2a0-0000-7000-8000-000000000010
          format: uuid
          type: string
        sanitizedPayload:
          additionalProperties: {}
          description: Sanitized projection of the protocol payload; raw protocol bytes are never included.
          type: object
        scheduledExecutionAt:
          description: RFC3339 future settlement instant for a scheduled (agendada) STR transfer; a verbatim copy of the client-supplied schedule timestamp (no computation). Omitted for an immediate, non-scheduled operation.
          examples:
            - "2026-06-23T10:00:00Z"
          format: date-time
          type: string
        status:
          description: Public lifecycle status of the operation.
          enum:
            - ACCEPTED
            - SUBMITTED
            - SENT
            - CONFIRMED
            - REJECTED
            - FAILED
            - PENDING_CONFIGURATION
            - PENDING_RECONCILIATION
            - RETURN_REQUESTED
            - RETURNED
            - CANCEL_REQUESTED
            - CANCELLED
            - RECEIVED
            - DELIVERED
          examples:
            - ACCEPTED
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp of the last lifecycle update.
          examples:
            - "2026-05-06T18:31:00Z"
          format: date-time
          type: string
      required:
        - links
        - operationId
        - operationFamily
        - capabilityId
        - status
        - direction
        - createdAt
        - updatedAt
      type: object
    OperationDetailResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-abc
          type: string
        operation:
          $ref: "#/components/schemas/OperationDetail"
          description: The requested operation's sanitized detail projection.
      required:
        - operation
        - correlationId
      type: object
    OperationLinks:
      additionalProperties: false
      properties:
        auditRecords:
          description: Relative URL of this operation's audit-record collection.
          examples:
            - /v1/str/operations/{operationId}/audit-records
          type: string
        reconciliationCase:
          description: Relative URL of the associated reconciliation case; omitted when no case exists.
          examples:
            - ""
          type: string
        timeline:
          description: Relative URL of this operation's lifecycle timeline.
          examples:
            - /v1/str/operations/{operationId}/timeline
          type: string
      required:
        - timeline
        - auditRecords
      type: object
    OperationListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Operation summaries for the current page.
          items:
            $ref: "#/components/schemas/OperationSummary"
          type: array
        limit:
          description: Effective page size applied to this response.
          examples:
            - 20
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when this is the last page. Do not parse.
          type: string
        total:
          description: COUNT(*) of operations matching the same filters as items, excluding the cursor/limit — the full filtered-set size, stable across pages (a record count, never a monetary sum).
          examples:
            - 142
          format: int64
          type: integer
      required:
        - items
        - limit
        - total
        - correlationId
      type: object
    OperationParticipantAccount:
      additionalProperties: false
      properties:
        account:
          description: Optional traditional bank account number.
          examples:
            - "123456"
          type: string
        accountType:
          description: "Optional account type, BACEN TpCt: CC (conta corrente), CD (conta de depósito), CG (conta garantida), PG (payment account/conta de pagamento) or PP (savings/poupança). PG is the only code carried in paymentAccount; every other code uses branch + account. CI (conta de investimento) is not accepted: BACEN deactivated it in production on 31/10/2011."
          enum:
            - CC
            - CD
            - CG
            - PG
            - PP
          examples:
            - CC
          type: string
        branch:
          description: Optional bank branch (agência) number.
          examples:
            - "0001"
          type: string
        document:
          description: Optional holder document (CPF or CNPJ), carried verbatim onto the wire.
          examples:
            - "12345678901"
          type: string
        ispb:
          description: Participant ISPB, the 8-character BACEN institution identifier.
          examples:
            - "12345678"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        name:
          description: Optional account holder name, at most 80 characters (official type Nome).
          examples:
            - João da Silva
          maxLength: 80
          type: string
        party:
          description: "Domain role of this participant: institution (own-account, no client identity), client (account-holding client), or nonAccountHolder (identified person with no account at the IFs). The transfer's STR code is derived from the sender+recipient roles; omitting the key defaults to institution, while an explicit empty string is refused."
          enum:
            - institution
            - client
            - nonAccountHolder
          examples:
            - institution
          type: string
        paymentAccount:
          description: Optional payment account identifier (conta de pagamento). Required when accountType is PG.
          examples:
            - "00000000123456"
          type: string
      required:
        - ispb
      type: object
    OperationProtocolMetadata:
      additionalProperties: false
      properties:
        controlNumber:
          description: Control number identifying the message on the SPB network (official ControleIF, 1-20 characters); an issued number is an 8-digit movement date + a 12-digit sequence.
          examples:
            - "20260506000000000001"
          maxLength: 20
          minLength: 1
          type: string
        emissionApprovalId:
          description: "Set when the alçada band parked this request: its id in GET /v1/str/emission-approvals. Only the accepted answer carries it; GET never does."
          type: string
        nuOp:
          description: "STR operation number (NUOp), 23 characters: 8-character alphanumeric ISPB + 8-digit date + 7-digit sequence."
          examples:
            - "12345678202605060000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
      type: object
    OperationSummary:
      additionalProperties: false
      properties:
        amount:
          description: Transaction amount as a decimal string in BRL, scale 2; omitted when not applicable.
          examples:
            - "150.00"
          type: string
        capabilityId:
          description: STR capability identifier that produced the operation (e.g. STR0004).
          examples:
            - STR0004
          type: string
        clientReference:
          description: Client-supplied reference echoed back for reconciliation; omitted when none was provided.
          examples:
            - client-ref-1
          type: string
        counterpartyISPB:
          description: The 8-character ISPB of the counterparty relative to this participant — the creditor/recipient for OUTBOUND, the debtor/sender for INBOUND. A verbatim copy of the received party identifier; omitted when the operation has no counterparty.
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        createdAt:
          description: RFC3339 UTC timestamp when the operation was first recorded.
          examples:
            - "2026-05-06T18:30:00Z"
          format: date-time
          type: string
        direction:
          description: "Flow direction relative to this participant: OUTBOUND (sent) or INBOUND (received)."
          enum:
            - INBOUND
            - OUTBOUND
          examples:
            - OUTBOUND
          type: string
        operationFamily:
          description: Operation family the operation belongs to (e.g. bankTransfer).
          examples:
            - bankTransfer
          type: string
        operationId:
          description: Operation aggregate UUID, stable across the operation lifecycle.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        protocolMetadata:
          $ref: "#/components/schemas/OperationProtocolMetadata"
          description: Curated, safe STR protocol identifiers (nuOp, controlNumber); omitted when none are present.
        scheduledExecutionAt:
          description: RFC3339 future settlement instant for a scheduled (agendada) STR transfer; a verbatim copy of the client-supplied schedule timestamp (no computation). Omitted for an immediate, non-scheduled operation.
          examples:
            - "2026-06-23T10:00:00Z"
          format: date-time
          type: string
        status:
          description: Public lifecycle status of the operation.
          enum:
            - ACCEPTED
            - SUBMITTED
            - SENT
            - CONFIRMED
            - REJECTED
            - FAILED
            - PENDING_CONFIGURATION
            - PENDING_RECONCILIATION
            - RETURN_REQUESTED
            - RETURNED
            - CANCEL_REQUESTED
            - CANCELLED
            - RECEIVED
            - DELIVERED
          examples:
            - ACCEPTED
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp of the last lifecycle update.
          examples:
            - "2026-05-06T18:31:00Z"
          format: date-time
          type: string
      required:
        - operationId
        - operationFamily
        - capabilityId
        - status
        - direction
        - createdAt
        - updatedAt
      type: object
    OperationTimelineEntryResponse:
      additionalProperties: false
      properties:
        details:
          additionalProperties: {}
          description: Sanitized structured details for the event; omitted when there are none.
          type: object
        eventType:
          description: Lifecycle event type that produced this entry (e.g. OPERATION_ACCEPTED).
          examples:
            - OPERATION_ACCEPTED
          type: string
        occurredAt:
          description: RFC3339 UTC timestamp when this lifecycle event occurred.
          examples:
            - "2026-06-14T12:00:00Z"
          format: date-time
          type: string
        operationId:
          description: UUID of the operation this entry belongs to.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        source:
          description: Subsystem that emitted the event.
          enum:
            - CLIENT
            - CONTROL_PLANE
            - EXTERNAL_RAIL
            - RECONCILIATION
            - EVENT_DELIVERY
          examples:
            - CONTROL_PLANE
          type: string
        status:
          description: Operation status recorded at this point in the timeline.
          examples:
            - ACCEPTED
          type: string
        summary:
          description: Human-readable one-line summary of the timeline event.
          type: string
        timelineId:
          description: Timeline entry UUID.
          examples:
            - 3f1c9d2a-7b44-4e91-8a2c-1e1234567891
          format: uuid
          type: string
      required:
        - timelineId
        - operationId
        - eventType
        - status
        - occurredAt
        - source
        - summary
      type: object
    OperationTimelineResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Timeline entries for the current page, ordered occurred_at ascending.
          items:
            $ref: "#/components/schemas/OperationTimelineEntryResponse"
          type: array
        limit:
          description: Effective page size applied to this response.
          examples:
            - 100
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when this is the last page. Do not parse.
          type: string
      required:
        - items
        - limit
        - correlationId
      type: object
    OperationalAggregateBucketResponse:
      additionalProperties: false
      properties:
        bucketEnd:
          description: RFC3339 UTC timestamp of the bucket's exclusive upper bound.
          examples:
            - "2026-06-14T13:00:00Z"
          type: string
        bucketStart:
          description: RFC3339 UTC timestamp of the bucket's inclusive lower bound.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
        count:
          description: Number of operations falling in this bucket.
          examples:
            - 24
          format: int64
          type: integer
        operationFamily:
          description: Operation family this bucket aggregates; omitted when the bucket is not family-scoped.
          type: string
        status:
          description: Lifecycle status this bucket aggregates; omitted when the bucket is not status-scoped.
          type: string
      required:
        - bucketStart
        - bucketEnd
        - count
      type: object
    OperationalAggregatesResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        endDate:
          description: RFC3339 UTC inclusive upper bound of the queried range.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
        items:
          description: Aggregate buckets ordered by bucket_start ascending; empty until the aggregation worker has populated data.
          items:
            $ref: "#/components/schemas/OperationalAggregateBucketResponse"
          type: array
        startDate:
          description: RFC3339 UTC inclusive lower bound of the queried range.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
        window:
          description: "Aggregation window applied to the buckets: 'hour' or 'day'."
          examples:
            - hour
          type: string
      required:
        - window
        - startDate
        - endDate
        - items
        - correlationId
      type: object
    OperationalSummaryResponse:
      additionalProperties: false
      properties:
        certificateWarnings:
          description: Count of certificates in any non-VALID status.
          examples:
            - 24
          format: int64
          type: integer
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        operationCounts:
          additionalProperties:
            format: int64
            type: integer
          description: Operation counts keyed by the synthesized "<family>:<status>" string; clients parse the key shape.
          type: object
        readiness:
          $ref: "#/components/schemas/ReadinessSummary"
          description: Embedded readiness summary (status, blockers, warnings).
        reconciliationBacklog:
          description: Count of reconciliation cases in open or in-progress state.
          examples:
            - 24
          format: int64
          type: integer
        updatedAt:
          description: RFC3339 UTC timestamp when this summary was computed.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
      required:
        - readiness
        - operationCounts
        - reconciliationBacklog
        - certificateWarnings
        - updatedAt
        - correlationId
      type: object
    OperatorAffordanceResp:
      additionalProperties: false
      properties:
        reasonCode:
          description: Stable machine code for display + telemetry only.
          type: string
        requirement:
          description: "Gating tier: DIRECT, APPROVAL_REQUIRED, or ADVISORY."
          examples:
            - DIRECT
          type: string
        semanticsNote:
          description: Display-only note clarifying what the verb does on this row.
          type: string
        verb:
          description: Operator intent this affordance authorizes on the row.
          examples:
            - RESOLVE
          type: string
      required:
        - verb
        - requirement
      type: object
    PendingApprovalResponse:
      additionalProperties: false
      properties:
        amount:
          description: "The message's OWN declared amount (decimal reais), projected verbatim. Empty when the message carries no amount."
          examples:
            - "150000.00"
          type: string
        approvalDeadline:
          description: RFC3339 UTC instant past which the parked emission expires to FAILED.
          examples:
            - "2026-06-21T12:00:00Z"
          format: date-time
          type: string
        createdAt:
          description: RFC3339 UTC instant the emission was first persisted.
          examples:
            - "2026-06-20T12:00:00Z"
          format: date-time
          type: string
        id:
          description: Outbound message id — the path key for approve/deny.
          examples:
            - 6f2c...
          type: string
        messageType:
          description: Catalogue message code the parked emission carries.
          examples:
            - STR0008
          type: string
        nuOp:
          description: 23-character STR operation number (protocol correlation).
          examples:
            - "12345678202606200000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        requestedBy:
          description: Maker actor subject (the principal that submitted the emission).
          examples:
            - user:maker
          type: string
        requiredClass:
          description: "Per-message-type signer-class requirement (psti-05): one of REDIG/APROV/PILOT/AUDIT, or empty when no class rule applies. When set, a signer must additionally hold the mapped class scope."
          examples:
            - APROV
          type: string
        requiredSignatures:
          description: N-of-M distinct-actor quorum the emission must collect (the alçada band requirement).
          examples:
            - 2
          format: int64
          type: integer
        signatures:
          description: The distinct-actor signatures collected so far (actor subjects).
          items:
            $ref: "#/components/schemas/PendingApprovalSignatureResponse"
          type: array
        signaturesCount:
          description: Number of distinct-actor signatures collected so far.
          examples:
            - 1
          format: int64
          type: integer
      required:
        - id
        - nuOp
        - messageType
        - requiredSignatures
        - signaturesCount
        - signatures
        - approvalDeadline
        - createdAt
      type: object
    PendingApprovalSignatureResponse:
      additionalProperties: false
      properties:
        actorType:
          description: Principal class (USER / SERVICE / SYSTEM).
          examples:
            - USER
          type: string
        display:
          description: Optional non-PII display name.
          type: string
        subject:
          description: Stable actor subject of the signer.
          examples:
            - user:alice
          type: string
      required:
        - subject
      type: object
    PendingApprovalsListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Emissions parked in PENDING_APPROVAL, newest first.
          items:
            $ref: "#/components/schemas/PendingApprovalResponse"
          type: array
        limit:
          description: Page size applied to this response (max items returned).
          examples:
            - 50
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when exhausted. Presence signals more results, absence signals end-of-list.
          type: string
        total:
          description: COUNT(*) of emissions parked in PENDING_APPROVAL — the same predicate as items, excluding the cursor/limit (a record count, never a monetary sum).
          examples:
            - 6
          format: int64
          type: integer
      required:
        - items
        - limit
        - total
        - correlationId
      type: object
    PortabilityGroup:
      additionalProperties: false
      properties:
        ispbPrestd:
          description: ISPB of the portability service provider (ISPBPrestd).
          examples:
            - "11112222"
          pattern: ^[0-9A-Z]{8}$
          type: string
        nuPortdd:
          description: Unique portability number (NUPortdd, Catálogo v5.13 Vol I), 21 characters.
          examples:
            - "202606010000000000047"
          maxLength: 21
          minLength: 21
          type: string
      required:
        - nuPortdd
        - ispbPrestd
      type: object
    PortabilityReturnGroup:
      additionalProperties: false
      properties:
        codDevPortdd:
          description: Portability return reason code (CodDevPortdd, Catálogo v5.13 Vol I), numeric, up to 2 digits.
          examples:
            - "2"
          pattern: ^[0-9]{1,2}$
          type: string
        ispbPrestd:
          description: ISPB of the portability service provider (ISPBPrestd).
          examples:
            - "11112222"
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlSTROr:
          description: STR control number of the portability credit being returned (NumCtrlSTROr; official type Controle, 20 characters).
          examples:
            - STR20260601000000048
          maxLength: 20
          minLength: 20
          type: string
      required:
        - codDevPortdd
        - numCtrlSTROr
        - ispbPrestd
      type: object
    RCOAdviceItem:
      additionalProperties: false
      properties:
        amount:
          description: VlrLanc as BACEN sent it, verbatim.
          type: string
        bacenTimestamp:
          description: DtHrBC, verbatim text.
          type: string
        creditedAccount:
          type: string
        creditedBranch:
          type: string
        creditedISPB:
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        depositorCNPJ:
          description: CNPJIF — the institution whose compulsory deposits the movement funds.
          type: string
        id:
          type: string
        messageCode:
          examples:
            - RCO0019
          type: string
        movementDate:
          description: DtMovto, verbatim text.
          type: string
        numCtrlSTR:
          description: The STR control number — the only handle this advice carries, because this rail commanded nothing.
          type: string
        receivedAt:
          description: When this rail received the advice — its own clock, and what the window filters bound.
          format: date-time
          type: string
      required:
        - id
        - messageCode
        - numCtrlSTR
        - creditedISPB
        - depositorCNPJ
        - amount
        - bacenTimestamp
        - movementDate
        - receivedAt
      type: object
    RCOFilingItem:
      additionalProperties: false
      properties:
        amendmentDeadline:
          description: DtFimAlt — the last day to AMEND. A different date from the filing deadline, never derived from it.
          type: string
        averageCash:
          description: VlrMedCx — verbatim.
          type: string
        calcPeriodEnd:
          type: string
        calcPeriodStart:
          description: DtIniPerCalc — the window a filing declares.
          type: string
        complianceDeduction:
          description: VlrDeducCump — verbatim.
          type: string
        compulsoryCode:
          examples:
            - "9"
          type: string
        filedDayCount:
          description: How many days of the period carry a filed statement. A count of rows, not a sum of money.
          format: int64
          type: integer
        filingDeadline:
          description: DtFimInf — the last day to FILE.
          type: string
        id:
          type: string
        ispbIF:
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        lastFiledAt:
          format: date-time
          type: string
        modality:
          type: string
        movementPeriodEnd:
          type: string
        movementPeriodStart:
          description: DtIniPerMovtc — the window a requirement is computed over. A recomputation names only this start, which is why it can be present while the end is not.
          type: string
        requirementAt:
          format: date-time
          type: string
        requirementCash:
          description: VlrExiglddEsp — verbatim.
          type: string
        requirementSecurities:
          description: VlrExiglddTit — verbatim.
          type: string
        requirementSource:
          description: "Which message published the standing requirement: RCO0002R1 (the answer to our filing), RCO0003R1 (the read-back) or RCO0014 (BACEN's own recomputation)."
          type: string
        status:
          description: OPEN, PARTIAL, FILED, AMENDED or UNFILED.
          examples:
            - PARTIAL
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - id
        - ispbIF
        - compulsoryCode
        - status
        - filedDayCount
        - updatedAt
      type: object
    RCOMovementItem:
      additionalProperties: false
      properties:
        amount:
          description: Amount commanded, verbatim.
          examples:
            - "1500000.00"
          type: string
        beneficiaryCNPJ:
          type: string
        compulsoryCode:
          examples:
            - "9"
          type: string
        createdAt:
          format: date-time
          type: string
        id:
          type: string
        kind:
          examples:
            - deposit
          type: string
        messageCode:
          examples:
            - RCO0011
          type: string
        modality:
          type: string
        movementDate:
          examples:
            - "2026-09-15"
          type: string
        nuOp:
          examples:
            - "12345678202609150000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlIF:
          type: string
        numCtrlRCO:
          description: BACEN's own handle for the entry, once answered.
          type: string
        numCtrlSTR:
          description: The STR control number, when the posting reached the STR.
          type: string
        preferenceLevel:
          type: string
        rejectionReason:
          type: string
        settledAt:
          description: "This rail's clock when the movement settled. Empty unless SETTLED: sitLancAt dates a rejection or cancellation."
          format: date-time
          type: string
        sitLancAt:
          description: DtHrSit — the situation timestamp BACEN sent, verbatim text.
          type: string
        sitLancRCO:
          description: "The situation BACEN sent, VERBATIM. It is served beside the status and not replaced by it: three settled codes read as anything but settled (contingency, optimisation) and two pending ones read as final (Registrado)."
          type: string
        status:
          description: PENDING, SETTLED, REJECTED or CANCELED — the class derived from the situation BACEN sent.
          examples:
            - SETTLED
          type: string
      required:
        - id
        - kind
        - messageCode
        - status
        - compulsoryCode
        - amount
        - movementDate
        - createdAt
      type: object
    RCOStatementDayRequest:
      additionalProperties: false
      properties:
        items:
          description: Incidence items of the day, at least one.
          items:
            $ref: "#/components/schemas/RCOStatementItemRequest"
          minItems: 1
          type:
            - array
            - "null"
        mode:
          description: "IndrIncl_Alt — I files the day for the first time (inclusão), A amends a day already filed (alteração): the two values of type IndrIA in the BACEN dicionário de domínios (Catálogo v5.13 Vol IV)."
          enum:
            - I
            - A
          examples:
            - I
          type: string
        referenceDate:
          description: DtRefDmstr — the day this statement covers. It must fall inside the declared calculation period.
          examples:
            - "2026-09-01"
          format: date
          type: string
      required:
        - referenceDate
        - mode
        - items
      type: object
    RCOStatementItemRequest:
      additionalProperties: false
      properties:
        amount:
          description: VlrItemDmstr — the item balance, verbatim.
          examples:
            - "250000.00"
          type: string
        itemCode:
          description: CodItemBaseIncid — the accounting item of the incidence base, four characters (type CodItem, Catálogo v5.13 Vol IV).
          examples:
            - "1010"
          maxLength: 4
          minLength: 4
          type: string
      required:
        - itemCode
        - amount
      type: object
    RCOSubmittedResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          type: string
        messageCode:
          description: BACEN message code actually sent.
          examples:
            - RCO0002
          type: string
        nuOp:
          description: Outbound operation number.
          examples:
            - "12345678202609150000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlIF:
          description: Participant control number — the handle the answer echoes.
          type: string
        status:
          description: Emission state of the frame. The ANSWER arrives asynchronously.
          examples:
            - SUBMITTED
          type: string
        submittedAt:
          description: When the frame was submitted.
          type: string
      required:
        - messageCode
        - status
        - nuOp
        - numCtrlIF
        - submittedAt
      type: object
    RailCapabilitiesResponse:
      additionalProperties: false
      properties:
        hasCrashWindowRecovery:
          description: True only for SPB (evidence-first crash-window recovery).
          type: boolean
        hasDeadlineExpiry:
          description: True when the rail detects and surfaces operations past a deadline (detection-only; an operator terminalizes them, the rail never auto-mutates).
          type: boolean
        hasDeadlineSweep:
          description: True when a background sweep re-attempts/ages stuck rows.
          type: boolean
        hasDlqReplay:
          description: True when the rail exposes an operator DLQ list/replay surface.
          type: boolean
        hasInboundStuckDetection:
          description: True when the rail detects inbound messages stuck mid-processing.
          type: boolean
        rail:
          description: Rail this manifest describes.
          examples:
            - spb
          type: string
        replayNowWired:
          description: True when an operator REPLAY actually re-sends stored bytes.
          type: boolean
        supportedVerbs:
          description: Closed set of verbs this rail can ever offer on any row.
          items:
            type: string
          type: array
      required:
        - rail
        - supportedVerbs
        - hasCrashWindowRecovery
        - hasDeadlineSweep
        - hasDlqReplay
        - hasInboundStuckDetection
        - hasDeadlineExpiry
        - replayNowWired
      type: object
    ReadinessCheckResponse:
      additionalProperties: false
      properties:
        message:
          description: Human-readable explanation of the check's current state.
          examples:
            - certificate valid for 45 days
          type: string
        name:
          description: Name of the readiness check (e.g. certificate, database).
          examples:
            - certificate
          type: string
        severity:
          description: "Impact severity of the check's current state: INFO, WARN, or BLOCKER."
          enum:
            - INFO
            - WARN
            - BLOCKER
          examples:
            - INFO
          type: string
        status:
          description: Readiness status of this individual check.
          enum:
            - READY
            - PENDING_CONFIGURATION
            - DEGRADED
            - UNAVAILABLE
          examples:
            - READY
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp when this check was last evaluated.
          examples:
            - "2026-05-04T18:30:00Z"
          format: date-time
          type: string
      required:
        - name
        - status
        - severity
        - message
        - updatedAt
      type: object
    ReadinessResponse:
      additionalProperties: false
      properties:
        checks:
          description: Per-subsystem readiness checks that compose the aggregate status.
          items:
            $ref: "#/components/schemas/ReadinessCheckResponse"
          type: array
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        status:
          description: Aggregate readiness status derived from all individual checks.
          enum:
            - READY
            - PENDING_CONFIGURATION
            - DEGRADED
            - UNAVAILABLE
          examples:
            - READY
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp when the readiness snapshot was produced.
          examples:
            - "2026-05-04T18:30:00Z"
          format: date-time
          type: string
      required:
        - status
        - checks
        - updatedAt
        - correlationId
      type: object
    ReadinessSummary:
      additionalProperties: false
      properties:
        blockers:
          description: Messages for conditions that block readiness; empty when there are none.
          examples:
            -   - "redis: connection refused"
          items:
            type: string
          type: array
        status:
          description: Aggregate readiness status.
          enum:
            - READY
            - PENDING_CONFIGURATION
            - DEGRADED
            - UNAVAILABLE
          examples:
            - READY
          type: string
        warnings:
          description: Messages for non-blocking conditions that need attention; empty when there are none.
          examples:
            -   - certificate expires in 12 days
          items:
            type: string
          type: array
      required:
        - status
        - blockers
        - warnings
      type: object
    ReconciliationActionResponse:
      additionalProperties: false
      properties:
        actionId:
          description: UUID of the newly recorded reconciliation action.
          examples:
            - b4e8f1a2-6c3d-4f57-9a10-1e1234567893
          type: string
        auditId:
          description: UUID of the audit record linked to the action; empty only when audit is not wired. The action and its audit record commit together.
          examples:
            - c5f9a2b3-7d4e-4068-ab21-1e1234567894
          type: string
        case:
          $ref: "#/components/schemas/ReconciliationCaseResponse"
          description: The reconciliation case after the action transition was applied.
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
        status:
          description: "Resulting case status after the action: OPEN, IN_PROGRESS, RESOLVED, or DISMISSED."
          examples:
            - IN_PROGRESS
          type: string
      required:
        - case
        - actionId
        - status
        - auditId
        - correlationId
      type: object
    ReconciliationCaseEnvelope:
      additionalProperties: false
      properties:
        case:
          $ref: "#/components/schemas/ReconciliationCaseResponse"
          description: The requested reconciliation case.
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
      required:
        - case
        - correlationId
      type: object
    ReconciliationCaseResponse:
      additionalProperties: false
      properties:
        createdAt:
          description: RFC3339 UTC row insertion timestamp.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
        nuOp:
          description: BACEN protocol identifier (NUOp) of the send the case concerns; null when the case names an operation, or a BACEN notice that names no send of this rail.
          examples:
            - "12345678202606140000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        openedAt:
          description: RFC3339 UTC timestamp when the case was first detected.
          examples:
            - "2026-06-14T12:00:00Z"
          type: string
        operationFamily:
          description: "Family the case is filed under, for filter reads: the message-catalogue family (str_capability) of the send its nuOp names, else of its protocolMessageType; bankTransfer when the catalogue lists neither."
          examples:
            - bankTransfer
          type: string
        operationId:
          description: UUID of the str_operation this case is bound to; omitted for protocol-only anomalies discovered before an operation bridge exists.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          type: string
        protocolControlNumber:
          description: "Control number the anomaly's message carries (1-20 characters): its NumCtrlIF or NumCtrlSTR, or the NumCtrlSLBOr or NumCtrlRDCOr a BACEN notice quotes; null when not applicable."
          examples:
            - "20260614000000000001"
          maxLength: 20
          minLength: 1
          type: string
        protocolMessageType:
          description: STR message code involved in the anomaly; null when not applicable.
          examples:
            - STR0004
          type: string
        reasonCode:
          description: Candidate reason the case was opened (operator-facing string, not a fixed enum).
          type: string
        recommendedAction:
          description: Optional suggested next step (e.g. INVESTIGATE, DISMISS, RESUBMIT); a hint, not a contract; null when absent.
          examples:
            - INVESTIGATE
          type: string
        reconciliationId:
          description: Reconciliation case row UUID.
          examples:
            - 9a2b7c1d-3e4f-4a90-8b21-1e1234567892
          type: string
        resolvedAt:
          description: RFC3339 UTC timestamp when the case transitioned to RESOLVED or DISMISSED; null while still open/in-progress.
          examples:
            - "2026-06-14T12:30:00Z"
          type: string
        status:
          description: "Case lifecycle state: OPEN, IN_PROGRESS, RESOLVED, or DISMISSED."
          examples:
            - OPEN
          type: string
        summary:
          description: Short safe operator-facing description of the case (no raw protocol payloads or PII).
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp of the last mutation; updated on every state transition.
          examples:
            - "2026-06-14T12:30:00Z"
          type: string
      required:
        - reconciliationId
        - operationFamily
        - status
        - reasonCode
        - summary
        - openedAt
        - createdAt
        - updatedAt
      type: object
    ReconciliationListResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
        items:
          description: Reconciliation cases on this page, ordered by openedAt DESC.
          items:
            $ref: "#/components/schemas/ReconciliationCaseResponse"
          type: array
        limit:
          description: Page size applied to this response (max items returned).
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when there are no further pages.
          type: string
        total:
          description: COUNT(*) of reconciliation cases matching the same filters as items, excluding the cursor/limit — the full filtered-set size, stable across pages (a record count, never a monetary sum).
          format: int64
          type: integer
      required:
        - items
        - limit
        - total
        - correlationId
      type: object
    RediscountAcceptedResponse:
      additionalProperties: false
      properties:
        amount:
          description: "Commanded amount, verbatim. A cancellation reports \"0\": the RDC0014 layout carries no amount, so this is a structural zero meaning the command moves no value — never a claim about the operation being cancelled."
          examples:
            - "1500000.00"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Rediscount operation UUID. Poll GET /v1/str/operations/rediscounts/{operationId} with it.
          examples:
            - 9f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f
          format: uuid
          type: string
        kind:
          description: Operator-facing command kind, echoed back.
          examples:
            - contract
          type: string
        nuOp:
          description: SFN operation number stamped on the transmitted frame. It is the handle the response leg correlates on.
          examples:
            - "12345678202606150000014"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        status:
          description: Lifecycle state. PENDING on a fresh accept; a frame the alçada parked waits for its signatures before the wire.
          examples:
            - PENDING
          type: string
        wireCode:
          description: RDC message code the server derived and put on the wire.
          examples:
            - RDC0002
          type: string
      required:
        - id
        - kind
        - wireCode
        - status
        - amount
        - correlationId
      type: object
    RediscountQueryStatusResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        fileIdentifier:
          description: Identifier of the file holding the remainder of a TRUNCATED answer (IdentdArq). It is RECORDED so an operator can collect it out of band; nothing in this rail fetches it.
          examples:
            - RDC0006-20260615-0001
          type: string
        id:
          description: Correlation id (the outbound NUOp).
          examples:
            - "12345678202606150000014"
          type: string
        ispbif:
          description: ISPB of the querying institution.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        movementDate:
          description: BACEN business date (DtMovto) the consulta asked about.
          examples:
            - "2026-06-15"
          type: string
        sitCons:
          description: Answer-completeness code BACEN sent (SitCons), verbatim.
          examples:
            - "1"
          type: string
        status:
          description: "PENDING until BACEN answers. ANSWERED once the whole answer arrived in the message itself and was projected. TRUNCATED whenever the projected rows are NOT the whole answer: BACEN either cut the message short (SitCons 5 or 7) or answered entirely by file (SitCons 6). In every one of those cases the missing part — the remainder, or the whole of it — exists only as a file named by fileIdentifier, retrievable out of band by an operator, and nothing in this rail fetches it. So TRUNCATED is never a complete position, and reading these rows as one understates it."
          enum:
            - PENDING
            - ANSWERED
            - TRUNCATED
          examples:
            - ANSWERED
          type: string
        wireCode:
          description: RDC message code that was put on the wire.
          examples:
            - RDC0006
          type: string
      required:
        - id
        - wireCode
        - ispbif
        - status
        - movementDate
        - correlationId
      type: object
    RediscountStatusResponse:
      additionalProperties: false
      properties:
        amount:
          description: Commanded amount, verbatim.
          examples:
            - "1500000.00"
          type: string
        bacenStatusAt:
          description: "BACEN's own situation timestamp (DtHrSit), verbatim as the wire spells it. Deliberately not parsed: BACEN's clock and this deployment's are two different facts."
          examples:
            - "2026-06-15T09:30:00"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Rediscount operation UUID.
          examples:
            - 9f1c2d3e-4b5a-6c7d-8e9f-0a1b2c3d4e5f
          format: uuid
          type: string
        kind:
          description: Operator-facing command kind.
          examples:
            - contract
          type: string
        movementDate:
          description: BACEN business date (DtMovto) the frame was sent for.
          examples:
            - "2026-06-15"
          type: string
        nuOp:
          description: SFN operation number of the transmitted frame. Empty when the submit failed.
          examples:
            - "12345678202606150000014"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlRDC:
          description: Handle BACEN minted for this operation. Every later message quotes it as originalHandle.
          examples:
            - RDC20260615000000001
          type: string
        numCtrlSTR:
          description: "Settlement reference BACEN sent. Its ABSENCE on an accepted operation is the pending state, not a missing field: a SETTLED operation always carries it, because it is the only evidence a Reservas Bancárias entry exists."
          examples:
            - STR20260615000001
          type: string
        originalHandle:
          description: BACEN handle of the operation this command acted on. Empty on a contract.
          examples:
            - RDC20260615000000001
          type: string
        rejectionReason:
          description: Operator-facing reason the operation went REJECTED.
          type: string
        remainingBalance:
          description: Remaining balance (SldAtl) BACEN REPORTED on a payment response, verbatim as text. Never derived by subtracting a payment from a contract. The operation stays open until it reaches zero.
          examples:
            - "500000.00"
          type: string
        selicOperation:
          description: Selic operation number this frame carried.
          examples:
            - "000123"
          type: string
        settledAt:
          description: "RFC3339 UTC timestamp this deployment projected the settling answer — a freshness stamp, never a BACEN fact. Kept on CONVERTED; empty on every status that never settled: bacenStatusAt dates a rejection or cancellation."
          examples:
            - "2026-06-15T12:30:01Z"
          format: date-time
          type: string
        sitLancRDC:
          description: BACEN situation code (SitLancRDC), verbatim.
          examples:
            - "16"
          type: string
        status:
          description: "Lifecycle state. PENDING = submitted, nothing heard. ACCEPTED = BACEN took the request and Selic is HOLDING it for want of securities — registered, NOT settled, no settlement fact emitted. SETTLED = a Reservas Bancárias entry exists (numCtrlSTR proves it). REJECTED = BACEN refused it. CANCELLED = withdrawn, or swept at STR close. CONVERTED = liquidated by a conversion, or rolled into one business day by the end-of-day sweep. SETTLED is deliberately NOT terminal: a settled rediscount is still an open borrowing until it is repaid."
          enum:
            - PENDING
            - ACCEPTED
            - SETTLED
            - REJECTED
            - CANCELLED
            - CONVERTED
          examples:
            - ACCEPTED
          type: string
        supersededById:
          description: "Set when a conversion liquidated this operation: the id of the replacement that superseded it."
          format: uuid
          type: string
        wireCode:
          description: RDC message code that was put on the wire.
          examples:
            - RDC0002
          type: string
      required:
        - id
        - kind
        - wireCode
        - status
        - amount
        - selicOperation
        - movementDate
        - correlationId
      type: object
    ReportMovementDirectionTotalResponse:
      additionalProperties: false
      properties:
        amountTotal:
          description: SUM of the declared amount across every messageType for this direction, decimal reais (centavos-exact).
          examples:
            - "9876543.21"
          type: string
        count:
          description: Total message count across every messageType for this direction.
          examples:
            - 128
          format: int64
          type: integer
        direction:
          description: Message direction the grand total covers.
          examples:
            - OUTBOUND
          type: string
      required:
        - direction
        - amountTotal
        - count
      type: object
    ReportMovementResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        fromDate:
          description: RFC3339 UTC inclusive lower bound of the queried range.
          examples:
            - "2026-05-01T00:00:00Z"
          type: string
        rows:
          description: Per (messageType, direction) SUM(amount) + COUNT, ordered by messageType then direction.
          items:
            $ref: "#/components/schemas/ReportMovementRowResponse"
          type: array
        toDate:
          description: RFC3339 UTC inclusive upper bound of the queried range.
          examples:
            - "2026-05-31T23:59:59Z"
          type: string
        totals:
          description: Grand total (SUM + COUNT) per direction across every messageType.
          items:
            $ref: "#/components/schemas/ReportMovementDirectionTotalResponse"
          type: array
      required:
        - fromDate
        - toDate
        - rows
        - totals
        - correlationId
      type: object
    ReportMovementRowResponse:
      additionalProperties: false
      properties:
        amountTotal:
          description: SUM of the declared amount over the group, decimal reais, accumulated in centavos (never float). "0.00" when no row in the group carried an amount.
          examples:
            - "1234567.89"
          type: string
        count:
          description: Number of messages in the group.
          examples:
            - 42
          format: int64
          type: integer
        direction:
          description: "Message direction: OUTBOUND (sent) or INBOUND (received)."
          examples:
            - OUTBOUND
          type: string
        messageType:
          description: STR/LPI message code this aggregate groups.
          examples:
            - STR0008
          type: string
      required:
        - messageType
        - direction
        - amountTotal
        - count
      type: object
    ReportRejectedItemResponse:
      additionalProperties: false
      properties:
        createdAt:
          description: RFC3339 UTC timestamp the message was persisted.
          examples:
            - "2026-05-01T09:30:00Z"
          type: string
        direction:
          description: "Message direction: OUTBOUND (sent) or INBOUND (received)."
          examples:
            - OUTBOUND
          type: string
        messageType:
          description: STR/LPI message code.
          examples:
            - STR0008
          type: string
        nuOp:
          description: Message NUOp (23-character BACEN operation identifier).
          examples:
            - "12345678202605010000001"
          maxLength: 23
          minLength: 23
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        rejectReason:
          description: BACEN rejection reason, projected verbatim. Omitted when empty.
          examples:
            - RSTR0008-12
          type: string
      required:
        - nuOp
        - messageType
        - direction
        - createdAt
      type: object
    ReportRejectedResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        fromDate:
          description: RFC3339 UTC inclusive lower bound of the queried range.
          examples:
            - "2026-05-01T00:00:00Z"
          type: string
        items:
          description: Rejected messages ordered by (createdAt DESC, id DESC).
          items:
            $ref: "#/components/schemas/ReportRejectedItemResponse"
          type: array
        nextCursor:
          description: Opaque continuation token for the next page; absent when there are no more pages. Presence signals more results, absence signals end-of-list.
          type: string
        toDate:
          description: RFC3339 UTC inclusive upper bound of the queried range.
          examples:
            - "2026-05-31T23:59:59Z"
          type: string
        totalCount:
          description: Total rejected messages for the filter (independent of pagination).
          examples:
            - 7
          format: int64
          type: integer
      required:
        - fromDate
        - toDate
        - totalCount
        - items
        - correlationId
      type: object
    ReportVolumetriaResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        fromDate:
          description: RFC3339 UTC inclusive lower bound of the queried range.
          examples:
            - "2026-05-01T00:00:00Z"
          type: string
        rows:
          description: COUNT(*) grouped by (messageType, status, day), ordered by day then messageType then direction then status.
          items:
            $ref: "#/components/schemas/ReportVolumetriaRowResponse"
          type: array
        toDate:
          description: RFC3339 UTC inclusive upper bound of the queried range.
          examples:
            - "2026-05-31T23:59:59Z"
          type: string
      required:
        - fromDate
        - toDate
        - rows
        - correlationId
      type: object
    ReportVolumetriaRowResponse:
      additionalProperties: false
      properties:
        count:
          description: Number of messages in the bucket.
          examples:
            - 15
          format: int64
          type: integer
        day:
          description: UTC day bucket (YYYY-MM-DD) of the messages' creation timestamp.
          examples:
            - "2026-05-01"
          type: string
        direction:
          description: "Message direction: OUTBOUND (sent) or INBOUND (received)."
          examples:
            - OUTBOUND
          type: string
        messageType:
          description: STR/LPI message code.
          examples:
            - STR0008
          type: string
        status:
          description: Lifecycle status; INBOUND rows carry the synthetic status RECEIVED.
          examples:
            - CONFIRMED
          type: string
      required:
        - messageType
        - status
        - direction
        - day
        - count
      type: object
    ReserveBalanceQueryResultResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        dtHrBC:
          description: BACEN timestamp of the balance (DtHrBC), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15T10:00:00"
          type: string
        dtMovto:
          description: Movement date the balance applies to (DtMovto), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15"
          type: string
        id:
          description: Correlation id (the outbound STR0013 NUOp).
          examples:
            - "12345678202606150000013"
          type: string
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        receivedAt:
          description: RFC3339 UTC freshness timestamp the answer was projected. Empty while PENDING.
          examples:
            - "2026-06-15T10:00:01Z"
          format: date-time
          type: string
        sldRbCl:
          description: Reserve-account balance BACEN sent in the STR0013R1 (SldRB_CL — conta Reservas Bancárias / Conta de Liquidação), verbatim. Empty while PENDING.
          examples:
            - "987654321.55"
          type: string
        status:
          description: PENDING until the STR0013R1 answer arrives; ANSWERED once the balance has been projected.
          examples:
            - ANSWERED
          type: string
      required:
        - id
        - ispbIfLdl
        - status
        - correlationId
      type: object
    ReserveStatementEntryResponse:
      additionalProperties: false
      properties:
        codMsgOr:
          description: Original message code of the settled entry.
          examples:
            - STR0008
          type: string
        dtHrSit:
          description: Situation timestamp.
          examples:
            - "2026-06-15T09:30:00"
          type: string
        ispbCtrapart:
          description: Counterparty ISPB (optional).
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlIfLdlOr:
          description: Original IF/LDL control number (official ControleIF, 1-20 characters; optional).
          examples:
            - "20260615000000000001"
          maxLength: 20
          minLength: 1
          type: string
        numCtrlStrOr:
          description: Original STR control number.
          examples:
            - STR2026061500001
          type: string
        tpDebCred:
          description: Debit/credit indicator (D = debit, C = credit).
          examples:
            - C
          type: string
        vlrLanc:
          description: "Entry amount, verbatim."
          examples:
            - "234567.89"
          type: string
      required:
        - codMsgOr
        - numCtrlStrOr
        - dtHrSit
        - tpDebCred
        - vlrLanc
      type: object
    ReserveStatementQueryResultResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        dtHrBC:
          description: BACEN timestamp of the statement (DtHrBC), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15T18:00:00"
          type: string
        dtMovto:
          description: Movement date the statement applies to (DtMovto), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15"
          type: string
        entries:
          description: Settled-entry group BACEN sent (Grupo_STR0014R1_Lanc), verbatim. Up to 200 entries; empty while PENDING.
          items:
            $ref: "#/components/schemas/ReserveStatementEntryResponse"
          type:
            - array
            - "null"
        id:
          description: Correlation id (the outbound STR0014 NUOp).
          examples:
            - "12345678202606150000014"
          type: string
        ispbIfLdl:
          description: ISPB of the requesting financial institution / clearing house.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        receivedAt:
          description: RFC3339 UTC freshness timestamp the answer was projected. Empty while PENDING.
          examples:
            - "2026-06-15T18:00:01Z"
          format: date-time
          type: string
        sldFinl:
          description: Closing balance BACEN sent (SldFinl), verbatim. Empty while PENDING.
          examples:
            - "1234567.89"
          type: string
        sldInial:
          description: Opening balance BACEN sent (SldInial), verbatim. Empty while PENDING.
          examples:
            - "1000000.00"
          type: string
        status:
          description: PENDING until the STR0014R1 answer arrives; ANSWERED once a message-mode statement has been projected.
          examples:
            - ANSWERED
          type: string
      required:
        - id
        - ispbIfLdl
        - status
        - correlationId
      type: object
    ResponsibleWire:
      additionalProperties: false
      properties:
        cpf:
          description: "Responsável CPF (CPFRespons), carried verbatim onto the GEN0019 wire. Exactly 11 digits (BACEN type CPF, Catálogo v5.13 Vol IV: Alfanumérico 11..11, padrão [0-9]{11})."
          examples:
            - "12345678901"
          maxLength: 11
          minLength: 11
          pattern: ^[0-9]{11}$
          type: string
        documentNumber:
          description: Responsável document number (NumDocRespons), carried verbatim. 1-20 characters (BACEN type NumDocIdentc, Catálogo v5.13 Vol IV).
          examples:
            - MG1234567
          maxLength: 20
          minLength: 1
          type: string
        email:
          description: Responsável e-mail address (EndEletrnc). 6-50 characters (BACEN type EndEletrnc, Catálogo v5.13 Vol IV).
          examples:
            - maria.souza@example.com
          maxLength: 50
          minLength: 6
          type: string
        name:
          description: Responsável full name (NomRespons). 1-80 characters (BACEN type Nome, Catálogo v5.13 Vol IV).
          examples:
            - Maria Souza
          maxLength: 80
          minLength: 1
          type: string
        phone1:
          description: "Responsável primary phone (NumTelRespons1, required). One to eleven DIGITS: NumTel is \"Numérico 11\" (BACEN type NumTel, Catálogo v5.13 Vol IV), so letters and a \"+\" country-code prefix are refused at the door rather than published as valid phone numbers."
          examples:
            - "11999990001"
          maxLength: 11
          minLength: 1
          pattern: ^[0-9]{1,11}$
          type: string
        phone2:
          description: "Responsável secondary phone (NumTelRespons2, required). GEN0019 declares it [1..1] — the official XSD carries no minOccurs=\"0\" for it. One to eleven DIGITS (BACEN type NumTel, Catálogo v5.13 Vol IV: Numérico 11)."
          examples:
            - "11999990002"
          maxLength: 11
          minLength: 1
          pattern: ^[0-9]{1,11}$
          type: string
        phone3:
          description: "Optional responsável tertiary phone (NumTelRespons3). Omit the key to leave it unset; when present it is at most eleven DIGITS (BACEN type NumTel, Catálogo v5.13 Vol IV: Numérico 11)."
          examples:
            - "11999990003"
          maxLength: 11
          pattern: ^[0-9]{0,11}$
          type: string
        type:
          description: Tipo Responsável classification code (TpRespons), carried verbatim. 1-2 characters (BACEN type TpRespons, Catálogo v5.13 Vol IV). BACEN's dicionário de domínios closes the value set at C (contingência do STR), D (diretor responsável pelo SPB), I (infraestrutura) and M (monitor); the wire validator refuses anything else, so the length above is the door's bound and not the whole rule.
          examples:
            - D
          maxLength: 2
          minLength: 1
          type: string
      required:
        - cpf
        - documentNumber
        - name
        - email
        - phone1
        - phone2
        - type
      type: object
    RotateCertificateRequest:
      additionalProperties: false
      properties:
        certificateRef:
          description: "Path to the new certificate, validated against the configured cert directory before any read. The 2048-character bound is LERIAN'S OWN, not BACEN's: a material reference is deployment configuration and never crosses an SFN wire."
          examples:
            - /certs/2026-q2/icp-brasil.crt
          maxLength: 2048
          minLength: 1
          type: string
        privateKeyRef:
          description: "The new private key in the configured custody: with SPB_SIGNER_KIND=file a path validated against the configured cert directory before any read, with pkcs11 the key label, with kmip the private key UID. The 2048-character bound is LERIAN'S OWN, not BACEN's: a material reference is deployment configuration and never crosses an SFN wire."
          examples:
            - /certs/2026-q2/icp-brasil.key
          maxLength: 2048
          minLength: 1
          type: string
        publicKeyRef:
          description: "With SPB_SIGNER_KIND=kmip, the UID of the new key's public half; unused by the other custodies. The 2048-character bound is LERIAN'S OWN, not BACEN's: a material reference is deployment configuration and never crosses an SFN wire."
          examples:
            - spb-sign-2026-q2-pub
          maxLength: 2048
          type: string
        reason:
          description: "Optional operator rationale recorded in the audit evidence. The 512-character bound is LERIAN'S OWN, not BACEN's: a rotation rationale is Lerian SPB audit evidence and never crosses an SFN wire."
          examples:
            - Quarterly rotation per ICP-Brasil policy
          maxLength: 512
          type: string
      required:
        - certificateRef
        - privateKeyRef
      type: object
    RotateCertificateResponseWire:
      additionalProperties: false
      properties:
        auditId:
          description: UUID of the audit record written for this rotation.
          examples:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        certificate:
          $ref: "#/components/schemas/CertificateStatusWire"
          description: State of the certificate after the rotation hot-reload.
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        readiness:
          $ref: "#/components/schemas/ReadinessSummary"
          description: Optional post-rotation readiness summary; omitted when readiness lookup is unavailable.
      required:
        - certificate
        - auditId
        - correlationId
      type: object
    SLBEntryQueryResultResponse:
      additionalProperties: false
      properties:
        answeredAt:
          description: RFC3339 UTC timestamp the answer was projected. Empty while PENDING.
          examples:
            - "2026-09-15T18:00:01Z"
          format: date-time
          type: string
        answeredDtHrBC:
          description: BACEN timestamp of the answer (DtHrBC), verbatim. Empty while PENDING.
          examples:
            - "2026-09-15T18:00:00"
          type: string
        controlNumberSLB:
          description: Entry control number that was asked for, in BY_ENTRY mode.
          examples:
            - SLB20260915000000001
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        entryKind:
          description: Debit/credit filter that was applied, if any.
          enum:
            - D
            - C
          examples:
            - D
          type: string
        id:
          description: Correlation id (the outbound SLB0006 NUOp).
          examples:
            - "46026562202609150000002"
          type: string
        movementDate:
          description: Business date (DtMovto) stamped on the frame, derived server-side. It is NOT a selector — referenceDate is.
          examples:
            - "2026-09-15"
          type: string
        queryMode:
          description: Which of the three mutually exclusive modes was asked (RSLB0005 by date, RSLB0006 by entry, RSLB0007 everything still falling due). Derived server-side from the selectors and stored once, so it always matches the frame.
          enum:
            - BY_DATE
            - BY_ENTRY
            - OUTSTANDING
          examples:
            - OUTSTANDING
          type: string
        referenceDate:
          description: Reference date (DtRef) that was asked for, in BY_DATE mode.
          examples:
            - "2026-09-14"
          type: string
        rows:
          description: "The entry group BACEN answered with, verbatim and in wire order. Always an array: empty while PENDING, and legitimately empty once ANSWERED. This list is a SNAPSHOT of BACEN's view and deliberately does not rewrite the charge projection."
          items:
            $ref: "#/components/schemas/SLBEntryQueryRowItem"
          type: array
        status:
          description: PENDING until the SLB0006R1 arrives. A consulta ANSWERED with zero rows is a real answer — 'nothing matches' — and not a missing one.
          enum:
            - PENDING
            - ANSWERED
          examples:
            - ANSWERED
          type: string
      required:
        - id
        - queryMode
        - movementDate
        - status
        - rows
        - correlationId
      type: object
    SLBEntryQueryRowItem:
      additionalProperties: false
      properties:
        account:
          description: Account, verbatim.
          examples:
            - "0000123456"
          type: string
        accountType:
          description: Account type, verbatim.
          examples:
            - CC
          type: string
        agreementCnpj:
          description: Agreement CNPJ (CNPJConv), verbatim.
          examples:
            - "00038166000105"
          type: string
        amount:
          description: Entry amount (VlrLanc), verbatim as text — never parsed or summed.
          examples:
            - "1500.00"
          type: string
        branch:
          description: Account branch, verbatim.
          examples:
            - "0001"
          type: string
        description:
          description: Free text (Hist), verbatim.
          examples:
            - TAXA DE FISCALIZACAO
          type: string
        dtHrSit:
          description: Situation timestamp, verbatim.
          examples:
            - "2026-09-15T09:30:00"
          type: string
        dueDate:
          description: Due date (DtVenc), verbatim.
          examples:
            - "2026-09-20"
          type: string
        entryKind:
          description: Debit/credit indicator (TpDeb_Cred) — the DIRECTION of the entry. The amount never carries a sign.
          enum:
            - D
            - C
          examples:
            - D
          type: string
        numCtrlSLB:
          description: Entry control number, verbatim.
          examples:
            - SLB20260915000000001
          type: string
        numCtrlSTR:
          description: STR entry the lançamento rode, verbatim.
          examples:
            - STR20260915000000009
          type: string
        originalControlNumber:
          description: The entry's own NumCtrlSLBOr, verbatim.
          examples:
            - SLB20260901000000004
          type: string
        paymentDate:
          description: Payment date (DtPgto), verbatim. Present once the entry was paid.
          examples:
            - "2026-09-16"
          type: string
        personDocument:
          description: Customer document, verbatim.
          examples:
            - "00038166000105"
          type: string
        personType:
          description: Customer person type, verbatim.
          examples:
            - J
          type: string
        purpose:
          description: BACEN finalidade code (FinlddSLB), verbatim.
          examples:
            - "01"
          type: string
        sitLancSLB:
          description: The ENTRY's situation code, verbatim — never the outcome of the consulta itself.
          examples:
            - "13"
          type: string
      required:
        - numCtrlSLB
        - purpose
        - entryKind
        - amount
        - dueDate
        - sitLancSLB
        - dtHrSit
      type: object
    SLBObligationItem:
      additionalProperties: false
      properties:
        agreementCnpj:
          description: Agreement CNPJ (CNPJConv), verbatim.
          examples:
            - "00038166000105"
          type: string
        amount:
          description: Charge value (VlrLanc), verbatim as text. A payment must carry this value in full — never parsed or summed.
          examples:
            - "1500.00"
          type: string
        debitedAccount:
          description: Debited account, verbatim.
          examples:
            - "0000123456"
          type: string
        debitedAccountType:
          description: Debited account type, verbatim.
          examples:
            - CC
          type: string
        debitedBranch:
          description: Debited branch, verbatim.
          examples:
            - "0001"
          type: string
        debitedPersonDocument:
          description: Debited customer document, verbatim.
          examples:
            - "00038166000105"
          type: string
        debitedPersonType:
          description: Debited customer person type, verbatim.
          examples:
            - J
          type: string
        description:
          description: BACEN's own text for the charge (Hist), verbatim.
          examples:
            - TAXA DE FISCALIZACAO
          type: string
        dueDate:
          description: Date (DtVenc) by which the participant must authorise the debit, verbatim.
          examples:
            - "2026-09-20"
          type: string
        ispbPart:
          description: Participant ISPB the charge is raised against.
          examples:
            - "46026562"
          pattern: ^[0-9A-Z]{8}$
          type: string
        movementDate:
          description: Business date (DtMovto) the notice carried, verbatim.
          examples:
            - "2026-09-15"
          type: string
        numCtrlSLB:
          description: Control number BACEN minted for the charge — the handle a payment quotes as NumCtrlSLBOr.
          examples:
            - SLB20260915000000001
          type: string
        originalControlNumber:
          description: The charge's OWN NumCtrlSLBOr — filled by rule RSLB0001 only when this charge relates to a PREVIOUS entry. It is NOT the charge a payment pays.
          examples:
            - SLB20260901000000004
          type: string
        purpose:
          description: BACEN finalidade code (FinlddSLB), verbatim.
          examples:
            - "01"
          type: string
        receivedAt:
          description: RFC3339 UTC timestamp the SLB0001 notice was projected.
          examples:
            - "2026-09-15T09:30:01Z"
          format: date-time
          type: string
        resolvedAt:
          description: RFC3339 UTC timestamp the charge became terminal. Empty while RECEIVED.
          examples:
            - "2026-09-15T18:00:01Z"
          format: date-time
          type: string
        settledNumCtrlSTR:
          description: STR entry the settlement rode, verbatim. Empty while RECEIVED.
          examples:
            - STR20260915000000009
          type: string
        sitLancSLB:
          description: Situation code that moved the charge out of RECEIVED, verbatim. Empty while RECEIVED.
          examples:
            - "1"
          type: string
        status:
          description: RECEIVED while still owed, SETTLED once a payment answer closed it, CANCELLED once BACEN withdrew it. Receiving the notice authorises nothing — RECEIVED means owed, not paid.
          enum:
            - RECEIVED
            - SETTLED
            - CANCELLED
          examples:
            - RECEIVED
          type: string
      required:
        - numCtrlSLB
        - ispbPart
        - dueDate
        - description
        - amount
        - purpose
        - movementDate
        - status
        - receivedAt
      type: object
    SLBObligationResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        obligation:
          $ref: "#/components/schemas/SLBObligationItem"
          description: The charge as BACEN notified it.
      required:
        - obligation
        - correlationId
      type: object
    SLBPaymentResponse:
      additionalProperties: false
      properties:
        agreementCnpj:
          description: Agreement CNPJ (CNPJConv), verbatim.
          examples:
            - "00038166000105"
          type: string
        amount:
          description: Payment amount (VlrLanc), verbatim as text — never parsed or summed.
          examples:
            - "1500.00"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        description:
          description: Free text (Hist). Present on SLB0007 only — SLB0002 declares none.
          examples:
            - DEVOLUCAO DE CREDITO
          type: string
        id:
          description: Correlation id (the outbound NUOp).
          examples:
            - "46026562202609150000001"
          type: string
        movementDate:
          description: Business date (DtMovto) stamped on the frame.
          examples:
            - "2026-09-15"
          type: string
        numCtrlPart:
          description: This participant's own control number for the payment.
          examples:
            - "20260915000000000001"
          type: string
        numCtrlSLB:
          description: Entry BACEN minted for the payment, from an SLB0007R1. Blank on the SLB0002 path, where the entry already existed.
          examples:
            - SLB20260915000000020
          type: string
        numCtrlSTR:
          description: STR entry the settlement rode, verbatim.
          examples:
            - STR20260915000000009
          type: string
        originalControlNumber:
          description: On SLB0002, the charge being paid (mandatory). On SLB0007, the SLB0005 credit being returned (optional).
          examples:
            - SLB20260915000000001
          type: string
        preferenceLevel:
          description: Processing preference (NivelPref), verbatim.
          examples:
            - "0001"
          type: string
        purpose:
          description: BACEN finalidade code (FinlddSLB). Present on SLB0007 only — SLB0002 declares none.
          examples:
            - "01"
          type: string
        rejectionReason:
          description: Operator-facing text of a refusal, verbatim.
          examples:
            - saldo insuficiente
          type: string
        settledAt:
          description: RFC3339 UTC timestamp the payment became SETTLED. Empty on every other status.
          examples:
            - "2026-09-15T18:00:01Z"
          format: date-time
          type: string
        sitLancSLB:
          description: Situation code the answer carried, verbatim. It is BACEN's word on the entry, and it — not the fact that we sent the request — is what decides the status above.
          examples:
            - "1"
          type: string
        status:
          description: PENDING until an answer arrives AND that answer reports a settlement. An answer carrying a pending-class situation (the entry was taken, not yet settled) leaves this PENDING with sitLancSLB recorded — it is never read as payment.
          enum:
            - PENDING
            - SETTLED
            - REJECTED
            - CANCELLED
          examples:
            - PENDING
          type: string
        wireCode:
          description: SLB0002 pays a charge BACEN raised; SLB0007 pays BACEN an amount SLB never demanded.
          enum:
            - SLB0002
            - SLB0007
          examples:
            - SLB0002
          type: string
      required:
        - id
        - wireCode
        - numCtrlPart
        - amount
        - movementDate
        - status
        - correlationId
      type: object
    SLBSubmissionAccepted:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        id:
          description: Correlation id (the outbound NUOp). The answer leg is correlated to it.
          examples:
            - "46026562202609150000001"
          type: string
        messageType:
          description: The SLB wire code that was submitted.
          examples:
            - SLB0002
          type: string
        movementDate:
          description: BACEN business date (DtMovto) stamped on the frame, derived server-side.
          examples:
            - "2026-09-15"
          type: string
        numCtrlPart:
          description: This participant's own control number for the message — the handle BACEN quotes back on the answer.
          examples:
            - "20260915000000000001"
          type: string
        status:
          description: SUBMITTED when the message was queued for the rail, PENDING_APPROVAL when the configured alçada band parked it awaiting signatures.
          examples:
            - SUBMITTED
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp the message was submitted.
          examples:
            - "2026-09-15T12:00:00Z"
          type: string
      required:
        - id
        - numCtrlPart
        - messageType
        - status
        - movementDate
        - submittedAt
        - correlationId
      type: object
    SMEAdviceItem:
      additionalProperties: false
      properties:
        agCredtd:
          description: Credited agency (agência) of a withdrawal advice. SME0002R2 only.
          examples:
            - "0001"
          type: string
        amount:
          description: VlrLanc as the decimal-reais string BACEN sent, VERBATIM. Never parsed, never reformatted, never summed — this feed reports movements it did not command and holds no position.
          examples:
            - "1200.55"
          type: string
        cnpjCliCredtd:
          description: CNPJ of the credited client of a withdrawal advice. SME0002R2 only.
          examples:
            - "12345678000199"
          type: string
        creditedIspb:
          description: ISPB of the credited side, when the leg carries one. Absent on SME0002R2, where the credited party is the Reservas Bancárias account group instead.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        ctCredtd:
          description: Credited account number of a withdrawal advice. SME0002R2 only.
          examples:
            - "123456"
          type: string
        debitedIspb:
          description: ISPB of the debited side, when the leg carries one (8 uppercase alphanumeric characters).
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        description:
          description: Hist — the return's free-text history. SME0004R2 only, and officially optional.
          examples:
            - devolucao de lancamento recebido em duplicidade
          type: string
        dtHrBC:
          description: BACEN timestamp of the entry, carried VERBATIM as the frame spelled it — not a parsed date, and deliberately not declared as date-time.
          examples:
            - "2026-09-02T09:15:00"
          type: string
        dtMovto:
          description: BACEN business date of the entry, carried VERBATIM — not a parsed date. It is a different question from receivedAt, which is when THIS rail got the advice.
          examples:
            - "2026-09-02"
          type: string
        id:
          description: Row identifier of the persisted advice.
          examples:
            - 0190b3a1-1c2d-7e4f-8a9b-0c1d2e3f4a5b
          type: string
        ispbIFCredtd:
          description: ISPB of the credited FI of a withdrawal advice. SME0002R2 only, and present only together with the other three account fields.
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlSTR:
          description: STR-assigned control number of the movement, and the identity of the advice. Present on all three legs.
          examples:
            - "20260902000001"
          type: string
        originalControlNumber:
          description: NumCtrlSTROr — the control number of the entry a return gives back. SME0004R2 only.
          examples:
            - "20260901000009"
          type: string
        receivedAt:
          description: RFC3339 UTC timestamp this rail projected the advice. The one derived value on the item, and the clock the feed is ordered and windowed by.
          examples:
            - "2026-09-02T12:00:00Z"
          format: date-time
          type: string
        wireCode:
          description: "Advice leg: SME0001R2 (an FI funded a CCME), SME0002R2 (funds were recalled out of a CCME) or SME0004R2 (an entry received in error was given back). This is the only statement of what kind of movement occurred — the legs carry no debit/credit indicator."
          examples:
            - SME0001R2
          type: string
      required:
        - id
        - wireCode
        - numCtrlSTR
        - amount
        - receivedAt
      type: object
    SMEAdvicesResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        items:
          description: Received advices matching the request, most recent first (by the receipt clock of this rail).
          items:
            $ref: "#/components/schemas/SMEAdviceItem"
          type: array
        limit:
          description: Effective page size applied to this response.
          examples:
            - 50
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when this is the last page. Do not parse.
          type: string
      required:
        - items
        - limit
        - correlationId
      type: object
    SMECreditedAccountRequest:
      additionalProperties: false
      properties:
        agCredtd:
          description: Credited agency (agência) number. Required and non-blank; the wire facet bounds it at 4 digits (BACEN type Agencia, Catálogo v5.13 Vol IV).
          examples:
            - "0001"
          minLength: 1
          type: string
        cnpjCliCredtd:
          description: CNPJ of the credited client. Required and non-blank; the wire facet holds it to the 14-character BACEN CNPJ pattern (Catálogo v5.13 Vol IV).
          examples:
            - "12345678000199"
          minLength: 1
          type: string
        ctCredtd:
          description: Credited account number. Required and non-blank; the wire facet bounds it at 13 digits and above zero (BACEN type CtBancaria, Catálogo v5.13 Vol IV).
          examples:
            - "123456"
          minLength: 1
          type: string
        ispbIFCredtd:
          description: ISPB of the credited FI, the 8-character BACEN institution identifier.
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
      required:
        - ispbIFCredtd
        - agCredtd
        - ctCredtd
        - cnpjCliCredtd
      type: object
    SMEStatementEntryItem:
      additionalProperties: false
      properties:
        codMsgOr:
          description: Original message code of the entry, verbatim (optional on the wire).
          examples:
            - SME0001
          type: string
        dtHrSit:
          description: Situation timestamp BACEN sent, verbatim.
          examples:
            - "2026-06-15T09:30:00"
          type: string
        ispbCtrapart:
          description: Counterparty ISPB, verbatim (optional on the wire).
          examples:
            - "87654321"
          pattern: ^[0-9A-Z]{8}$
          type: string
        numCtrlIEMEOr:
          description: Original IEME control number, verbatim (optional on the wire).
          examples:
            - "20260615000000000001"
          type: string
        numCtrlSMEOr:
          description: Original SME control number — the second xs:choice branch, carried by a remuneration entry (RSME0003).
          examples:
            - SME2026061500002
          type: string
        numCtrlSTROr:
          description: Original STR control number — the first xs:choice branch.
          examples:
            - STR2026061500001
          type: string
        tpDebCred:
          description: Debit/credit indicator BACEN sent (D = debit, C = credit). The direction of the entry — the amount never carries a sign.
          examples:
            - C
          type: string
        vlrLanc:
          description: Entry amount BACEN sent, verbatim as text — never parsed or summed.
          examples:
            - "234567.89"
          type: string
      required:
        - dtHrSit
        - tpDebCred
        - vlrLanc
      type: object
    SMEStatementQueryResultResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        dtHrBC:
          description: BACEN timestamp of the statement (DtHrBC), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15T18:00:00"
          type: string
        dtMovto:
          description: Business date BACEN ANSWERED with (DtMovto), verbatim — a different fact from movementDate, the date the consulta asked for; RSTR0014 lets the two legitimately diverge. Empty while PENDING.
          examples:
            - "2026-06-15"
          type: string
        entries:
          description: "Lançamento group BACEN sent (Grupo_SME0003R1_Lanc), verbatim and in wire order. Always an array: empty while PENDING, and legitimately empty once ANSWERED when the CCME had no movement on the day."
          items:
            $ref: "#/components/schemas/SMEStatementEntryItem"
          type: array
        id:
          description: Correlation id (the outbound SME0003 NUOp).
          examples:
            - "12345678202606150000014"
          type: string
        ispbIEME:
          description: ISPB of the IEME whose CCME statement was requested.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        movementDate:
          description: BACEN business date (DtMovto) the consulta ASKED for, derived server-side at submit time.
          examples:
            - "2026-06-15"
          type: string
        receivedAt:
          description: RFC3339 UTC timestamp the SME0003R1 answer was projected. Empty while PENDING.
          examples:
            - "2026-06-15T18:00:01Z"
          format: date-time
          type: string
        sldFinl:
          description: "Closing balance BACEN sent (SldFinl), verbatim as text — never parsed or summed. It is NEVER reconciled against the entry sum: checking that would be computing a position. Empty while PENDING."
          examples:
            - "1234567.89"
          type: string
        sldInial:
          description: Opening balance BACEN sent (SldInial), verbatim as text — never parsed or summed. Empty while PENDING.
          examples:
            - "1000000.00"
          type: string
        status:
          description: "Projection state: PENDING until the SME0003R1 answer arrives, ANSWERED once it has been projected. A statement with zero entries is still ANSWERED — a CCME with no movement on the day is an answer, not a missing one."
          examples:
            - ANSWERED
          type: string
      required:
        - id
        - ispbIEME
        - status
        - movementDate
        - entries
        - correlationId
      type: object
    SMETransferAcceptedResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        operationId:
          description: Server-assigned operation UUID identifying the accepted SME movement.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        status:
          description: Projection lifecycle status; PENDING on accept (awaiting the STR R-leg settlement confirmation).
          enum:
            - PENDING
            - SETTLED
            - REJECTED
          examples:
            - PENDING
          type: string
        wireCode:
          description: "SME wire code derived server-side from the kind: deposit=SME0001, withdrawal=SME0002, return=SME0004."
          enum:
            - SME0001
            - SME0002
            - SME0004
          examples:
            - SME0001
          type: string
      required:
        - operationId
        - status
        - wireCode
        - correlationId
      type: object
    SMETransferStatusResponse:
      additionalProperties: false
      properties:
        amount:
          description: Movement amount as a decimal-reais string, verbatim.
          examples:
            - "1500.25"
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        kind:
          description: Operator-facing movement kind the request named.
          enum:
            - deposit
            - withdrawal
            - return
          examples:
            - deposit
          type: string
        nuOp:
          description: SFN operation number stamped on the transmitted SME frame. Empty until the movement has been submitted to STR.
          examples:
            - "12345678202606190000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        numCtrlSTR:
          description: STR control number BACEN sent on the R-leg settlement confirmation, verbatim. Empty while PENDING.
          examples:
            - "20260619000001"
          type: string
        operationId:
          description: Operation UUID.
          examples:
            - 7c8b3a2e-9f1d-4a55-9b8e-1e1234567890
          format: uuid
          type: string
        rejectionReason:
          description: Failure detail when the status is REJECTED. Empty otherwise.
          examples:
            - insufficient reserve balance
          type: string
        sitLancSTR:
          description: STR settlement status BACEN sent on the R-leg, verbatim. Empty while PENDING.
          examples:
            - LIQ
          type: string
        status:
          description: "Projection lifecycle status: PENDING (awaiting the STR R-leg), SETTLED (R-leg confirmed), REJECTED, or CANCELLED (the STR cancelled the entry, SitLancSTR 14 or 15)."
          enum:
            - PENDING
            - SETTLED
            - REJECTED
            - CANCELLED
          examples:
            - PENDING
          type: string
        wireCode:
          description: "SME wire code derived server-side from the kind: deposit=SME0001, withdrawal=SME0002, return=SME0004."
          enum:
            - SME0001
            - SME0002
            - SME0004
          examples:
            - SME0001
          type: string
      required:
        - operationId
        - status
        - kind
        - wireCode
        - amount
        - correlationId
      type: object
    ScheduleGridResponse:
      additionalProperties: false
      properties:
        codGrd:
          description: Schedule-grid code (CodGrd).
          examples:
            - STR
          type: string
        dtHrAbert:
          description: Opening timestamp (DtHrAbert), verbatim.
          examples:
            - "2026-06-15T06:30:00"
          type: string
        dtHrFcht:
          description: Closing timestamp (DtHrFcht), verbatim.
          examples:
            - "2026-06-15T18:30:00"
          type: string
        tpHrio:
          description: "Schedule type of this grid: P (padrão) or E (eventual)."
          examples:
            - P
          type: string
      required:
        - codGrd
        - dtHrAbert
        - dtHrFcht
        - tpHrio
      type: object
    ScheduleQueryResultResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        dtHrBC:
          description: BACEN timestamp of the answer (DtHrBC), verbatim. Empty while PENDING.
          examples:
            - "2026-06-15T10:00:00"
          type: string
        dtRef:
          description: Reference date the schedule grid applies to (DtRef), verbatim once answered.
          examples:
            - "2026-06-15"
          type: string
        grades:
          description: Schedule grid BACEN sent (Grupo_STR0001R1_GrdHrio), verbatim. Up to 200 grids; empty while PENDING.
          items:
            $ref: "#/components/schemas/ScheduleGridResponse"
          type:
            - array
            - "null"
        id:
          description: Correlation id (the outbound STR0001 NUOp).
          examples:
            - "12345678202606150000001"
          type: string
        ispbIf:
          description: ISPB of the querying financial institution.
          examples:
            - "12345678"
          pattern: ^[0-9A-Z]{8}$
          type: string
        receivedAt:
          description: RFC3339 UTC freshness timestamp the answer was projected. Empty while PENDING.
          examples:
            - "2026-06-15T10:00:01Z"
          format: date-time
          type: string
        status:
          description: PENDING until the STR0001R1 answer arrives; ANSWERED once the schedule grid has been projected.
          examples:
            - ANSWERED
          type: string
      required:
        - id
        - ispbIf
        - status
        - correlationId
      type: object
    ScheduleResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        windows:
          description: The grade of the day, one window per grade code, ordered by code. Empty when Lerian SPB holds no grade for the day.
          items:
            $ref: "#/components/schemas/ScheduleWindowResponse"
          type: array
      required:
        - windows
        - correlationId
      type: object
    ScheduleWindowResponse:
      additionalProperties: false
      properties:
        announcedAt:
          description: "When the grade was announced: the STR answer's DtHrBC or the GEN0021 DtHrPrestd."
          examples:
            - "2026-06-10T05:00:00"
          type: string
        closesAt:
          description: Window closing datetime on dtRef (BACEN local, no timezone offset).
          examples:
            - "2026-06-10T18:30:00"
          type: string
        dtRef:
          description: Reference date the window applies to (YYYY-MM-DD).
          examples:
            - "2026-06-10"
          type: string
        gradeCode:
          description: Official BACEN operating-grade code (CodGrd).
          examples:
            - STR01
          type: string
        opensAt:
          description: Window opening datetime on dtRef (BACEN local, no timezone offset).
          examples:
            - "2026-06-10T06:30:00"
          type: string
        productCode:
          description: Optional BACEN product code the window applies to.
          examples:
            - "0001"
          type: string
        providerIspb:
          description: "ISPB of the provider of the grade: 00038166 for the STR's own answer, the GEN0021 ISPBPrestd for an announced change."
          examples:
            - "00038166"
          pattern: ^[0-9A-Z]{8}$
          type: string
        scheduleType:
          description: "BACEN schedule type (TpHrio): P for the standard grade, E for an eventual one."
          examples:
            - P
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp Lerian SPB stored this grade.
          examples:
            - "2026-06-10T08:00:00Z"
          format: date-time
          type: string
      required:
        - gradeCode
        - dtRef
        - opensAt
        - closesAt
        - scheduleType
        - providerIspb
        - updatedAt
      type: object
    SettingsResponse:
      additionalProperties: false
      properties:
        certDaysRemaining:
          description: Whole days remaining until the active certificate expires; absent when no certificate is configured.
          examples:
            - 365
          format: int64
          type: integer
        certificateExpiresAt:
          description: UTC RFC 3339 expiry timestamp of the active ICP-Brasil certificate; absent when no certificate is configured.
          examples:
            - "2027-05-04T18:30:00Z"
          format: date-time
          type: string
        channelStatus:
          description: "SPB channel connectivity status: CONNECTED or PENDING_CONFIGURATION."
          enum:
            - CONNECTED
            - PENDING_CONFIGURATION
          examples:
            - CONNECTED
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        ispb:
          description: Participant ISPB the settings belong to, the 8-character BACEN institution identifier.
          examples:
            - "12345678"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        metadata:
          additionalProperties: {}
          description: Client-supplied settings metadata; sensitive keys and values are redacted before being returned.
          type: object
        readiness:
          $ref: "#/components/schemas/ReadinessSummary"
          description: "Embedded readiness summary: aggregate status plus blocker and warning messages. Present only when a readiness source is wired into the settings handler."
      required:
        - ispb
        - channelStatus
        - correlationId
      type: object
    StuckOperationViewResponse:
      additionalProperties: false
      properties:
        affordances:
          description: The ONLY source of operator buttons for this row; a verb the rail cannot perform is absent.
          items:
            $ref: "#/components/schemas/OperatorAffordanceResp"
          type: array
        age:
          description: Normalized staleness bucket.
          examples:
            - OVER_15_MIN
          type: string
        correlation:
          $ref: "#/components/schemas/CorrelationResponse"
          description: Protocol identity the row is keyed on (no monetary fields).
        detail:
          additionalProperties: {}
          description: Render-only per-rail drill-down blob; presentation only, never branched on.
          type: object
        disposition:
          description: What happens if the operator does nothing.
          examples:
            - SYSTEM_RETRYING
          type: string
        rail:
          description: Rail that owns the row (spb or spi).
          examples:
            - spb
          type: string
        reason:
          description: Normalized cause the row needs attention.
          examples:
            - STUCK_OUTBOUND
          type: string
        state:
          description: Canonical operation lifecycle state.
          examples:
            - AWAITING_RESPONSE
          type: string
      required:
        - rail
        - state
        - correlation
        - reason
        - disposition
        - affordances
      type: object
    StuckPageResponse:
      additionalProperties: false
      properties:
        capabilities:
          $ref: "#/components/schemas/RailCapabilitiesResponse"
          description: Rail-level honest capability manifest (returned inline to save a round trip).
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          type: string
        items:
          description: Stuck-operation rows needing operator attention.
          items:
            $ref: "#/components/schemas/StuckOperationViewResponse"
          type: array
        limit:
          description: Page size applied to this response (max items returned).
          format: int64
          type: integer
        nextCursor:
          description: Opaque cursor for the next page; absent when exhausted. Presence signals more results, absence signals end-of-list.
          type: string
      required:
        - items
        - capabilities
        - limit
        - correlationId
      type: object
    SubmitStuckActionRequest:
      additionalProperties: false
      properties:
        operationRef:
          description: Row key exactly as the listing returned it in correlation.operationRef (the NUOp of a deadline-expired message).
          minLength: 1
          type: string
        outcome:
          description: "What the parked answer reports: SETTLED applies the leg's settled outcome and emits its settlement fact; FAILED closes the leg as failed."
          enum:
            - SETTLED
            - FAILED
          type: string
        parkedAnswerId:
          description: A parked STR answer of this leg (id from the row's detail.parkedAnswers) the operators declare the leg from.
          type: string
        reason:
          description: Operator justification, persisted on the case.
          maxLength: 512
          minLength: 1
          type: string
        settledAt:
          description: RFC 3339 instant the STR settled the leg, in the past; required with SETTLED, refused with FAILED.
          examples:
            - "2026-10-30T14:05:00Z"
          format: date-time
          type: string
        verb:
          description: Operator intent; must be offered on the row.
          enum:
            - MANUAL_RESOLUTION
          examples:
            - MANUAL_RESOLUTION
          type: string
      required:
        - operationRef
        - verb
        - reason
      type: object
    TaxRepasseReturnGroup:
      additionalProperties: false
      properties:
        codDevTransf:
          description: Return reason code (CodDevTransf), numeric, up to 2 digits.
          examples:
            - "1"
          pattern: ^[0-9]{1,2}$
          type: string
        dtArrec:
          description: Date the tax was collected (DtArrec), ISO date.
          examples:
            - "2026-06-01"
          minLength: 1
          type: string
        numCtrlSTROr:
          description: STR control number of the repasse being returned (NumCtrlSTROr; official type Controle, 20 characters).
          examples:
            - STR20260601000000042
          maxLength: 20
          minLength: 20
          type: string
        tpRecolht:
          description: Collection type (TpRecolht, Catálogo v5.13 Vol I), one character from the BACEN domain.
          examples:
            - "N"
          maxLength: 1
          minLength: 1
          type: string
        vlrRecolht:
          description: Collected amount (VlrRecolht). At least one of vlrRecolht and vlrRemunEncargo is required (RSTR0032).
          examples:
            - "198.50"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
        vlrRemunEncargo:
          description: Remuneration or charge amount (VlrRemun_Encargo). At least one of vlrRecolht and vlrRemunEncargo is required (RSTR0032).
          examples:
            - "1.50"
          pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
          type: string
      required:
        - tpRecolht
        - dtArrec
        - codDevTransf
        - numCtrlSTROr
      type: object
    TaxSplitRequest:
      additionalProperties: false
      properties:
        codDocFis:
          description: Fiscal document code identifying the invoice the split settles (1-50 characters).
          examples:
            - DOCFIS001
          maxLength: 50
          minLength: 1
          type: string
        vlrCBS:
          description: CBS amount as a non-negative decimal string in BRL. Carried verbatim.
          examples:
            - "5.00"
          pattern: ^[0-9]+(\.[0-9]+)?$
          type: string
        vlrIBS:
          description: IBS amount as a non-negative decimal string in BRL. Carried verbatim.
          examples:
            - "10.00"
          pattern: ^[0-9]+(\.[0-9]+)?$
          type: string
      required:
        - vlrCBS
        - vlrIBS
        - codDocFis
      type: object
    UpdateResponsiblesRequest:
      additionalProperties: false
      properties:
        responsibles:
          description: Complete responsável roster (full-replacement; no partial update). 1..100 entries per the Catálogo SFN Vol III bound.
          items:
            $ref: "#/components/schemas/ResponsibleWire"
          maxItems: 100
          minItems: 1
          type: array
      required:
        - responsibles
      type: object
    UpdateResponsiblesResponseWire:
      additionalProperties: false
      properties:
        controlNumber:
          description: Participant control number assigned to the GEN0019 submission (official ControleIF, 1-20 characters).
          examples:
            - "20260616000000000001"
          maxLength: 20
          minLength: 1
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        messageType:
          description: STR message code of the submission (always GEN0019 for a responsável update).
          examples:
            - GEN0019
          type: string
        nuOp:
          description: BACEN protocol identifier (NUOp) assigned to the GEN0019 submission.
          examples:
            - "12345678202606160000001"
          pattern: ^[0-9A-Z]{8}[0-9]{15}$
          type: string
        responsibleCount:
          description: Number of responsável records carried in the full-replacement roster.
          examples:
            - 3
          format: int64
          type: integer
        status:
          description: Submission status; always SUBMITTED until BACEN's GEN0019R1 acknowledgment flips it to CONFIRMED.
          examples:
            - SUBMITTED
          type: string
        submittedAt:
          description: RFC3339 UTC timestamp when the submission was persisted before dispatch.
          examples:
            - "2026-06-16T18:30:00Z"
          format: date-time
          type: string
      required:
        - nuOp
        - controlNumber
        - messageType
        - status
        - responsibleCount
        - submittedAt
        - correlationId
      type: object
    UpdateSettingsInput:
      additionalProperties: false
      properties:
        ispb:
          description: Optional participant ISPB to set, the 8-character BACEN institution identifier; left unchanged when omitted.
          examples:
            - "12345678"
          maxLength: 8
          minLength: 8
          pattern: ^[0-9A-Z]{8}$
          type: string
        metadata:
          additionalProperties: {}
          description: Optional client-supplied settings metadata to merge; sensitive keys are redacted on read.
          type: object
      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
    VerbOutcomeResponse:
      additionalProperties: false
      properties:
        accepted:
          description: Whether the rail accepted the verb. A refusal is an error status, never accepted=false.
          type: boolean
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          type: string
        railActionRef:
          description: "Rail-native reference for follow-up: the case the approval acts on."
          type: string
        reasonCode:
          description: Stable machine code for display and telemetry only.
          type: string
        requirement:
          description: "Gating tier the verb resolved to: DIRECT, APPROVAL_REQUIRED, or ADVISORY."
          examples:
            - APPROVAL_REQUIRED
          type: string
        resultState:
          description: Canonical operation state after the verb, when it moved one.
          type: string
      required:
        - accepted
        - requirement
        - correlationId
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: 'OpenAPI 3.1 surface for Lerian SPB, the direct integration between the institution and the Brazilian Payment System (SPB) over the National Financial System Network (RSFN). It covers the Reserve Transfer System (STR): message registry and capability catalog, operation lifecycle (bank transfers, IBS repasses, liquidity transfers, returns and cancellations), reserve-account and schedule queries, alçada governance, SME and LDL operations, inbound quarantine triage, reconciliation, and event delivery.'
  license:
    name: Lerian Studio General License
  title: Lerian SPB API
  version: 1.0.0
openapi: 3.1.0
paths:
  /v1/str/audit-records:
    get:
      description: Lists audit evidence records with optional filters by actor, action type, and time window. Cursor-based pagination — pass the nextCursor from a previous response to continue. The cursor is opaque and MUST NOT be parsed by clients.
      operationId: listAuditRecords
      parameters:
        - description: Filter by principal that emitted the action.
          explode: false
          in: query
          name: actorId
          schema:
            description: Filter by principal that emitted the action.
            examples:
              - 550e8400-e29b-41d4-a716-446655440000
            type: string
        - description: Filter by canonical audit action type (e.g. CERTIFICATE_ROTATED).
          explode: false
          in: query
          name: actionType
          schema:
            description: Filter by canonical audit action type (e.g. CERTIFICATE_ROTATED).
            examples:
              - CERTIFICATE_ROTATED
            type: string
        - description: Inclusive lower bound (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          schema:
            description: Inclusive lower bound (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-06-14T12:00:00Z"
            type: string
        - description: Inclusive upper bound (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: endDate
          schema:
            description: Inclusive upper bound (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-06-14T12:00:00Z"
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page (default 20, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Items per page (default 20, max 100).
            examples:
              - 20
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuditRecordListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List audit records
      tags:
        - Audit
      x-mint:
        href: /pt/reference/rails/spb/list-audit-records
  /v1/str/capabilities:
    get:
      description: Returns the public catalog of STR capabilities. Every authenticated caller sees the same rows. Supports filtering by operation family, handling mode, direction, and availability. Cursor-based pagination.
      operationId: listCapabilities
      parameters:
        - description: Exact-match operation family filter (e.g. bankTransfer).
          explode: false
          in: query
          name: operationFamily
          schema:
            description: Exact-match operation family filter (e.g. bankTransfer).
            type: string
        - description: Canonical HandlingMode filter.
          explode: false
          in: query
          name: handlingMode
          schema:
            description: Canonical HandlingMode filter.
            enum:
              - PUBLICLY_SUBMITTABLE
              - RECEIVE_ONLY
              - LIFECYCLE_RESPONSE
              - DIAGNOSTIC_ONLY
              - NOT_APPLICABLE
              - NOT_READY
            type: string
        - description: Direction filter.
          explode: false
          in: query
          name: direction
          schema:
            description: Direction filter.
            enum:
              - INBOUND
              - OUTBOUND
              - BIDIRECTIONAL
            type: string
        - description: Filter by availability flag. Absent means no filter.
          explode: false
          in: query
          name: isAvailable
          schema:
            description: Filter by availability flag. Absent means no filter.
            enum:
              - "true"
              - "false"
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page.
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Items per page.
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CapabilityListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List STR capabilities
      tags:
        - Capabilities
      x-mint:
        href: /pt/reference/rails/spb/list-capabilities
  /v1/str/capabilities/{capabilityId}:
    get:
      description: Returns the detail of a single STR capability identified by its public identifier (e.g. "STR0004").
      operationId: getCapability
      parameters:
        - description: STR capability identifier (e.g. STR0004).
          in: path
          name: capabilityId
          required: true
          schema:
            description: STR capability identifier (e.g. STR0004).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CapabilityDetailResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get capability by ID
      tags:
        - Capabilities
      x-mint:
        href: /pt/reference/rails/spb/get-capability
  /v1/str/certificates:
    get:
      description: Returns the current state of the ICP-Brasil/RSFN certificate set, including purpose, status, validity window, and readiness impact. Private keys and key material are never exposed.
      operationId: listCertificates
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CertificateStatusResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List certificate state
      tags:
        - Certificates
      x-mint:
        href: /pt/reference/rails/spb/list-certificates
  /v1/str/certificates/activate:
    post:
      description: "Prerequisite: the certificate must have been rotated first (see rotateCertificate) — its persisted state must be VALID or EXPIRING and carry the recorded serial. Submits a GEN0006 certificate-activation announcement to BACEN for the current OUTBOUND_SIGNING certificate. The submission is persisted with status SUBMITTED before dispatch; BACEN's GEN0006R1 acknowledgment confirms it via NUOp correlation. Idempotent — the X-Idempotency key lives with the GEN0006 it sent: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer that GEN0006, also after X-TTL has dropped the cached response; the same key with another request answers 422, as does the same key under another current certificate once the cached response is gone."
      operationId: activateCertificate
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ActivateCertificateRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ActivateCertificateResponseWire"
          description: OK
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an activation: the body is that activation and nothing new was sent to BACEN."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the certificate must have been rotated by rotateCertificate before activation."
              operationId: rotateCertificate
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Activate ICP-Brasil certificate on the RSFN (GEN0006)
      tags:
        - Certificates
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/activate-certificate
  /v1/str/certificates/rotate:
    post:
      description: "Prerequisite: this is the first step of the onboarding chain (certificate → readiness → connectivity-test → submit); rotate the certificate before activating it (see activateCertificate), checking readiness (see getReadiness), or submitting any operation. Performs an evidence-emitting hot-reload of the ICP-Brasil/RSFN certificate pair. The new certificate must already exist on disk under the configured base path; this endpoint swaps the in-memory signer, adds the certificate to the keys inbound frames decrypt with (the previous one stays until restart, so frames BACEN encrypted before the activation still open) and emits an audit record. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response. The response NEVER includes the private key path or key material."
      operationId: rotateCertificate
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RotateCertificateRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RotateCertificateResponseWire"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Rotate ICP-Brasil certificate
      tags:
        - Certificates
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/rotate-certificate
  /v1/str/connectivity-tests:
    post:
      description: "Prerequisite: an active certificate (see rotateCertificate, activateCertificate) and a READY readiness report (see getReadiness) before the connectivity test; a passing connectivity test is itself the prerequisite for a submit operation (see createBankTransferOperation). Builds a GEN0001 echo request addressed to the given participant, persists it as SUBMITTED before rail dispatch, and lets the outbound relay dispatch it to the RSFN. The counterparty answers with GEN0001R1 echoing the message back; the response correlates by NUOp and confirms the test. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response."
      operationId: createConnectivityTest
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ConnectivityTestRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConnectivityTestResponse"
          description: Created
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a connectivity test is meaningful."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Initiate connectivity (ECO) test
      tags:
        - Messages
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-connectivity-test
  /v1/str/emission-approvals:
    get:
      description: Returns the queue of outbound emissions parked in PENDING_APPROVAL above their alçada band, awaiting the required distinct-actor signatures before they may liquidate. Each row carries the message's OWN declared amount (verbatim — never a summed position), the N-of-M quorum, the signatures collected so far, the approval deadline, and the maker. Read model only.
      operationId: listEmissionApprovals
      parameters:
        - description: Page size (default 50, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Page size (default 50, max 100).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque pagination cursor from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination cursor from a previous response.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PendingApprovalsListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List emissions pending maker-checker approval
      tags:
        - EmissionApprovals
      x-mint:
        href: /pt/reference/rails/spb/list-emission-approvals
  /v1/str/emission-approvals/{id}/approve:
    post:
      description: Applies one distinct-actor maker-checker signature to a PENDING_APPROVAL emission. The signer is derived from the bearer token. A signer who already signed (duplicate) or who is the maker (self-approval) is rejected; a sign past the approval deadline or on an already-resolved emission is rejected. When the appended signature reaches the required quorum the emission flips to SUBMITTED and the existing outbox dispatcher liquidates it — no dispatcher change.
      operationId: approveEmission
      parameters:
        - description: Outbound message id of the parked emission to sign.
          in: path
          name: id
          required: true
          schema:
            description: Outbound message id of the parked emission to sign.
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmissionApprovalActionResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Approve (sign) a parked emission
      tags:
        - EmissionApprovals
      x-mint:
        href: /pt/reference/rails/spb/approve-emission
  /v1/str/emission-approvals/{id}/deny:
    post:
      description: "Terminalizes a PENDING_APPROVAL emission: a single distinct authorized actor denying flips it to FAILED with the reason recorded — one deny kills it (a denial is not subject to quorum). A FAILED emission is never claimed by the outbox dispatcher, so it never liquidates."
      operationId: denyEmission
      parameters:
        - description: Outbound message id of the parked emission to deny.
          in: path
          name: id
          required: true
          schema:
            description: Outbound message id of the parked emission to deny.
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DenyEmissionRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmissionApprovalActionResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Deny a parked emission
      tags:
        - EmissionApprovals
      x-mint:
        href: /pt/reference/rails/spb/deny-emission
  /v1/str/events/catalog:
    get:
      description: Returns the public, shared catalog of control-plane event types and versions. Every authenticated caller sees the same rows. Subscribers consume this catalog to negotiate event payload shapes.
      operationId: listEventCatalog
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EventCatalogResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List event catalog
      tags:
        - Events
      x-mint:
        href: /pt/reference/rails/spb/list-event-catalog
  /v1/str/gen-notices:
    get:
      description: Returns the durable, queryable log of inbound GEN-family notices (GEN0001 connectivity echo, GEN0004 transmission error, GEN0005 administrative notice) received from BACEN. Each notice carries the sanitized official fields verbatim — never a raw frame echo. Most recent first; optionally filter by noticeType or announcing-participant senderIspb.
      operationId: listGENNotices
      parameters:
        - description: Optional GEN code filter (GEN0001, GEN0004 or GEN0005).
          explode: false
          in: query
          name: noticeType
          schema:
            description: Optional GEN code filter (GEN0001, GEN0004 or GEN0005).
            enum:
              - GEN0001
              - GEN0004
              - GEN0005
            type: string
        - description: Optional announcing-participant ISPB filter (8 uppercase alphanumeric characters).
          explode: false
          in: query
          name: senderIspb
          schema:
            description: Optional announcing-participant ISPB filter (8 uppercase alphanumeric characters).
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page (default 50, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Items per page (default 50, max 100).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GENNoticesResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List inbound GEN notices
      tags:
        - GenNotices
      x-mint:
        href: /pt/reference/rails/spb/list-gen-notices
  /v1/str/governance:
    get:
      description: "Returns the live alçada value-band table and per-message-type signature requirements. Read live at runtime; the configured default is only a seed. While this replica cannot confirm the alçada in force (its runtime-config feed is down or not yet reconciled) the read answers 503 (SPB-9001), as an emission does; a retry reaches a replica that can. This is a classification rule table, never a position."
      operationId: getStrGovernance
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GovernanceConfigResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read the live alçada governance config
      tags:
        - Governance
      x-mint:
        href: /pt/reference/rails/spb/get-str-governance
    put:
      description: "Validates and replaces the alçada band table + per-message-type signature requirements. Validation failure → HTTP 422 (SPB-0003). On success every replica's submit gate reads the new table on its next emission, with no restart, so newly-parked emissions reflect the new requiredSignatures. SPB-only (SPI has no alçada engine). This replaces a rule table, never a balance."
      operationId: putStrGovernance
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GovernanceConfigDTO"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GovernanceConfigResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Replace the alçada governance config
      tags:
        - Governance
      x-mint:
        href: /pt/reference/rails/spb/put-str-governance
  /v1/str/inbound-quarantine:
    get:
      description: Returns a page of inbound frames the STR path could not turn into a persisted message, newest first. Given the stage and message code an INBOUND_QUARANTINED reconciliation case prints, this is how an operator reaches the sibling frames without database access. stage / messageCode / nuOp are exact-match filters; receivedAt bounds are inclusive. Each row publishes its parkKey — the subject of the replay command — plus whether a replay already ran and why the last attempt failed. The response NEVER carries the frame itself (no field on the row can hold it) and carries no monetary field.
      operationId: listInboundQuarantine
      parameters:
        - description: Triage-stage filter (exact match), e.g. envelope_decode, xsd_validation, error_return_processing. A stage outside the vocabulary the table accepts is refused (SPB-0003) rather than answered with an empty page.
          explode: false
          in: query
          name: stage
          schema:
            description: Triage-stage filter (exact match), e.g. envelope_decode, xsd_validation, error_return_processing. A stage outside the vocabulary the table accepts is refused (SPB-0003) rather than answered with an empty page.
            type: string
        - description: Message-code filter (EXACT match only — the column is hash-indexed).
          explode: false
          in: query
          name: messageCode
          schema:
            description: Message-code filter (EXACT match only — the column is hash-indexed).
            type: string
        - description: Operation-reference filter (EXACT match only — the column is hash-indexed).
          explode: false
          in: query
          name: nuOp
          schema:
            description: Operation-reference filter (EXACT match only — the column is hash-indexed).
            type: string
        - description: Inclusive start of the receivedAt window (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          schema:
            description: Inclusive start of the receivedAt window (RFC3339 timestamp or YYYY-MM-DD).
            type: string
        - description: Inclusive end of the receivedAt window (RFC3339 timestamp or YYYY-MM-DD); a bare date includes the whole day.
          explode: false
          in: query
          name: endDate
          schema:
            description: Inclusive end of the receivedAt window (RFC3339 timestamp or YYYY-MM-DD); a bare date includes the whole day.
            type: string
        - description: Opaque pagination cursor from a previous response. A malformed cursor is refused (SPB-0003), never silently restarted from page one.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination cursor from a previous response. A malformed cursor is refused (SPB-0003), never silently restarted from page one.
            type: string
        - description: Page size (1-100, default 50).
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Page size (1-100, default 50).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InboundQuarantineListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List quarantined inbound frames (operator triage)
      tags:
        - Reconciliation
      x-mint:
        href: /pt/reference/rails/spb/list-inbound-quarantine
  /v1/str/inbound-quarantine/{parkKey}/replay:
    post:
      description: "Puts one parked frame's stored bytes back through the inbound path, exactly as a live delivery runs them, because the reason it was refused — a message code or an element from a newer BACEN catalogue, a datastore that was down — has stopped being true. THE REPLAY SENDS NO NOTICE OF ITS OWN TO BACEN: no second courtesy notice, no correction, no retraction — the notice they already hold for these bytes stays a historical fact. But a frame that decodes and whose processing requires an answer PRODUCES that answer through the normal inbound path, possibly long after the original. The bytes are replayed verbatim; nothing is re-framed, re-addressed or repaired. One frame per command, never a sweep. An unknown parkKey is refused; a frame that was already replayed is refused naming who replayed it and when; a frame that fails again is refused and stays parked and replayable, with the reason readable as lastReplayError on the triage listing. Every attempt is recorded on the audit trail under the operator derived from the bearer token. Requires str-inbound-quarantine:replay — the triage read grant does not carry it."
      operationId: replayInboundQuarantineFrame
      parameters:
        - description: "The frame's identity: the 64-character lowercase sha256 hex of the raw parked bytes, as published on the triage listing."
          in: path
          name: parkKey
          required: true
          schema:
            description: "The frame's identity: the 64-character lowercase sha256 hex of the raw parked bytes, as published on the triage listing."
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/InboundQuarantineReplayResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Replay one quarantined inbound frame
      tags:
        - Reconciliation
      x-mint:
        href: /pt/reference/rails/spb/replay-inbound-quarantine-frame
  /v1/str/messages:
    get:
      description: Lists outbound and inbound STR messages with optional filters and cursor-based pagination. The cursor is opaque — pass the nextCursor value from a previous response to continue. Filters can be combined freely; results are merged in the requested sort order.
      operationId: listMessages
      parameters:
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Page size (default 20, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Page size (default 20, max 100).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Sort order (default desc, most recent first).
          explode: false
          in: query
          name: sort_order
          schema:
            description: Sort order (default desc, most recent first).
            enum:
              - asc
              - desc
            type: string
        - description: Filter by STR message type (e.g. STR0004).
          explode: false
          in: query
          name: message_type
          schema:
            description: Filter by STR message type (e.g. STR0004).
            type: string
        - description: "Filter by processing status. PENDING_APPROVAL is the maker-checker parked state: an emission above its alçada band awaiting its distinct-actor signatures, filterable here exactly as it is published on the log rows."
          explode: false
          in: query
          name: status
          schema:
            description: "Filter by processing status. PENDING_APPROVAL is the maker-checker parked state: an emission above its alçada band awaiting its distinct-actor signatures, filterable here exactly as it is published on the log rows."
            enum:
              - SUBMITTED
              - DELIVERED
              - CONFIRMED
              - REJECTED
              - FAILED
              - RETURNED
              - CANCELED
              - RECEIVED
              - PENDING_APPROVAL
            type: string
        - description: Filter by message direction.
          explode: false
          in: query
          name: direction
          schema:
            description: Filter by message direction.
            enum:
              - INBOUND
              - OUTBOUND
            type: string
        - description: Lower bound for created_at (RFC3339 or YYYY-MM-DD).
          explode: false
          in: query
          name: start_date
          schema:
            description: Lower bound for created_at (RFC3339 or YYYY-MM-DD).
            type: string
        - description: Upper bound for created_at (RFC3339 or YYYY-MM-DD).
          explode: false
          in: query
          name: end_date
          schema:
            description: Upper bound for created_at (RFC3339 or YYYY-MM-DD).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListMessagesResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List STR messages
      tags:
        - Messages
      x-mint:
        href: /pt/reference/rails/spb/list-messages
  /v1/str/messages/compose:
    post:
      description: "Catalog-gated, maker-checker-routed, per-type CURATED message-compose surface. The chosen capabilityId must be in the compose allowlist (STR0004/STR0005/STR0006/STR0007/STR0008/STR0046/STR0047/STR0048/STR0052/STR0053), resolve in the catalog, and be PUBLICLY_SUBMITTABLE; otherwise the request is rejected SPB-0003 (HTTP 422). The message builds through the shared compose pipeline and inherits the alçada emission gate: an amount above its band PARKS in PENDING_APPROVAL (visible in GET /v1/str/emission-approvals, emissionApprovalId set) and dispatches on quorum; below band it is SUBMITTED. Idempotent — the X-Idempotency key lives with the message: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored message with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422. The declared amount is forwarded verbatim; no position is summed."
      operationId: composeStrMessage
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ComposeMessageRequest"
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ComposeMessageResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a message: the body is that message and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Compose and send a curated STR message
      tags:
        - Messages
      x-mint:
        href: /pt/reference/rails/spb/compose-str-message
  /v1/str/messages/{nuOp}:
    get:
      description: "Returns the message-log detail for an STR message identified by its NUOp: the status and BACEN-receipt fields, the structured payload, and the resolved original<->correspondent counterpart. The signed on-wire frame is NOT returned here — it is read at GET /v1/str/messages/{nuOp}/frame, guarded by its own scope; this body only labels whether one was retained (payloadFormat). Searches outbound messages first, then inbound ones by their own NUOp, then by the BACEN NUOp they arrived with (the nuOp str.operation.received carries). The NUOp is a 23-character BACEN identifier: ISPB[8]+DATE[8]+SEQ[7]."
      operationId: getMessageStatus
      parameters:
        - description: "Message NUOp (23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Message NUOp (23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageDetailResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get STR message detail
      tags:
        - Messages
      x-mint:
        href: /pt/reference/rails/spb/get-message-status
  /v1/str/messages/{nuOp}/frame:
    get:
      description: "Returns the signed on-wire STR frame for a message identified by its NUOp: the persisted on-wire bytes decoded to XML and labeled reconstructed (the literal sent bytes are not separately retained). The artifact is served WHOLE — every identity exactly as transmitted, with no masking and no content transformation. It is guarded separately from the message log: reading the log (list and metadata) does not open the frame. A message with no retained on-wire bytes (an inbound row, or an outbound without a retry payload) answers 200 with payloadFormat \"structured\" and no reconstructedXml — the message exists and the frame was never retained; that is the legitimate answer, not an error. A NUOp that matches no message answers 404. The NUOp is a 23-character BACEN identifier: ISPB[8]+DATE[8]+SEQ[7]."
      operationId: getMessageFrame
      parameters:
        - description: "Message NUOp (23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Message NUOp (23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MessageFrameResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get the signed STR message frame
      tags:
        - Messages
      x-mint:
        href: /pt/reference/rails/spb/get-message-frame
  /v1/str/operational-aggregates:
    get:
      description: Returns pre-computed aggregate buckets matching the requested window (hour or day) + date range. Buckets are ordered by bucket_start ASC.
      operationId: getOperationalAggregates
      parameters:
        - description: "Aggregation window: 'hour' or 'day'."
          explode: false
          in: query
          name: window
          required: true
          schema:
            description: "Aggregation window: 'hour' or 'day'."
            examples:
              - hour
            type: string
        - description: Inclusive start (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          required: true
          schema:
            description: Inclusive start (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-06-14T12:00:00Z"
            type: string
        - description: Inclusive end (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: endDate
          required: true
          schema:
            description: Inclusive end (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-06-14T12:00:00Z"
            type: string
        - description: Optional operation family filter.
          explode: false
          in: query
          name: operationFamily
          schema:
            description: Optional operation family filter.
            type: string
        - description: Optional lifecycle status filter.
          explode: false
          in: query
          name: status
          schema:
            description: Optional lifecycle status filter.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationalAggregatesResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get operational aggregates
      tags:
        - OperationalIntelligence
      x-mint:
        href: /pt/reference/rails/spb/get-operational-aggregates
  /v1/str/operational-summary:
    get:
      description: Returns a dashboard-ready summary composing readiness, operation counts (grouped by family + status), reconciliation backlog (open/in-progress only), and certificate warnings (any non-VALID status). Computed on demand from live source tables.
      operationId: getOperationalSummary
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationalSummaryResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get operational summary
      tags:
        - OperationalIntelligence
      x-mint:
        href: /pt/reference/rails/spb/get-operational-summary
  /v1/str/operations:
    get:
      description: Lists operations with optional filters. Cursor-based pagination — pass the nextCursor from a previous response to continue. The cursor is opaque and MUST NOT be parsed by clients. Raw protocol payload fields never appear in responses.
      operationId: listOperations
      parameters:
        - description: Operation family filter (e.g. bankTransfer).
          explode: false
          in: query
          name: operationFamily
          schema:
            description: Operation family filter (e.g. bankTransfer).
            type: string
        - description: Capability filter (e.g. STR0004).
          explode: false
          in: query
          name: capabilityId
          schema:
            description: Capability filter (e.g. STR0004).
            type: string
        - description: Public lifecycle status filter. Repeat the param for multiple values (?status=A&status=B) — WHERE status IN (...).
          explode: true
          in: query
          name: status
          schema:
            description: Public lifecycle status filter. Repeat the param for multiple values (?status=A&status=B) — WHERE status IN (...).
            items:
              type: string
            type:
              - array
              - "null"
        - description: Direction filter (INBOUND or OUTBOUND).
          explode: false
          in: query
          name: direction
          schema:
            description: Direction filter (INBOUND or OUTBOUND).
            type: string
        - description: Inclusive lower bound (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          schema:
            description: Inclusive lower bound (RFC3339 timestamp or YYYY-MM-DD).
            type: string
        - description: Inclusive upper bound (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: endDate
          schema:
            description: Inclusive upper bound (RFC3339 timestamp or YYYY-MM-DD).
            type: string
        - description: Filter by request correlation identity.
          explode: false
          in: query
          name: correlationId
          schema:
            description: Filter by request correlation identity.
            type: string
        - description: Filter by STR protocol nuOp.
          explode: false
          in: query
          name: nuOp
          schema:
            description: Filter by STR protocol nuOp.
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page (default 20, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Items per page (default 20, max 100).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List operations
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/list-operations
  /v1/str/operations/auto-transfer-config:
    post:
      description: "Prerequisite: the rail must be ready before a submit — an active certificate (see rotateCertificate, activateCertificate), a READY readiness report (see getReadiness), and a passing connectivity test (see createConnectivityTest). Declares the STR's automatic-transfer policy per account class (the platform emits wire code LPI0005): for EACH class (RB/CL and CCME) set exactly ONE of {percent, value} — a value of '0'/'0.00' disables auto-transfer for that class. 'Last message wins': a new config fully replaces the prior one. Persists the last-sent config frame and returns the derived wire code, the submit status, and the NUOp. This means dispatch was accepted, not BACEN confirmation; the STR acknowledges asynchronously (LPI0005R1) and later reports each automatic transfer it performs (LPI0006). Lerian SPB forwards the config values verbatim; it performs NO arithmetic. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response."
      operationId: createAutoTransferConfig
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateAutoTransferConfigRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AutoTransferConfigAcceptedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a config frame: the body is that frame and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a submit is accepted."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Set Conta-PI auto-transfer configuration
      tags:
        - Operations
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-auto-transfer-config
  /v1/str/operations/bank-transfers:
    post:
      description: "Prerequisite: the rail must be ready before a submit — an active certificate (see rotateCertificate, activateCertificate), a READY readiness report (see getReadiness), and a passing connectivity test (see createConnectivityTest). Accepts a bank transfer operation through the operation-centric API. The client declares the typed debtor and creditor roles (sender.party / recipient.party); the platform DERIVES the BACEN STR transfer code (STR0004 institution→institution, STR0005 non-account-holders, STR0006 client→IF, STR0007 IF→client, STR0008 client→client), persists the operation aggregate and SUBMITTED outbound relay work, and returns the canonical OperationAccepted envelope. This means dispatch was accepted, not BACEN settlement confirmation. Idempotent — the X-Idempotency key lives with the operation: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored operation with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createBankTransferOperation
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBankTransferOperationRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationAcceptedResponse"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an operation: the body is that operation and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a submit is accepted."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create bank transfer operation
      tags:
        - Operations
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-bank-transfer-operation
  /v1/str/operations/bank-transfers/returns:
    post:
      description: "Gives back, by STR0010, a TED credit this institution received before Lerian SPB, which holds no operation of it; otherwise as createBankTransferReturnOperation, whose outcome, alçada and idempotency this route shares. A credit Lerian SPB did receive answers SPB-3006, and so does a numCtrlSTROr dated after the cut-over day, the date in the earliest NumCtrlSTR of a TED credit Lerian SPB received, because Lerian SPB may still hold such a credit in its inbound quarantine. The body declares what that route reads from the received credit: its NumCtrlSTR (numCtrlSTROr), its full amount and the ISPB that sent it (originalSenderIspb, which the return credits). BACEN's error list has the STR refuse an unknown original (ESTR0010) and an amount above the original's (ESTR0025), which closes the operation FAILED; the catalog binds no refusal of a second return or a smaller amount to STR0010. The 409 for a numCtrlSTROr that already has a standing return covers only returns Lerian SPB sent."
      operationId: createDeclaredBankTransferReturnOperation
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateDeclaredBankTransferReturnRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationAcceptedResponse"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an operation: the body is that operation and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Return a TED credit received before Lerian SPB
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/return-a-ted-credit-received-before-lerian-spb
  /v1/str/operations/bank-transfers/{operationId}/cancellations:
    post:
      description: "Prerequisite: the parent operation must exist and admit cancellation — read its state via getOperation (GET /v1/str/operations/{operationId}); the {operationId} path segment structurally ties the cancellation to its parent. A transfer is cancellable until it settles; once settled it takes a return instead (SPB-3006). Two endings: a transfer the STR already holds is cancelled by an STR0011 the STR adjudicates, and the cancellation operation comes back CANCEL_REQUESTED; a transfer that never reached the wire is abandoned locally, nothing is sent to BACEN, and the cancellation operation comes back already CANCELLED. A transfer whose dispatch may have reached the STR but is still unresolved answers SPB-3006; retry the cancellation once its dispatch resolves. Idempotent — the X-Idempotency key lives with the operation: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored operation with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createBankTransferCancellationOperation
      parameters:
        - description: Original bank-transfer operation UUID.
          in: path
          name: operationId
          required: true
          schema:
            description: Original bank-transfer operation UUID.
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBankTransferCancellationRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationAcceptedResponse"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an operation: the body is that operation and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Lifecycle prerequisite: the parent operation read by getOperation gates cancellation eligibility."
              operationId: getOperation
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create bank transfer cancellation operation
      tags:
        - Operations
        - lifecycle
      x-mint:
        href: /pt/reference/rails/spb/create-bank-transfer-cancellation-operation
  /v1/str/operations/bank-transfers/{operationId}/returns:
    post:
      description: "Gives back, by STR0010 (devolução de transferência indevida), a TED credit this institution received. Prerequisite: the {operationId} path segment names the received credit, an INBOUND bank-transfer operation from STR0004R2..STR0008R2 in status DELIVERED — read it via getOperation (GET /v1/str/operations/{operationId}); any other operation answers SPB-3006. The body carries only the reason (returnCode) and an optional description: the debited and credited ISPBs (this institution, then the credit's sender), the amount (the credit's full amount) and NumCtrlSTROr (the credit's NumCtrlSTR) come from the received credit, and a credit that names another institution as credited is refused. A credit is returned once: a second return while one stands answers 409 (a rejected or failed one leaves the credit returnable). The accepted operation is RETURN_REQUESTED and its protocolMetadata.nuOp is the STR0010's NUOp, the key its STR0010R1 answer and the settlement fact carry; an Efetivado STR0010R1 settles it as its own transfer and closes the operation RETURNED. Above the client's alçada band the frame parks (status PENDING_APPROVAL) and leaves for the STR only when the quorum signs; a denial or expiry ends it without dispatch. Idempotent — the X-Idempotency key lives with the operation: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored operation with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createBankTransferReturnOperation
      parameters:
        - description: Operation UUID of the received TED credit being returned.
          in: path
          name: operationId
          required: true
          schema:
            description: Operation UUID of the received TED credit being returned.
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBankTransferReturnRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationAcceptedResponse"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an operation: the body is that operation and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Lifecycle prerequisite: the operation read by getOperation must be a received TED credit (INBOUND, STR0004R2..STR0008R2) in status DELIVERED before a return is accepted."
              operationId: getOperation
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create bank transfer return operation
      tags:
        - Operations
        - lifecycle
      x-mint:
        href: /pt/reference/rails/spb/create-bank-transfer-return-operation
  /v1/str/operations/ibs-repasses:
    post:
      description: "Prerequisite: the rail must be ready before a submit — an active certificate (see rotateCertificate, activateCertificate), a READY readiness report (see getReadiness), and a passing connectivity test (see createConnectivityTest). Accepts a STR0053 IBS-repasse operation (reserve repasse of IBS settlement values to the comitê gestor) through the operation-centric API. The handler translates the JSON request into the STR0053 XML request path, persists the operation aggregate and SUBMITTED outbound relay work, and returns the canonical OperationAccepted envelope. Dispatch was accepted, not BACEN settlement confirmation. Idempotent — the X-Idempotency key lives with the operation: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored operation with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createIBSRepasseOperation
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the operation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateIBSRepasseOperationRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationAcceptedResponse"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an operation: the body is that operation and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a submit is accepted."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create IBS repasse operation
      tags:
        - Operations
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-ibs-repasse-operation
  /v1/str/operations/ldl-deposits:
    post:
      description: "Commands the outbound LDL0022 operational deposit of one registered SILOC OT deposit-required advisory, the first time or again after its LDL0022R1 came back rejected or cancelled or the STR refused the frame (LDL0022E). The body names the advisory only: the amount, the side (DEBIT), the NUOps, the NumCtrlLDL and the period come from the advisory, the ISPBs (funding IF + SILOC câmara) and the movement date from the server, and every deposit mints its own NumCtrlIF. The advisory's traceability reaches the deposit facts. An unknown advisory answers 404; a credit-expected advisory 422; an advisory whose deposit is awaiting, pending or effected at the STR, or that a later LDL0021 of the same cycle (a recálculo round) replaced, answers 409. The command is persisted idempotently and its signed LDL0022 frame is enqueued for STR dispatch in the same transaction. This means dispatch was accepted, not SILOC settlement confirmation; the outcome arrives asynchronously on the LDL0022R1 leg. Above the client's alçada band the frame parks (status PENDING_APPROVAL) and leaves for the STR only when the quorum signs; a denial or expiry ends it without dispatch. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response. Lerian SPB EMITS the deposit-command fact + correlation and routes settlement; it holds NO SILOC position."
      operationId: createLDLDeposit
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateLDLDepositRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LDLDepositAcceptedResponseWire"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a deposit: the body is that deposit and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create SILOC operational deposit (LDL0022)
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/create-ldl-deposit
  /v1/str/operations/ldl-settlements:
    post:
      description: "Commands one of the five STR settlement transfers of the Liquidação Multilateral de Câmaras family, chosen by messageType: LDL0004 settles this participant's DEBIT net position for a cycle (Reservas Bancárias to the câmara's Conta de Liquidação), LDL0006 returns funds transferred in error quoting the original STR control number, LDL0008 funds the settlement of asset events and emissions, LDL0011 moves the câmara's current account into its settlement account debiting a named branch and account, and LDL0014 funds a deposit at the câmara. The client declares the total, its own control number, and the code-specific detail — the câmara control numbers and the per-participant breakdown reach the wire VERBATIM because they originate on the SILOC leg this rail never receives, so inventing one would forge another system's identifier. The platform SERVER-DERIVES the wire ISPBs (this participant and the câmara) and the movement date; none is client-supplied. A detail field the declared messageType does not carry is refused rather than dropped, and a control number another outbound entry already carries is refused as a conflict. The command is persisted idempotently and its signed frame enqueued for STR dispatch in the same transaction. This means dispatch was accepted, not BACEN settlement confirmation; the outcome arrives asynchronously on the code's R1 leg. Above the client's alçada band the frame parks (status PENDING_APPROVAL) and leaves for the STR only when the quorum signs; a denial or expiry ends it without dispatch. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response. Lerian SPB EMITS the settlement-command fact and routes settlement; the LDL cycle belongs to the câmara and the accounting position to the client's ledger — it holds neither, and never reconciles the breakdown against the declared total."
      operationId: createLDLSettlement
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateLDLSettlementRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LDLSettlementAcceptedResponseWire"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a settlement: the body is that settlement and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create LDL settlement transfer (LDL0004/0006/0008/0011/0014)
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/create-ldl-settlement
  /v1/str/operations/liquidity-transfers:
    post:
      description: "Prerequisite: the rail must be ready before a submit — an active certificate (see rotateCertificate, activateCertificate), a READY readiness report (see getReadiness), and a passing connectivity test (see createConnectivityTest). Accepts an LPI Conta-PI liquidity transfer through the operation-centric API: direction aporte funds the FI's Conta PI from its RB/CL (the platform DERIVES wire code LPI0001), resgate recalls funds (LPI0003) — the platform never composes the wire code. Persists a PENDING liquidity-transfer projection and returns the operation id, the PENDING status, and the derived wire code. This means dispatch was accepted, not BACEN settlement confirmation; the settlement arrives asynchronously on the inbound STR R-leg and is read via getLiquidityTransfer. An out-of-window aporte is rejected (RLPI0007). Lerian SPB EMITS the movement fact and projects the Conta-PI balance verbatim; it never computes a position. Idempotent — the X-Idempotency key lives with the movement: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored movement with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createLiquidityTransferOperation
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateLiquidityTransferRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LiquidityTransferAcceptedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a movement: the body is that movement and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a submit is accepted."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create Conta-PI liquidity transfer
      tags:
        - Operations
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-liquidity-transfer-operation
  /v1/str/operations/liquidity-transfers/{operationId}:
    get:
      description: Reads the projection of a previously submitted LPI Conta-PI liquidity transfer by its operation id. Returns PENDING until the inbound STR R-leg (LPI0001R1 / LPI0003R1) arrives, then SETTLED (or REJECTED) with the STR settlement confirmation (numCtrlSTR / sitLancSTR) BACEN sent, projected verbatim. Unknown ids surface as not-found (SPB-0010). Lerian SPB projects the settlement; it never computes a position.
      operationId: getLiquidityTransfer
      parameters:
        - description: Liquidity-transfer operation UUID returned by the create endpoint.
          in: path
          name: operationId
          required: true
          schema:
            description: Liquidity-transfer operation UUID returned by the create endpoint.
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LiquidityTransferStatusResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get Conta-PI liquidity transfer status
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/get-liquidity-transfer
  /v1/str/operations/ltr-transfers:
    post:
      description: "Commands one of the three STR-addressed transfers of the Liquidação Bruta ou Bilateral de Operações family, chosen by messageType: LTR0003 moves Reservas Bancárias to another institution and has the STR notify the Câmara, LTR0004 settles this participant's negotiation result into the Câmara's account, and LTR0006 returns funds transferred in error quoting the original STR control number. The client declares the amount, its own control number, the credited institution where the code names one, and the code-specific detail — the Câmara control number reaches the wire VERBATIM because it originates on the SILOC leg this rail never receives, so inventing one would forge another system's identifier. The platform SERVER-DERIVES the wire ISPBs (this participant and the câmara) and the movement date; none is client-supplied. A detail field the declared messageType does not carry is refused rather than dropped, and a control number another outbound entry already carries is refused as a conflict, as is an LTR0004 whose câmara result (numCtrlLTROr at that câmara) already has an LTR0004 accepted, pending, awaiting confirmation or settled; a rejected or cancelled one, or one the câmara returned whole by LTR0006, leaves the result payable. The command is persisted idempotently and its signed frame enqueued for STR dispatch in the same transaction. This means dispatch was accepted, not BACEN settlement confirmation; the outcome arrives asynchronously on the code's R1 leg, where only an Efetivado status emits a settled fact — the bilateral confirmation states 50/51/52 emit nothing. Above the client's alçada band the frame parks (status PENDING_APPROVAL) and leaves for the STR only when the quorum signs; a denial or expiry ends it without dispatch. Idempotent — replaying the same X-Idempotency key with the same parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) returns the cached response. Lerian SPB routes settlement and emits the terminal fact; the LBTR obligation belongs to the Câmara and the accounting position to the client's ledger — it holds neither."
      operationId: createLTRTransfer
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateLTRTransferRequest"
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LTRTransferAcceptedResponseWire"
          description: Created
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a transfer: the body is that transfer and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create LTR transfer (LTR0003/0004/0006)
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/create-ltr-transfer
  /v1/str/operations/rediscounts:
    post:
      description: "Commands a redesconto do Banco Central — collateralised BCB lending against Selic-registered federal securities — and returns the operation id plus a PENDING state. One door serves the four operator-facing kinds and the server derives the RDC wire code: a contract borrows (RDC0002 intraday, RDC0003 one business day, RDC0004 tied to a Selic purchase, RDC0009 tied to a clearing-house collateral release, RDC0013 a consolidation), a payment gives it back (RDC0007 in cash, RDC0008 funded by selling the pledged securities), a conversion liquidates an open operation and opens a repriced replacement (RDC0005), and a cancellation withdraws a request still pending at Selic (RDC0014). The outcome arrives asynchronously on the response leg — and an ACCEPTED answer is NOT a settlement: Selic may hold the request for want of securities, in which case the operation is registered, no money has moved, and no settlement fact is emitted. Lerian SPB records what BACEN answers; it holds no position and performs no balance arithmetic. Idempotent — the X-Idempotency key lives with the rediscount: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored rediscount with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createRediscount
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the rediscount.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the rediscount.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRediscountRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RediscountAcceptedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a rediscount: the body is that rediscount and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Command a rediscount operation
      tags:
        - Rediscounts
      x-mint:
        href: /pt/reference/rails/spb/create-rediscount
  /v1/str/operations/rediscounts/{operationId}:
    get:
      description: "Reads the lifecycle of a commanded rediscount by its operation id. PENDING until BACEN answers, then one of five states — and the distinction between two of them is the point of this read. ACCEPTED means BACEN registered the request and Selic is HOLDING it because the institution is short of securities: it is neither settled nor failed, no money moved, and the end-of-day sweep may still cancel it or roll it into one business day. SETTLED means a Reservas Bancárias entry exists, evidenced by the numCtrlSTR BACEN stamped, and it is deliberately NOT terminal — a settled rediscount is still an open borrowing until it is repaid, converted or swept. A payment response also reports the remaining balance BACEN sent, verbatim: Lerian SPB never derives it by subtracting a payment from a contract."
      operationId: getRediscount
      parameters:
        - description: Rediscount operation UUID returned by the create endpoint.
          in: path
          name: operationId
          required: true
          schema:
            description: Rediscount operation UUID returned by the create endpoint.
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RediscountStatusResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read rediscount operation status
      tags:
        - Rediscounts
      x-mint:
        href: /pt/reference/rails/spb/get-rediscount
  /v1/str/operations/sme-transfers:
    post:
      description: "Prerequisite: the rail must be ready before a submit — an active certificate (see rotateCertificate, activateCertificate), a READY readiness report (see getReadiness), and a passing connectivity test (see createConnectivityTest). Accepts an SME movement of an IEME's conta correspondente a moeda eletrônica (CCME) through the operation-centric API: kind deposit funds the CCME from Reservas Bancárias / Conta de Liquidação (the platform DERIVES wire code SME0001), withdrawal recalls funds out of the CCME (SME0002), and return gives back an entry received in error quoting its original STR control number (SME0004) — the platform never composes the wire code, and the issuer ISPB is resolved server-side. On a deposit, the counterparty ISPB reaches the wire as the ISPBIEME only for an IEME that does NOT participate in the STR (RSME0001): participation is read from the participant directory the STR itself broadcasts, and a deposit naming an institution the STR announced as a participant is refused as a validation error before it becomes a durable movement — while a deposit into the deployment's own CCME carries no ISPBIEME at all. Ignorance does not block: when the directory holds no answer for that ISPB the movement proceeds, and BACEN remains the authoritative validator of the condition. Persists a PENDING movement projection BEFORE the frame is sent and returns the operation id, the PENDING status, and the derived wire code. This means dispatch was accepted, not BACEN settlement confirmation; the settlement arrives asynchronously on the inbound STR R-leg. Every accepted movement durably records the authenticated operator that commanded it. Lerian SPB EMITS the movement fact and projects the settlement verbatim; it never computes or holds a CCME position. Idempotent — the X-Idempotency key lives with the movement: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored movement with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createSMETransferOperation
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSMETransferRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMETransferAcceptedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a movement: the body is that movement and nothing new was sent to the STR."
                type: string
          links:
            prerequisite:
              description: "Onboarding prerequisite: the rail readiness reported by getReadiness must be READY before a submit is accepted."
              operationId: getReadiness
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create SME electronic-money movement
      tags:
        - Operations
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/create-sme-transfer-operation
  /v1/str/operations/sme-transfers/{operationId}:
    get:
      description: Reads the projection of a previously submitted SME movement of an IEME's conta correspondente a moeda eletrônica (CCME) by its operation id. Returns PENDING until the inbound STR R-leg (SME0001R1 / SME0002R1 / SME0004R1) arrives, then SETTLED (or REJECTED) with the STR settlement confirmation (numCtrlSTR / sitLancSTR) BACEN sent, projected verbatim. Unknown ids surface as not-found (SPB-0010). Lerian SPB projects the settlement; it never computes or holds a CCME position.
      operationId: getSMETransfer
      parameters:
        - description: SME movement operation UUID returned by the create endpoint.
          in: path
          name: operationId
          required: true
          schema:
            description: SME movement operation UUID returned by the create endpoint.
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMETransferStatusResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get SME electronic-money movement status
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/get-sme-transfer
  /v1/str/operations/{operationId}:
    get:
      description: Returns the sanitized detail of a single operation. Unknown ids surface as not-found (SPB-0010); the service never leaks the existence of an operation it does not own. Raw protocol payload fields never appear in responses.
      operationId: getOperation
      parameters:
        - description: Operation UUID.
          in: path
          name: operationId
          required: true
          schema:
            description: Operation UUID.
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationDetailResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get operation detail
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/get-operation
  /v1/str/operations/{operationId}/audit-records:
    get:
      description: Lists audit evidence records associated with a specific operation, identified by its UUID. Cursor-based pagination — same semantics as the audit-records list.
      operationId: listAuditRecordsForOperation
      parameters:
        - description: Operation UUID.
          in: path
          name: operationId
          required: true
          schema:
            description: Operation UUID.
            examples:
              - 6c8e7e9a-2f3b-4c5d-8e9f-0a1b2c3d4e5f
            format: uuid
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page (default 20, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Items per page (default 20, max 100).
            examples:
              - 20
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AuditRecordListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List audit records for an operation
      tags:
        - Audit
      x-mint:
        href: /pt/reference/rails/spb/list-audit-records-for-operation
  /v1/str/operations/{operationId}/timeline:
    get:
      description: Returns chronological lifecycle entries for one operation. Unknown ids surface as not-found (SPB-0010). Sort order is occurred_at ASC. Raw protocol payload fields never appear in responses.
      operationId: getOperationTimeline
      parameters:
        - description: Operation UUID.
          in: path
          name: operationId
          required: true
          schema:
            description: Operation UUID.
            format: uuid
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OperationTimelineResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List operation timeline
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/get-operation-timeline
  /v1/str/rco-advices:
    get:
      description: "Lists the RCO0019 notices the STR delivered: compulsory deposits a THIRD party made into this institution's account, which this rail never commanded and only learned about. They correlate to nothing sent from here, so each carries only BACEN's own control number. Every value is served verbatim."
      operationId: listRCOAdvices
      parameters:
        - description: Filter by credited institution.
          explode: false
          in: query
          name: creditedISPB
          schema:
            description: Filter by credited institution.
            pattern: ^[0-9A-Z]{8}$
            type: string
        - description: Inclusive window start over the time this rail RECEIVED the advice (RFC3339 or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          schema:
            description: Inclusive window start over the time this rail RECEIVED the advice (RFC3339 or YYYY-MM-DD).
            type: string
        - description: Inclusive window end. A bare date spans the whole day.
          explode: false
          in: query
          name: endDate
          schema:
            description: Inclusive window end. A bare date spans the whole day.
            type: string
        - description: Page size (clamped server-side).
          explode: false
          in: query
          name: limit
          schema:
            description: Page size (clamped server-side).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque continuation token from a previous page.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque continuation token from a previous page.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListRCOAdvicesOutputBody"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List third-party compulsory deposits
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/list-rco-advices
  /v1/str/rco-filing-queries:
    post:
      description: "Submits one of the two reporting consultas: the period calendar (RCO0001), which publishes both windows and both deadlines, or the filing read-back (RCO0003). A read-back's reference date must fall inside the period being queried (RRCO0002), which is checked before the frame is built. The answer arrives asynchronously and lands on the compulsory period row."
      operationId: createRCOFilingQuery
      parameters:
        - description: Idempotency key. Required on every mutation — a consulta is an emission, not a read of this rail.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation — a consulta is an emission, not a read of this rail.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRCOFilingQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RCOSubmittedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the RCO service."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Ask for the compulsory period calendar or read a filing back
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/create-rco-filing-query
  /v1/str/rco-filings:
    get:
      description: Lists the compulsory periods this rail knows about — what has been filed, when each period closes for filing and for amendment, and the requirement BACEN last published against it, carried verbatim.
      operationId: listRCOFilings
      parameters:
        - description: Filter by institution.
          explode: false
          in: query
          name: ispbIF
          schema:
            description: Filter by institution.
            pattern: ^[0-9A-Z]{8}$
            type: string
        - description: Filter by CodRCO.
          explode: false
          in: query
          name: compulsoryCode
          schema:
            description: Filter by CodRCO.
            type: string
        - description: "Filter by filing state. UNFILED is the state a recomputation describes: the deadline passed without a complete statement."
          explode: false
          in: query
          name: status
          schema:
            description: "Filter by filing state. UNFILED is the state a recomputation describes: the deadline passed without a complete statement."
            enum:
              - OPEN
              - PARTIAL
              - FILED
              - AMENDED
              - UNFILED
            type: string
        - description: Page size (clamped server-side).
          explode: false
          in: query
          name: limit
          schema:
            description: Page size (clamped server-side).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque continuation token from a previous page.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque continuation token from a previous page.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListRCOFilingsOutputBody"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List compulsory periods and their requirements
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/list-rco-filings
    post:
      description: "Files the compulsory statement for a calculation period: one or more days, each carrying its incidence items. Every day must fall inside the declared period — a day outside it is refused here rather than spent on a round trip BACEN would reject. The requirement BACEN computes from the filing arrives on the answer and lands on the period row. Idempotent on X-Idempotency."
      operationId: createRCOFiling
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRCOFilingRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RCOSubmittedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a filing: the body is that filing and nothing new was sent to the RCO service."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: File the compulsory statement (RCO0002)
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/create-rco-filing
  /v1/str/rco-movements:
    get:
      description: Lists the compulsory-account movements this rail commanded, newest first, with the situation BACEN answered with carried verbatim beside the derived lifecycle class.
      operationId: listRCOMovements
      parameters:
        - description: Filter by direction.
          explode: false
          in: query
          name: kind
          schema:
            description: Filter by direction.
            enum:
              - withdrawal
              - deposit
            type: string
        - description: Filter by lifecycle class.
          explode: false
          in: query
          name: status
          schema:
            description: Filter by lifecycle class.
            enum:
              - PENDING
              - SETTLED
              - REJECTED
              - CANCELED
            type: string
        - description: "Filter by DtMovto, matched EXACTLY as BACEN spells it. Not a range: the column is wire text carried verbatim, so a range would impose this rail's calendar on a third party's format."
          explode: false
          in: query
          name: movementDate
          schema:
            description: "Filter by DtMovto, matched EXACTLY as BACEN spells it. Not a range: the column is wire text carried verbatim, so a range would impose this rail's calendar on a third party's format."
            type: string
        - description: Page size (clamped server-side).
          explode: false
          in: query
          name: limit
          schema:
            description: Page size (clamped server-side).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque continuation token from a previous page.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque continuation token from a previous page.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListRCOMovementsOutputBody"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List commanded compulsory movements
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/list-rco-movements
    post:
      description: "Commands a movement between this institution's compulsory deposits at BACEN and its own Reservas Bancárias: a withdrawal (RCO0010) or a deposit (RCO0011), derived server-side from the direction. The PENDING row commits with its frame, so a failed submit leaves neither. The response is an acceptance, never a settlement: the state comes from the BACEN answer (SitLancRCO) and from nothing else. Idempotent — the X-Idempotency key lives with the movement: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored movement with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422. The amount is forwarded verbatim; no compulsory position is computed or held."
      operationId: createRCOMovement
      parameters:
        - description: Idempotency key. Required on every mutation — replaying it produces one outbound frame, never two.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation — replaying it produces one outbound frame, never two.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the movement.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRCOMovementRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateRCOMovementResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a movement: the body is that movement and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Command a compulsory-account movement
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/create-rco-movement
  /v1/str/rco-movements/{numCtrlIF}:
    get:
      description: Reads one commanded movement by its participant control number — the handle the BACEN answer echoes and the only one the answer's body carries.
      operationId: getRCOMovement
      parameters:
        - description: Participant control number returned by POST /v1/str/rco-movements — the handle the BACEN answer echoes.
          in: path
          name: numCtrlIF
          required: true
          schema:
            description: Participant control number returned by POST /v1/str/rco-movements — the handle the BACEN answer echoes.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetRCOMovementOutputBody"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read one commanded compulsory movement
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/get-rco-movement
  /v1/str/rco-report-queries:
    post:
      description: "Submits one of the three compliance consultas: the compulsory-account movement statement (RCO0005), the compliance position against the requirement (RCO0006) or the cost ledger (RCO0007). The cost ledger is the one message of the family whose compulsory code is optional — blank asks across every reserve. The answers arrive asynchronously on the message feed."
      operationId: createRCOReportQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRCOReportQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RCOSubmittedResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the RCO service."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Run a compulsory compliance read
      tags:
        - Compulsory
      x-mint:
        href: /pt/reference/rails/spb/create-rco-report-query
  /v1/str/readiness:
    get:
      description: "Prerequisite: an active certificate (see rotateCertificate, activateCertificate) before readiness reports READY; a READY readiness report is itself the prerequisite for a connectivity test (see createConnectivityTest) and any submit operation (see createBankTransferOperation). Returns the operational readiness summary for the service, including database connectivity, certificate validity window, channel settings binding, and any degraded subsystems. Used by ops dashboards and pre-flight gates before STR submission. Independent of the global Kubernetes /readyz probe — this endpoint reports the participant operational readiness state, while /readyz reports process-level dependency health."
      operationId: getReadiness
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReadinessResponse"
          description: OK
          links:
            prerequisite:
              description: "Onboarding prerequisite: an active certificate (rotated via rotateCertificate, activated via activateCertificate) is required before readiness reports READY."
              operationId: rotateCertificate
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get service readiness
      tags:
        - Readiness
        - onboarding
      x-mint:
        href: /pt/reference/rails/spb/get-readiness
  /v1/str/reconciliations:
    get:
      description: Returns a page of reconciliation cases with operator-actionable filters. Cases are ordered by openedAt DESC. Cursor-based pagination — pass the nextCursor from a previous response to continue.
      operationId: listReconciliationCases
      parameters:
        - description: Case status filter (OPEN, IN_PROGRESS, RESOLVED, DISMISSED).
          explode: false
          in: query
          name: status
          schema:
            description: Case status filter (OPEN, IN_PROGRESS, RESOLVED, DISMISSED).
            type: string
        - description: Operation family filter.
          explode: false
          in: query
          name: operationFamily
          schema:
            description: Operation family filter.
            type: string
        - description: Operation aggregate UUID filter.
          explode: false
          in: query
          name: operationId
          schema:
            description: Operation aggregate UUID filter.
            type: string
        - description: Candidate reason code filter.
          explode: false
          in: query
          name: reasonCode
          schema:
            description: Candidate reason code filter.
            type: string
        - description: Inclusive start date (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: startDate
          schema:
            description: Inclusive start date (RFC3339 timestamp or YYYY-MM-DD).
            type: string
        - description: Inclusive end date (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: endDate
          schema:
            description: Inclusive end date (RFC3339 timestamp or YYYY-MM-DD).
            type: string
        - description: Opaque pagination cursor from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination cursor from a previous response.
            type: string
        - description: Page size (1-100, default 50).
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Page size (1-100, default 50).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReconciliationListResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List reconciliation cases
      tags:
        - Reconciliation
      x-mint:
        href: /pt/reference/rails/spb/list-reconciliation-cases
  /v1/str/reconciliations/{reconciliationId}:
    get:
      description: Returns a single reconciliation case. Lookups for unknown ids surface as not-found (SPB-0010), byte-identical to truly-missing.
      operationId: getReconciliationCase
      parameters:
        - description: Reconciliation case UUID.
          in: path
          name: reconciliationId
          required: true
          schema:
            description: Reconciliation case UUID.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReconciliationCaseEnvelope"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get reconciliation case
      tags:
        - Reconciliation
      x-mint:
        href: /pt/reference/rails/spb/get-reconciliation-case
  /v1/str/reconciliations/{reconciliationId}/actions:
    post:
      description: Records an operator recovery action on a reconciliation case. Valid actions are ACKNOWLEDGE, RESOLVE, DISMISS, INVESTIGATE. Terminal cases (RESOLVED / DISMISSED) reject further actions with SPB-3007 / HTTP 409.
      operationId: createReconciliationAction
      parameters:
        - description: Reconciliation case UUID.
          in: path
          name: reconciliationId
          required: true
          schema:
            description: Reconciliation case UUID.
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateReconciliationActionRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReconciliationActionResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Create reconciliation action
      tags:
        - Reconciliation
      x-mint:
        href: /pt/reference/rails/spb/create-reconciliation-action
  /v1/str/rediscount-queries:
    post:
      description: "Submits a rediscount consulta and returns a correlation id plus a PENDING state. Two kinds: eligibleTitlePrice asks the unit price of one security accepted as rediscount collateral (RDC0001), and openPositions asks which rediscounts this institution still has open on the movement date (RDC0006). The answer arrives asynchronously. The consultas live outside /v1/str/operations because a consulta mints no operation, and they carry their own scope: reading this institution's collateral standing is not the same grant as commanding a borrowing against it. The open-position query is always sent in message mode — BACEN's file-return modes deliver the answer over a transport this rail does not implement, so offering them would publish a request whose answer could never be collected."
      operationId: createRediscountQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRediscountQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateRediscountQueryResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit a rediscount query
      tags:
        - Rediscounts
      x-mint:
        href: /pt/reference/rails/spb/create-rediscount-query
  /v1/str/rediscount-queries/{nuOp}:
    get:
      description: Reads the result of a previously submitted rediscount consulta by its correlation id (the outbound NUOp). PENDING until BACEN answers, then ANSWERED — or TRUNCATED, which is its own terminal state rather than a flavour of ANSWERED. An open-position answer carries at most 40 operations, and when the day has more BACEN cuts it short and names a file holding the remainder. That file travels over a transport no SPB rail code touches, so the identifier is recorded for an operator to collect out of band and the answer is never presented as complete.
      operationId: getRediscountQuery
      parameters:
        - description: "Correlation id returned by POST /v1/str/rediscount-queries (the outbound NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Correlation id returned by POST /v1/str/rediscount-queries (the outbound NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RediscountQueryStatusResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read rediscount query result
      tags:
        - Rediscounts
      x-mint:
        href: /pt/reference/rails/spb/get-rediscount-query
  /v1/str/reports/movement:
    get:
      description: "Returns, per (messageType, direction), the SUM of the declared amount + a COUNT over outbound and inbound messages created within the date range, plus a grand total per direction. The decimal sum is accumulated in integer centavos (never float). This sums Lerian SPB's OWN transmitted/received amounts — a derived report view, not a held position. BACEN-supplied reserve balances are NOT projected here (use GET /v1/str/reserve-statement-queries/{id}); movement never rolls movements up into an opening/closing balance."
      operationId: getReportMovement
      parameters:
        - description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: fromDate
          required: true
          schema:
            description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-05-01"
            type: string
        - description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
          explode: false
          in: query
          name: toDate
          required: true
          schema:
            description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
            examples:
              - "2026-05-31"
            type: string
        - description: Optional STR/LPI message-code filter (e.g. STR0008).
          explode: false
          in: query
          name: messageType
          schema:
            description: Optional STR/LPI message-code filter (e.g. STR0008).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportMovementResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Movimento financeiro report
      tags:
        - Reports
      x-mint:
        href: /pt/reference/rails/spb/get-report-movement
  /v1/str/reports/rejected:
    get:
      description: Returns a COUNT plus a cursor-paginated list of rejected messages (outbound status=REJECTED, inbound rejection reason present) within the date range, ordered by (createdAt DESC, id DESC). The rejection reason is projected verbatim. A pure filter+count over Lerian SPB's own record.
      operationId: getReportRejected
      parameters:
        - description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: fromDate
          required: true
          schema:
            description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-05-01"
            type: string
        - description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
          explode: false
          in: query
          name: toDate
          required: true
          schema:
            description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
            examples:
              - "2026-05-31"
            type: string
        - description: Optional STR/LPI message-code filter (e.g. STR0008).
          explode: false
          in: query
          name: messageType
          schema:
            description: Optional STR/LPI message-code filter (e.g. STR0008).
            type: string
        - description: Opaque continuation token from a previous response's nextCursor.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque continuation token from a previous response's nextCursor.
            type: string
        - description: Page size (1-100, default 20).
          explode: false
          in: query
          name: limit
          schema:
            default: 20
            description: Page size (1-100, default 20).
            examples:
              - 20
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportRejectedResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Transações rejeitadas report
      tags:
        - Reports
      x-mint:
        href: /pt/reference/rails/spb/get-report-rejected
  /v1/str/reports/volumetria:
    get:
      description: Returns COUNT(*) grouped by (messageType, status, day) over the raw message tables within the date range — the per-type/day message breakdown. Non-monetary (counts only).
      operationId: getReportVolumetria
      parameters:
        - description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
          explode: false
          in: query
          name: fromDate
          required: true
          schema:
            description: Inclusive range start (RFC3339 timestamp or YYYY-MM-DD).
            examples:
              - "2026-05-01"
            type: string
        - description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
          explode: false
          in: query
          name: toDate
          required: true
          schema:
            description: Inclusive range end (RFC3339 timestamp or YYYY-MM-DD). A bare date snaps to end-of-day.
            examples:
              - "2026-05-31"
            type: string
        - description: Optional STR/LPI message-code filter (e.g. STR0008).
          explode: false
          in: query
          name: messageType
          schema:
            description: Optional STR/LPI message-code filter (e.g. STR0008).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReportVolumetriaResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Volumetria report
      tags:
        - Reports
      x-mint:
        href: /pt/reference/rails/spb/get-report-volumetria
  /v1/str/reserve-balance-queries:
    post:
      description: Submits a single-party STR0013 reserve-account balance query to BACEN and returns a correlation id plus a PENDING state. The answer (STR0013R1, carrying SldRB_CL — the conta Reservas Bancárias / Conta de Liquidação balance) arrives asynchronously and is read via GET /v1/str/reserve-balance-queries/{id}. Lerian SPB projects the balance BACEN sends; it never computes a position.
      operationId: createReserveBalanceQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateReserveBalanceQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateReserveBalanceQueryResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit STR0013 reserve-account balance query
      tags:
        - ReserveQueries
      x-mint:
        href: /pt/reference/rails/spb/create-reserve-balance-query
  /v1/str/reserve-balance-queries/{id}:
    get:
      description: Reads the result of a previously submitted STR0013 reserve-account balance query by its correlation id. Returns PENDING until the STR0013R1 answer arrives, then the reserve-account balance BACEN sent (SldRB_CL) plus a freshness timestamp.
      operationId: getReserveBalanceQuery
      parameters:
        - description: Correlation id returned by POST /v1/str/reserve-balance-queries (the outbound STR0013 NUOp).
          in: path
          name: id
          required: true
          schema:
            description: Correlation id returned by POST /v1/str/reserve-balance-queries (the outbound STR0013 NUOp).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReserveBalanceQueryResultResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read STR0013 reserve-balance query result
      tags:
        - ReserveQueries
      x-mint:
        href: /pt/reference/rails/spb/get-reserve-balance-query
  /v1/str/reserve-statement-queries:
    post:
      description: Submits a single-party STR0014 reserve-account statement (extrato) query to BACEN in MESSAGE-MODE (TpRet=M) and returns a correlation id plus a PENDING state. The answer (STR0014R1, carrying the opening/closing balances and up to 200 settled entries) arrives asynchronously and is read via GET /v1/str/reserve-statement-queries/{id}. If BACEN routes the statement to a file (TamArq/IdentdArq) or the window exceeds the 200-entry message-mode ceiling, the read endpoint returns an explicit error — file retrieval (TpRet=P/X) is out of scope. Lerian SPB projects the statement BACEN sends; it never computes a position.
      operationId: createReserveStatementQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateReserveStatementQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateReserveStatementQueryResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit STR0014 reserve-account statement query (message-mode)
      tags:
        - ReserveQueries
      x-mint:
        href: /pt/reference/rails/spb/create-reserve-statement-query
  /v1/str/reserve-statement-queries/{id}:
    get:
      description: Reads the result of a previously submitted STR0014 reserve-account statement query by its correlation id. Returns PENDING until the STR0014R1 answer arrives, then the opening/closing balances and the verbatim settled-entry group BACEN sent. Returns 422 when the answer requires file-mode retrieval (BACEN returned file metadata or the window exceeded the 200-entry message-mode ceiling) — the entry list is never silently truncated.
      operationId: getReserveStatementQuery
      parameters:
        - description: Correlation id returned by POST /v1/str/reserve-statement-queries (the outbound STR0014 NUOp).
          in: path
          name: id
          required: true
          schema:
            description: Correlation id returned by POST /v1/str/reserve-statement-queries (the outbound STR0014 NUOp).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ReserveStatementQueryResultResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read STR0014 reserve-statement query result (message-mode)
      tags:
        - ReserveQueries
      x-mint:
        href: /pt/reference/rails/spb/get-reserve-statement-query
  /v1/str/responsibles:
    post:
      description: "Submits a GEN0019 \"Participante informa atualização de responsáveis\" announcement to BACEN, declaring the participant's complete responsável roster. FULL-REPLACEMENT: the body carries the entire set (1..100 responsáveis), never a partial update. The submission is persisted with status SUBMITTED before dispatch; BACEN's GEN0019R1 acknowledgment confirms it via NUOp correlation. Idempotent — the X-Idempotency key lives with the GEN0019 it sent: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer that GEN0019, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: updateResponsibles
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateResponsiblesRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateResponsiblesResponseWire"
          description: OK
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds an update: the body is that update and nothing new was sent to BACEN."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Update participant responsibles (GEN0019)
      tags:
        - Responsibles
      x-mint:
        href: /pt/reference/rails/spb/update-responsibles
  /v1/str/schedule:
    get:
      description: "Returns the STR operating grade of one day (dtRef, today by default). Lerian SPB asks the STR for it with STR0001 at 04:00 Brasília on each weekday and applies on top every GEN0021 (\"GEN avisa alteração de horários\") announced for that day. Per grade code, a GEN0021 window wins, else the STR's eventual grade, else its standard grade placed on dtRef. An empty list means Lerian SPB holds no grade for the day: the STR has not answered, or no one asked for that day."
      operationId: getSchedule
      parameters:
        - description: The day (YYYY-MM-DD); today's movement date in Brasília when absent.
          explode: false
          in: query
          name: dtRef
          schema:
            description: The day (YYYY-MM-DD); today's movement date in Brasília when absent.
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get the STR grade of the day
      tags:
        - Schedule
      x-mint:
        href: /pt/reference/rails/spb/get-schedule
  /v1/str/schedule-queries:
    post:
      description: Submits a single-party STR0001 schedule query (consulta de horários do STR) to BACEN and returns a correlation id plus a PENDING state. The answer (STR0001R1, carrying the STR operating-schedule grid) arrives asynchronously and is read via GET /v1/str/schedule-queries/{id}. This means the query was accepted for dispatch, not that the schedule is available yet. Lerian SPB surfaces the schedule BACEN sends; it computes nothing.
      operationId: createScheduleQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateScheduleQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateScheduleQueryResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit STR0001 schedule query
      tags:
        - ScheduleQueries
      x-mint:
        href: /pt/reference/rails/spb/create-schedule-query
  /v1/str/schedule-queries/{id}:
    get:
      description: Reads the result of a previously submitted STR0001 schedule query by its correlation id. Returns PENDING until the STR0001R1 answer arrives, then the STR operating-schedule grid BACEN sent (Grupo_STR0001R1_GrdHrio) plus a freshness timestamp.
      operationId: getScheduleQuery
      parameters:
        - description: Correlation id returned by POST /v1/str/schedule-queries (the outbound STR0001 NUOp).
          in: path
          name: id
          required: true
          schema:
            description: Correlation id returned by POST /v1/str/schedule-queries (the outbound STR0001 NUOp).
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ScheduleQueryResultResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read STR0001 schedule-query result
      tags:
        - ScheduleQueries
      x-mint:
        href: /pt/reference/rails/spb/get-schedule-query
  /v1/str/settings:
    get:
      description: Returns the STR channel settings, including the participant ISPB binding and certificate expiry. When readiness lookup is wired, the response also embeds the operational readiness summary.
      operationId: getSettings
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SettingsResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Get channel settings
      tags:
        - Settings
      x-mint:
        href: /pt/reference/rails/spb/get-settings
    patch:
      description: Patches the STR channel settings. Only the provided fields are updated; absent fields keep their current value. At least one field must be provided. Setting the participant ISPB requires an explicit 8-character value (placeholders such as 00000000 are rejected). Idempotent — replaying the same X-Idempotency key with the same body returns the cached response.
      operationId: updateSettings
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdateSettingsInput"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SettingsResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Update channel settings
      tags:
        - Settings
      x-mint:
        href: /pt/reference/rails/spb/update-settings
  /v1/str/slb-bacen-payments:
    post:
      description: "Submits an SLB0007 paying BACEN an amount no SLB0001 charged, including the return of a credit BACEN made with an SLB0005 — name that credit's control number to make the payment a return (RSLB0008). Unlike the charge authorisation this command is bounded by nothing but its own fields, which is why it carries its own scope. When the deployment configures an alçada band covering the amount, the message parks in PENDING_APPROVAL until the required signatures are collected. Idempotent — the X-Idempotency key lives with the payment: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored payment with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createSLBBACENPayment
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the payment.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the payment.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSLBBACENPaymentRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBSubmissionAccepted"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a payment: the body is that payment and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Pay BACEN an amount SLB never demanded
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/create-slb-bacen-payment
  /v1/str/slb-entry-queries:
    post:
      description: "Submits an SLB0006 asking what entries exist for this participant, and returns a correlation id plus a PENDING projection. The catalogue defines THREE mutually exclusive modes and no combined one: a reference date asks for that date's entries, an entry control number asks for that one entry, and naming NEITHER asks for everything falling due from today on. Sending both selectors is refused — it asks a question BACEN defines no answer to. The optional debit/credit filter composes with all three."
      operationId: createSLBEntryQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the message.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSLBEntryQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBSubmissionAccepted"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit SLB0006 entry query
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/create-slb-entry-query
  /v1/str/slb-entry-queries/{nuOp}:
    get:
      description: "Reads the result of a previously submitted SLB0006 entry query by its correlation id. Returns PENDING until the SLB0006R1 answer arrives, then every entry BACEN reported, verbatim and in wire order. A consulta answered with zero rows is still ANSWERED — 'nothing matches' is an answer. The list is a snapshot of BACEN's view and deliberately does not rewrite the charge projection: reconciling the two is an operator decision with both in front of them."
      operationId: getSLBEntryQuery
      parameters:
        - description: "Correlation id returned by POST /v1/str/slb-entry-queries (the outbound SLB0006 NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Correlation id returned by POST /v1/str/slb-entry-queries (the outbound SLB0006 NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBEntryQueryResultResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read SLB0006 entry query result
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/get-slb-entry-query
  /v1/str/slb-obligations:
    get:
      description: Lists the charges BACEN raised against this participant with an SLB0001 and that are still owed, soonest due first. Receiving the notice authorises nothing — the participant decides whether and when to pay — so a charge listed here is owed, never paid. An empty list means nothing is owed, which is an answer and not a missing projection. Every amount crosses as text, verbatim; no total is computed.
      operationId: listSLBObligations
      parameters:
        - description: Maximum number of charges to return, soonest due first.
          explode: false
          in: query
          name: limit
          schema:
            default: 100
            description: Maximum number of charges to return, soonest due first.
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListSLBObligationsResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List outstanding SLB charges
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/list-slb-obligations
  /v1/str/slb-obligations/{numCtrlSLB}:
    get:
      description: Reads one charge by the control number BACEN minted for it (NumCtrlSLB). Returns 404 when no SLB0001 ever announced it.
      operationId: getSLBObligation
      parameters:
        - description: Control number BACEN minted for the charge (NumCtrlSLB).
          in: path
          name: numCtrlSLB
          required: true
          schema:
            description: Control number BACEN minted for the charge (NumCtrlSLB).
            maxLength: 20
            minLength: 1
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBObligationResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read one SLB charge
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/get-slb-obligation
  /v1/str/slb-payments:
    post:
      description: "Submits an SLB0002 authorising payment of a charge BACEN raised with an SLB0001, and returns a correlation id plus a PENDING projection. This request IS the authorisation: receiving the notice authorises nothing, so the decision to pay is made here. The amount must equal the charge in full — SLB admits no partial payment (Catálogo v5.13 Vol I) — and is checked against the stored charge before anything reaches the rail. A charge already settled or withdrawn is refused. When the deployment configures an alçada band covering the amount, the message parks in PENDING_APPROVAL and is not transmitted until the required signatures are collected. Idempotent — the X-Idempotency key lives with the payment: the same key and parsed request (member order and whitespace do not count; any other difference, such as number spelling, null for an absent field, or an unknown member, is another request) answer the stored payment with X-Idempotency-Replayed: true, also after X-TTL has dropped the cached response, and the same key with another request answers 422."
      operationId: createSLBPayment
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the payment.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC. The key itself lives with the payment.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSLBPaymentRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBSubmissionAccepted"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a payment: the body is that payment and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Authorise payment of an SLB charge
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/create-slb-payment
  /v1/str/slb-payments/{nuOp}:
    get:
      description: "Reads a payment this participant commanded — either kind — by its correlation id. PENDING until BACEN's answer arrives AND that answer reports a settlement: an answer carrying a pending-class situation reports that the entry was taken and not yet settled, and is recorded as such rather than read as payment."
      operationId: getSLBPayment
      parameters:
        - description: "Correlation id returned by POST /v1/str/slb-payments or POST /v1/str/slb-bacen-payments (the outbound NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Correlation id returned by POST /v1/str/slb-payments or POST /v1/str/slb-bacen-payments (the outbound NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SLBPaymentResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read an SLB payment
      tags:
        - SLB
      x-mint:
        href: /pt/reference/rails/spb/get-slb-payment
  /v1/str/sme-advices:
    get:
      description: "Returns the durable log of electronic-money movements the STR ADVISED us about over a client's conta correspondente a moeda eletrônica (CCME) — movements this rail did NOT command. Each leg reaches the side that did not command it: SME0001R2 (an FI funded a CCME) reaches the credited IEME, SME0002R2 (funds were recalled out of a CCME) reaches the FI, SME0004R2 (an entry received in error was given back) reaches the credited party. An advice is therefore never an answer to a frame we sent, and correlating it to one is wrong by construction. Amounts and the BACEN date stamps cross VERBATIM as the frame spelled them, with no arithmetic and no parsing; the response carries NO total, so a client learns how many advices it loaded and never how many exist. Most recent first by receipt; optionally filter by advice leg or by the window in which this rail received them."
      operationId: listSMEAdvices
      parameters:
        - description: "Optional advice-leg filter. Only the three response legs are admitted: the R1 legs are answers to this rail's OWN commands, not third-party advice."
          explode: false
          in: query
          name: wireCode
          schema:
            description: "Optional advice-leg filter. Only the three response legs are admitted: the R1 legs are answers to this rail's OWN commands, not third-party advice."
            enum:
              - SME0001R2
              - SME0002R2
              - SME0004R2
            type: string
        - description: Optional inclusive start of the window in which THIS RAIL RECEIVED the advice (receivedAt) — not the BACEN business date dtMovto. RFC3339 instant or bare YYYY-MM-DD.
          explode: false
          in: query
          name: startDate
          schema:
            description: Optional inclusive start of the window in which THIS RAIL RECEIVED the advice (receivedAt) — not the BACEN business date dtMovto. RFC3339 instant or bare YYYY-MM-DD.
            examples:
              - "2026-09-01"
            type: string
        - description: Optional inclusive end of the window in which THIS RAIL RECEIVED the advice (receivedAt) — not the BACEN business date dtMovto. A bare YYYY-MM-DD spans the whole day.
          explode: false
          in: query
          name: endDate
          schema:
            description: Optional inclusive end of the window in which THIS RAIL RECEIVED the advice (receivedAt) — not the BACEN business date dtMovto. A bare YYYY-MM-DD spans the whole day.
            examples:
              - "2026-09-02"
            type: string
        - description: Opaque pagination token from a previous response.
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination token from a previous response.
            type: string
        - description: Items per page (default 50, max 100).
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Items per page (default 50, max 100).
            format: int64
            maximum: 100
            minimum: 1
            type: integer
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMEAdvicesResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List received electronic-money advices
      tags:
        - SMEQueries
      x-mint:
        href: /pt/reference/rails/spb/list-sme-advices
  /v1/str/sme-statement-queries:
    post:
      description: Submits an SME0003 statement (extrato) query for an IEME's conta correspondente a moeda eletrônica (CCME) and returns a correlation id plus a PENDING state. The answer (SME0003R1) arrives asynchronously; its projection and read endpoint are a later scope. The business date (DtMovto) is derived server-side and echoed back — SME0003 declares no return mode and no window, so it is the only filter the message accepts. Lerian SPB projects the statement BACEN sends; it never computes a CCME position.
      operationId: createSMEStatementQuery
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
        - description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
          in: header
          name: X-TTL
          schema:
            description: Seconds the cached response is kept; it may only shorten IDEMPOTENCY_DEFAULT_TTL_SEC.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSMEStatementQueryRequest"
        required: true
      responses:
        "202":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateSMEStatementQueryResponse"
          description: Accepted
          headers:
            X-Idempotency-Replayed:
              schema:
                description: "true when the X-Idempotency key already holds a consulta: the body is that consulta and nothing new was sent to the STR."
                type: string
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Submit SME0003 CCME statement (extrato) query
      tags:
        - SMEQueries
      x-mint:
        href: /pt/reference/rails/spb/create-sme-statement-query
  /v1/str/sme-statement-queries/{nuOp}:
    get:
      description: "Reads the result of a previously submitted SME0003 conta correspondente a moeda eletrônica (CCME) statement query by its correlation id (the outbound SME0003 NUOp). Returns PENDING until the SME0003R1 answer arrives, then the opening and closing balances BACEN sent, every lançamento in wire order, BACEN's own timestamp and the business date it answered with. A statement with zero entries is still ANSWERED — a CCME with no movement on the day is an answer, not a missing one. Every monetary value crosses as text, verbatim: Lerian SPB never parses or sums a CCME balance and never reconciles the entry sum against the closing balance."
      operationId: getSMEStatementQuery
      parameters:
        - description: "Correlation id returned by POST /v1/str/sme-statement-queries (the outbound SME0003 NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
          in: path
          name: nuOp
          required: true
          schema:
            description: "Correlation id returned by POST /v1/str/sme-statement-queries (the outbound SME0003 NUOp; 23 characters: ISPB[8]+DATE[8]+SEQ[7])."
            maxLength: 23
            minLength: 23
            pattern: ^[0-9A-Z]{8}[0-9]{15}$
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMEStatementQueryResultResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Read SME0003 CCME statement (extrato) query result
      tags:
        - SMEQueries
      x-mint:
        href: /pt/reference/rails/spb/get-sme-statement-query
  /v1/str/stuck-operations:
    get:
      description: Returns the cross-rail operator dashboard page of operations needing attention, conformed to the shared recovery vocabulary. Each row carries only the verbs SPB can actually perform on it (a verb SPB cannot perform is absent) and the disposition ('what happens if I do nothing'). Reconciliation cases are shown with their affordances; pre-case stuck-outbound rows the dispatch sweep is retrying are shown informationally with no affordances. No monetary or position fields are returned.
      operationId: listStuckOperations
      parameters:
        - description: Attention reason filter (e.g. STUCK_OUTBOUND, AWAITING_RAIL_RESPONSE, RETRY_FAILED, REQUIRES_OPERATOR_ACTION)
          explode: false
          in: query
          name: reason
          schema:
            description: Attention reason filter (e.g. STUCK_OUTBOUND, AWAITING_RAIL_RESPONSE, RETRY_FAILED, REQUIRES_OPERATOR_ACTION)
            type: string
        - description: Age bucket filter (OVER_5_MIN, OVER_15_MIN, OVER_1_HOUR, OVER_1_DAY)
          explode: false
          in: query
          name: age
          schema:
            description: Age bucket filter (OVER_5_MIN, OVER_15_MIN, OVER_1_HOUR, OVER_1_DAY)
            type: string
        - description: Canonical operation state filter (e.g. AWAITING_RESPONSE, REQUIRES_OPERATOR_ACTION, RECOVERY_IN_PROGRESS)
          explode: false
          in: query
          name: state
          schema:
            description: Canonical operation state filter (e.g. AWAITING_RESPONSE, REQUIRES_OPERATOR_ACTION, RECOVERY_IN_PROGRESS)
            type: string
        - description: Page size (default 50, max 100)
          explode: false
          in: query
          name: limit
          schema:
            default: 50
            description: Page size (default 50, max 100)
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque pagination cursor
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination cursor
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StuckPageResponse"
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: List stuck operations (operator dashboard)
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/list-stuck-operations
  /v1/str/stuck-operations/actions:
    post:
      description: "The maker's step of MANUAL_RESOLUTION on a message of any type past its BACEN settlement deadline with no answer: opens a close-as-failed case (returned as railActionRef) inside the transaction that checks the message is still in the deadline-expired list. Nothing is emitted until a different operator approves. BACEN is not notified. A leg whose STR answer the rail parked unread (detail.parkedAnswers) is closed only by declaring it from one of those answers: parkedAnswerId, outcome (SETTLED or FAILED) and, for SETTLED, settledAt; SETTLED applies the leg's settled outcome and emits its settlement fact instead of closing it as failed. A declaration naming another message's parked answer answers 409."
      operationId: submitStuckOperationAction
      parameters:
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SubmitStuckActionRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VerbOutcomeResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Ask to close a deadline-expired message as failed
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/submit-stuck-operation-action
  /v1/str/stuck-operations/actions/{railActionRef}/approve:
    post:
      description: "The checker's step: re-checks, in one transaction, that the message is still unanswered in the deadline-expired list, dismisses the case and ends the message as the STR's refusal of it would, writing its failure facts through the outbox exactly once. The requester cannot approve (403); a case already closed answers 409; a message BACEN answered meanwhile answers 409 and nothing is emitted."
      operationId: approveStuckOperationAction
      parameters:
        - description: The railActionRef the submit returned (the close-as-failed case id).
          in: path
          name: railActionRef
          required: true
          schema:
            description: The railActionRef the submit returned (the close-as-failed case id).
            type: string
        - description: Idempotency key. Required on every mutation.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: Idempotency key. Required on every mutation.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ApproveStuckActionRequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VerbOutcomeResponse"
          description: OK
        "400":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Forbidden
        "404":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Not Found
        "409":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Conflict
        "413":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Request Entity Too Large
        "415":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unsupported Media Type
        "422":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Unprocessable Entity
        "429":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Too Many Requests
        "500":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Internal Server Error
        "503":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Service Unavailable
        "504":
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: "#/components/schemas/Detail"
          description: Error
      security:
        - BearerAuth: []
      summary: Approve closing a deadline-expired message as failed
      tags:
        - Operations
      x-mint:
        href: /pt/reference/rails/spb/approve-stuck-operation-action
servers:
  - url: https://api.example.com
    description: Replace the example host with the URL provided during environment onboarding.
tags:
  - description: Immutable audit-record trails for STR operations and lifecycle events.
    name: Audit
  - description: STR capability catalog describing supported message types and their constraints.
    name: Capabilities
  - description: ICP-Brasil certificate inventory with hot-reloadable rotation and activation.
    name: Certificates
  - description: "STR compulsory-movement (RCO) family: the movements BACEN orders on a participant's reserve account, their answers and the periods they belong to."
    name: Compulsory
  - description: "Maker-checker approval queue for emissions parked above their alçada band: list pending, sign (approve), and deny."
    name: EmissionApprovals
  - description: Operation event catalog enumerating the emitted domain event types.
    name: Events
  - description: Inbound GEN-family notice log (GEN0001 connectivity echo, GEN0004 transmission error, GEN0005 administrative notice).
    name: GenNotices
  - description: "SPB alçada governance config: value-band table + per-message-type signature requirements, hot-reloaded at runtime."
    name: Governance
  - description: "Read raw STR message status: list messages and read a single message by NUOp."
    name: Messages
  - description: Aggregated operational summaries and metrics across STR operations.
    name: OperationalIntelligence
  - description: STR operation lifecycle for bank transfers and IBS repasses, including returns and cancellations.
    name: Operations
  - description: Service readiness state covering startup self-probes and dependency health.
    name: Readiness
  - description: Reconciliation cases and the actions that resolve operation discrepancies.
    name: Reconciliation
  - description: "Redesconto do Banco Central: collateralised intraday and one-business-day BCB lending against Selic-registered federal securities. One create door derives the nine RDC commands from four operator-facing kinds (contract, payment, conversion, cancellation), plus the two consultas over eligible-security prices and open positions. An accepted rediscount is not necessarily a settled one — Selic may hold the request for want of securities, and that middle state is reported as its own."
    name: Rediscounts
  - description: "STR Relatórios suite: synchronous, date-ranged aggregate reports (movimento financeiro, transações rejeitadas, volumetria) over Lerian SPB's own transmission record."
    name: Reports
  - description: STR0013 reserve-account balance and STR0014 statement (extrato, message-mode) queries and their async results.
    name: ReserveQueries
  - description: "GEN0019 participant responsável roster: full-replacement updates announced to BACEN."
    name: Responsibles
  - description: STR operating-window schedule governing when operations may be sent.
    name: Schedule
  - description: STR0001 single-party schedule queries (consulta de horários do STR) and their async STR0001R1 grid results.
    name: ScheduleQueries
  - description: "STR lançamentos (SLB) family: the charges BACEN raises against this participant, the payments that settle them, payments to BACEN it never demanded, and the entry consultas over them."
    name: SLB
  - description: "Reads over an IEME's conta correspondente a moeda eletrônica (CCME): SME0003 statement (extrato) queries and their async SME0003R1 results, plus the log of SME0001R2/SME0002R2/SME0004R2 movement advices the STR delivered about movements this rail did not command."
    name: SMEQueries
  - description: Runtime SPB configuration settings for the STR integration.
    name: Settings
  - description: "Flow (mandatory order): certificate → readiness → connectivity-test → submit. Activate a certificate, confirm the rail reports ready, pass a connectivity test, then submit an operation. Each step is its own resource; a submit must not be attempted before readiness passes."
    name: onboarding
  - description: "Flow (mandatory order): parent operation SETTLED → return/cancel. A return or cancellation is a sub-resource of a settled parent operation; the {operationId}/{endToEndID} path segment enforces the parent structurally."
    name: lifecycle
