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

# Confirm or reject an announced operation between two non-liquidantes

> Answers an operation between two of this settlement bank's own non-liquidantes, announced by the câmara (LTR0007), with the institution's LTR0008: CONFIRM accepts it, REJECT refuses it. Asynchronous intake — 202 means the command and its outbound event are committed and nothing has been sent yet. announcedAmount must equal the amount that was announced (422 otherwise). An operation the câmara did NOT ask to have confirmed is 422; one already decided is 409; one that changed since it was read is 409. X-Idempotency is REQUIRED: a retry carrying the same key replays the stored response, and the same key with a different body is 409. RBAC: lbtr:write; the deciding operator and the tenant are always taken from the validated request identity, never from the payload.



## OpenAPI

````yaml /en/openapi/v3-current/slc.yaml post /v1/lbtr/nonliquidante-operations/{operationId}/decision
openapi: 3.1.0
info:
  description: >-
    API for Lerian SLC — the participant-side rail that connects the institution
    to Núclea's SLC card settlement.
  title: Lerian SLC API
  version: 1.0.0
servers:
  - url: https://slc.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Settlement operation lifecycle — create, list, query, and control the
      NUliquid-tracked card operations (NUliquid = the 21-position id Núclea
      assigns each accepted operation) through the state machine.
    name: Operations
  - description: >-
      Participant catalog — the acquirers, sub-acquirers, IF Domicílio (bank
      where the merchant receives its sales), and settlement FIs (financial
      institutions) that take part in card settlement.
    name: Participants
  - description: >-
      Card arrangements (bandeira/scheme configurations, e.g. Visa/Master/Elo)
      attached to a participant.
    name: Arrangements
  - description: >-
      Regulated transport orchestration to Núclea's SLC — dispatch, recovery,
      retransmission, and connectivity testing over managed file-transfer,
      message-broker, and REST.
    name: Connectivity
  - description: >-
      Multilateral netting clearing positions — the net amount each participant
      settles per STR cycle (STR = Banco Central reserves-transfer system).
    name: Clearing
  - description: >-
      SaaS BYOK (Bring Your Own Key) signing-key provisioning — import
      parameters and register the client's ICP-Brasil server-type certificate
      material used to sign ASLC files (RSA, at least 2048 bits, and valid at
      the moment of import — all three are enforced); the SLC never receives the
      private key in cleartext.
    name: SigningKey
  - description: >-
      ASLC file intake and status — passthrough submission and processing status
      of the official Núclea card-settlement XML files (ASLC = Arquivo do
      Sistema de Liquidação de Cartões).
    name: Files
  - description: >-
      Read-only introspection of the embedded Núclea ASLC/RSFN (National
      Financial System Network) XSD schemas used to validate outbound and
      inbound messages.
    name: XSD Schemas
  - description: Read-only regulatory, compliance, and operational settlement reports.
    name: Reports
  - description: >-
      Outbound business-event webhook subscriptions and delivery management for
      consumers (client ledgers — optional).
    name: Webhooks
  - description: >-
      Administrative operations — hot-reloadable runtime configuration,
      dead-letter-queue inspection/replay, and outbox redispatch.
    name: Admin
paths:
  /v1/lbtr/nonliquidante-operations/{operationId}/decision:
    post:
      tags:
        - LBTR
      summary: Confirm or reject an announced operation between two non-liquidantes
      description: >-
        Answers an operation between two of this settlement bank's own
        non-liquidantes, announced by the câmara (LTR0007), with the
        institution's LTR0008: CONFIRM accepts it, REJECT refuses it.
        Asynchronous intake — 202 means the command and its outbound event are
        committed and nothing has been sent yet. announcedAmount must equal the
        amount that was announced (422 otherwise). An operation the câmara did
        NOT ask to have confirmed is 422; one already decided is 409; one that
        changed since it was read is 409. X-Idempotency is REQUIRED: a retry
        carrying the same key replays the stored response, and the same key with
        a different body is 409. RBAC: lbtr:write; the deciding operator and the
        tenant are always taken from the validated request identity, never from
        the payload.
      operationId: decideLbtrNonSettlorOperation
      parameters:
        - description: Announced non-liquidante operation id (UUID).
          in: path
          name: operationId
          required: true
          schema:
            description: Announced non-liquidante operation id (UUID).
            examples:
              - 018f8a3e-4b2c-7c1a-9e5d-2f6a1b3c4d5e
            type: string
        - description: >-
            Required. Scopes this answer so a retry replays the stored response
            instead of sending a second command for the same operation.
          in: header
          name: X-Idempotency
          schema:
            description: >-
              Required. Scopes this answer so a retry replays the stored
              response instead of sending a second command for the same
              operation.
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecideNonSettlorRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommandAcceptedResponse'
          description: Accepted
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '501':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            Not Implemented: this capability is not part of this deployment.
            Operations are registered unconditionally so the published contract
            is identical across deploy shapes; when the capability behind one
            did not compose here (authentication disabled, no database, no
            outbound transport, or the feature switched off) it answers this
            coded SLC-0012 problem. It is definitive for this deployment:
            retrying does not help, and the `detail` is deliberately scrubbed
            (any status >= 500 is).
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
components:
  schemas:
    DecideNonSettlorRequest:
      additionalProperties: false
      properties:
        announcedAmount:
          description: >-
            The announced amount you are answering for, as a decimal string. It
            must EQUAL the amount the câmara announced or the command is refused
            with 422. Compared as a decimal, so "100.1" and "100.10" are the
            same money.
          examples:
            - '1234.56'
          type: string
        decision:
          description: >-
            CONFIRM or REJECT (case-insensitive). The câmara titles this event
            "confirmação ou rejeição", which is why REJECT is the word here and
            DIVERGE is the word on a result.
          examples:
            - CONFIRM
          type: string
      required:
        - decision
        - announcedAmount
      type: object
    CommandAcceptedResponse:
      additionalProperties: false
      properties:
        commandId:
          description: >-
            The command's id (a UUIDv7 minted by this service). It is the key
            every later fact joins on and the id to read the command back by.
          examples:
            - 0199a2e8-7a1c-7c1a-9e5d-2f6a1b3c4d5e
          type: string
        messageType:
          description: >-
            The outbound message this command originates: LTR0002 (result
            answer), LTR0008 (non-liquidante answer) or LTR0009 (position
            query).
          examples:
            - LTR0002
          type: string
        requestedAt:
          description: When the institution decided (RFC3339, UTC).
          examples:
            - '2026-09-22T13:04:11Z'
          type: string
        sourceAggregateId:
          description: >-
            The announcement this command answers. For a position query it is
            the command's own id, because a query answers no announcement.
          examples:
            - 018f8a3e-4b2c-7c1a-9e5d-2f6a1b3c4d5e
          type: string
        sourceAggregateVersion:
          description: >-
            The version of the announcement this command was authorised against,
            kept so a later reader can see which view of it was answered.
          examples:
            - 1
          format: int64
          type: integer
        status:
          description: >-
            Always REQUESTED here: the command row and its outbound event are
            committed and nothing has been sent yet. Poll the command to see it
            reach ACCEPTED, ANSWERED, REFUSED or FAILED.
          examples:
            - REQUESTED
          type: string
      required:
        - commandId
        - messageType
        - status
        - sourceAggregateId
        - sourceAggregateVersion
        - requestedAt
      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

````