> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Command a rediscount operation

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



## OpenAPI

````yaml /pt/openapi/v3-current/spb.yaml post /v1/str/operations/rediscounts
openapi: 3.1.0
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
servers:
  - url: https://spb.sandbox.lerian.net
security: []
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: Webhook event-delivery records with retry control for failed dispatches.
    name: EventDeliveries
  - 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: Webhook endpoint registration and management for event delivery.
    name: Webhooks
  - 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
paths:
  /v1/str/operations/rediscounts:
    post:
      tags:
        - Rediscounts
      summary: Command a rediscount operation
      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.
      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: Idempotency key TTL in seconds.
          in: header
          name: X-TTL
          schema:
            description: Idempotency key TTL in seconds.
            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
        '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: []
components:
  schemas:
    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
    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. Always PENDING here: the frame is on the wire and
            BACEN has said nothing yet.
          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
    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
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````