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

# Ask the câmara to accept a collateral withdrawal

> Issues a LDL1006 to the Câmara LDL on behalf of an Entidade Responsável (Catálogo de Serviços do SFN v5.13, Vol II). Requests the câmara's acceptance of a withdrawal — voluntary or required — of guarantee, margin or securities (Vol II, Evento LDL1006 Descrição). The câmara answers per asset, accepting or rejecting each one it was sent (Evento LDL1006 Observação), so a single answer can carry both outcomes. The request is minted, built, signed, encrypted and durably recorded BEFORE anything reaches the queue, so this returns 202 with the control number the câmara will echo; the answer (LDL1006R1) arrives asynchronously and is read back with getLDL1006. Every amount and quantity is a decimal STRING carried to the wire exactly as written. A deployment with no send leg configured answers 503 with SILOC-0023; one whose dispatcher is not running answers 503 with SILOC-0024.



## OpenAPI

````yaml /es/openapi/v3-current/siloc.yaml post /api/v1/siloc/outbound/withdrawal-acceptance-requests
openapi: 3.1.0
info:
  description: >-
    OpenAPI 3.1 surface for Lerian SILOC, the participant-side rail connecting
    the institution to Núclea's SILOC deferred-net interbank settlement.
  title: Lerian SILOC API
  version: 1.0.0
servers:
  - url: https://siloc.sandbox.lerian.net
security: []
paths:
  /api/v1/siloc/outbound/withdrawal-acceptance-requests:
    post:
      tags:
        - Collateral
      summary: Ask the câmara to accept a collateral withdrawal
      description: >-
        Issues a LDL1006 to the Câmara LDL on behalf of an Entidade Responsável
        (Catálogo de Serviços do SFN v5.13, Vol II). Requests the câmara's
        acceptance of a withdrawal — voluntary or required — of guarantee,
        margin or securities (Vol II, Evento LDL1006 Descrição). The câmara
        answers per asset, accepting or rejecting each one it was sent (Evento
        LDL1006 Observação), so a single answer can carry both outcomes. The
        request is minted, built, signed, encrypted and durably recorded BEFORE
        anything reaches the queue, so this returns 202 with the control number
        the câmara will echo; the answer (LDL1006R1) arrives asynchronously and
        is read back with getLDL1006. Every amount and quantity is a decimal
        STRING carried to the wire exactly as written. A deployment with no send
        leg configured answers 503 with SILOC-0023; one whose dispatcher is not
        running answers 503 with SILOC-0024.
      operationId: submitLDL1006
      parameters:
        - description: >-
            Idempotency key for this state-changing request (required, max 255
            characters).
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Idempotency key for this state-changing request (required, max 255
              characters).
            maxLength: 255
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LDL1006Payload'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LdlCollateralBodyLDL1006Payload'
          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
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    LDL1006Payload:
      additionalProperties: false
      properties:
        CNPJEntRespons:
          description: >-
            CNPJ Entidade Responsável (CNPJ, [1..1]). The responsible entity
            this institution acts for.
          type: string
        DtMovto:
          description: Data Movimento (Data, [1..1]), as YYYY-MM-DD.
          type: string
        Grupo_LDL1006_Atv:
          description: >-
            Grupo Ativo ([1..n]): one entry per asset. An empty list is refused
            — a request naming no asset would look, to the operator who sent it,
            like a withdrawal in flight.
          items:
            $ref: '#/components/schemas/LDL1006AssetGroup'
          type:
            - array
            - 'null'
        ISPBLDL:
          description: 'ISPB LDL: the câmara addressed (ISPB, [1..1]).'
          type: string
        NumCtrlLDLOr:
          description: >-
            Número Controle LDL Original (ControleIF, [0..1]): the câmara demand
            this withdrawal answers.
          type: string
        TpAtv:
          description: Tipo Ativo (TpAtv, [1..1]).
          type: string
        TpReq:
          description: >-
            Tipo Requisição (TpReq, [1..1]): whether the withdrawal is voluntary
            or required.
          type: string
      required:
        - ISPBLDL
        - CNPJEntRespons
        - TpAtv
        - TpReq
        - Grupo_LDL1006_Atv
        - DtMovto
      type: object
    LdlCollateralBodyLDL1006Payload:
      additionalProperties: false
      properties:
        answer:
          $ref: '#/components/schemas/LDLCollateralAnswerResponse'
          description: What the câmara answered; omitted until it has answered.
        answerAbsent:
          description: >-
            True only on an ANSWERED message whose answer body this rail does
            not hold. The câmara did answer; what it wrote is not here, and the
            missing answer block is that absence, never an empty answer. Omitted
            otherwise.
          type: boolean
        answeredAt:
          description: When the câmara's answer was applied; omitted until it is.
          format: date-time
          type: string
        attempts:
          description: Queue-put attempts made so far.
          format: int64
          type: integer
        codMsg:
          description: The SFN request code this row carries, e.g. LDL1002.
          type: string
        dispatchedAt:
          description: When the frame reached the send queue; omitted until it has.
          format: date-time
          type: string
        id:
          description: Outbound message id.
          format: uuid
          type: string
        lastError:
          description: >-
            Why the last queue put failed, or — on REFUSED — the CodErro values
            the câmara marked, verbatim. Omitted when neither applies.
          type: string
        numCtrlIF:
          description: >-
            The control number this institution issued (NumCtrlIF). The câmara
            echoes it on the answer, which is what correlates the two.
          type: string
        nuop:
          description: The BCMSG operation number of the frame.
          type: string
        request:
          $ref: '#/components/schemas/LDL1006Payload'
          description: The request exactly as it was submitted, projected verbatim.
        status:
          description: >-
            Lifecycle state. REFUSED means the câmara received the request and
            returned its E twin; FAILED means this rail could not deliver it.
            Both are terminal and they are different facts.
          enum:
            - SUBMITTED
            - DISPATCHED
            - ANSWERED
            - REFUSED
            - FAILED
          type: string
        submittedAt:
          description: When the request was recorded.
          format: date-time
          type: string
      required:
        - request
        - id
        - codMsg
        - numCtrlIF
        - nuop
        - status
        - attempts
        - submittedAt
      type: object
    Detail:
      additionalProperties: true
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    LDL1006AssetGroup:
      additionalProperties: false
      properties:
        CodProdt:
          description: >-
            Código Produto (CodProdt, [0..1]). A field INSIDE the asset group,
            not the message-level product: this layout registers none.
          type: string
        CodSubTitlar:
          description: Código Subtitular (CodSubTitlar, [0..1]).
          type: string
        CodTitlar:
          description: Código Titular (CodTitlar, [1..1]).
          type: string
        DtVenc:
          description: Data Vencimento (Data, [0..1]), as YYYY-MM-DD.
          type: string
        FinlddCob:
          description: Finalidade Cobertura (FinlddCob, [1..1]).
          type: string
        Grupo_LDL1006_CTP:
          $ref: '#/components/schemas/LDL1006CETIPGroup'
          description: >-
            Grupo CETIP ([0..1]): present when the asset is custodied at the
            CETIP.
        Grupo_LDL1006_Fianc:
          $ref: '#/components/schemas/LDL1006GuaranteeGroup'
          description: >-
            Grupo Fiança ([0..1]): present when the collateral is a bank
            guarantee.
        Grupo_LDL1006_ME:
          $ref: '#/components/schemas/LDL1006ForeignCurrencyGroup'
          description: >-
            Grupo Moeda_Estrangeira ([0..1]): present when the collateral is
            foreign currency.
        Grupo_LDL1006_Otr:
          $ref: '#/components/schemas/LDL1006OtherGroup'
          description: >-
            Grupo Outros ([0..1]): present when the collateral is none of the
            four named custodies.
        Grupo_LDL1006_SEL:
          $ref: '#/components/schemas/LDL1006SelicGroup'
          description: >-
            Grupo Selic ([0..1]): present when the asset is custodied at the
            Selic.
        NumAtv:
          description: >-
            Número Ativo (NumAtv, [0..1]): the câmara's own number for the
            deposited asset, when the requester knows it.
          type: string
        NumCtrlReqIF:
          description: >-
            Número Controle Requisição IF (ControleIF, [1..1]): this asset's own
            control number, echoed per asset in the R1 with its own
            accept-or-refuse verdict.
          type: string
        TpSubTitlar:
          description: Tipo Subtitular (TpTitlar, [0..1]).
          type: string
        TpTitlar:
          description: Tipo Titular (TpTitlar, [1..1]).
          type: string
      required:
        - TpTitlar
        - CodTitlar
        - FinlddCob
        - NumCtrlReqIF
      type: object
    LDLCollateralAnswerResponse:
      additionalProperties: false
      properties:
        camaraAt:
          description: >-
            The câmara's own clock for the answer (DtHrLDL or DtHrSit). Omitted
            for LDL1002R1, LDL1003R1 and LDL1006R1, whose layouts carry an
            instant per asset inside the repeating group rather than one for the
            message — those instants are inside details.
          format: date-time
          type: string
        codMsg:
          description: The answer's own code, e.g. LDL1002R1.
          type: string
        details:
          description: >-
            Everything the answer carried beyond the fields beside it, projected
            as a JSON object keyed by the official tag names — the situação, the
            per-asset groups, the amounts and quantities. Its SHAPE DIFFERS PER
            CODE because the nine answer legs agree on nothing below the header,
            and it follows one rule on every code: a leaf element is its trimmed
            text as a STRING (amounts included, never a number); a Grupo_*
            element is an ARRAY of objects at every cardinality, one asset
            included; any other element with children is an OBJECT. This rail
            decodes nothing and computes nothing from it.
        movementDate:
          description: Data Movimento.
          format: date
          type: string
        numCtrlLDL:
          description: >-
            Número Controle LDL: the CÂMARA's own control number for what it
            did. A later request names it as NumCtrlLDLOr, so it is the
            identifier needed to amend or reverse this movement.
          type: string
      required:
        - codMsg
        - numCtrlLDL
        - details
        - movementDate
      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
    LDL1006CETIPGroup:
      additionalProperties: false
      properties:
        DtAquis:
          description: Data Aquisição (Data, [0..1]), as YYYY-MM-DD.
          type: string
        DtEmsCTP:
          description: Data Emissão CETIP (Data, [1..1]), as YYYY-MM-DD.
          type: string
        EmissorActtCTP:
          description: Emissor Aceitante CETIP (EmissorAcCETIP, [1..1]).
          type: string
        FIRCTP:
          description: >-
            FIR CETIP (FIRCETIP, [1..1]). REQUIRED here, unlike on LDL1002 where
            the same tag is [0..1]. A decimal STRING with at most six decimal
            places.
          type: string
        IdentdCtrapartCamr:
          description: Identificador Contraparte Câmara (IdentdPartCamr, [1..1]).
          type: string
        IdentdPartCamr:
          description: Identificador Participante Câmara (IdentdPartCamr, [1..1]).
          type: string
        IdentdSistCTP:
          description: Identificador Sistema CETIP (IdentdSistCETIP, [1..1]).
          type: string
        IdentdTitCTP:
          description: Identificador Título CETIP (IdentdTitCETIP, [1..1]).
          type: string
        NumOpCTP:
          description: Número Operação CTP (NumOpCETIP, [1..1]).
          type: string
        PUAquis:
          description: >-
            Preço_Unitário Aquisição (PU, [0..1]). A decimal STRING with at most
            eight decimal places.
          type: string
        QtdCTP:
          description: >-
            Quantidade CETIP (QtdCTP, [1..1]). A decimal STRING of up to 22
            digits; never a float.
          type: string
        QtdMinTitCTP:
          description: >-
            Quantidade Mínima Título CETIP (Qtd, [1..1]): the least the
            requester accepts, below which the câmara is to refuse rather than
            partially release.
          type: string
        SubTpAtv:
          description: SubTipo Ativo (SubTpAtv, [1..1]).
          type: string
        TaxCTP:
          description: >-
            Taxa CETIP (TaxCETIP, [0..1]). A decimal STRING with at most four
            decimal places.
          type: string
      required:
        - SubTpAtv
        - NumOpCTP
        - IdentdPartCamr
        - IdentdCtrapartCamr
        - IdentdTitCTP
        - IdentdSistCTP
        - EmissorActtCTP
        - FIRCTP
        - QtdCTP
        - QtdMinTitCTP
        - DtEmsCTP
      type: object
    LDL1006GuaranteeGroup:
      additionalProperties: false
      properties:
        CNPJEmissorFianc:
          description: CNPJ Emissor Fiança (CNPJ, [1..1]).
          type: string
        DtEmsFianc:
          description: Data Emissão Fiança (Data, [1..1]), as YYYY-MM-DD.
          type: string
        NumCtrlEmissorFianc:
          description: Número Controle Emissor Fiança (NumCtrlEmisFian, [0..1]).
          type: string
        VlrFaceFianc:
          description: >-
            Valor Face Fiança (Valor, [1..1]). A decimal STRING with at most two
            decimal places.
          type: string
      required:
        - CNPJEmissorFianc
        - DtEmsFianc
        - VlrFaceFianc
      type: object
    LDL1006ForeignCurrencyGroup:
      additionalProperties: false
      properties:
        CodMoeda:
          description: Código Moeda (CodMoeda, [1..1]).
          type: string
        VlrME:
          description: >-
            Valor Moeda_Estrangeira (Valor, [1..1]). A decimal STRING with at
            most two decimal places.
          type: string
        VlrMinME:
          description: >-
            Valor Mínimo Moeda_Estrangeira (Valor, [0..1]): the least the
            requester accepts.
          type: string
      required:
        - CodMoeda
        - VlrME
      type: object
    LDL1006OtherGroup:
      additionalProperties: false
      properties:
        ISPBIFLiqdant:
          description: ISPB IF Liquidante (ISPB, [0..1]).
          type: string
        IdentdOtrAtv:
          description: Identificador Outros Ativos (IdentdOtrAtv, [1..1]).
          type: string
        Qtd:
          description: Quantidade (Qtd, [0..1]).
          type: string
        QtdMin:
          description: 'Quantidade Mínima (Qtd, [0..1]): the least the requester accepts.'
          type: string
        TpOtrAtv:
          description: Tipo Outros Ativos (TpOtrAtv, [1..1]).
          type: string
        Vlr:
          description: >-
            Valor (Valor, [0..1]). A decimal STRING with at most two decimal
            places.
          type: string
        VlrMin:
          description: 'Valor Mínimo (Valor, [0..1]): the least the requester accepts.'
          type: string
      required:
        - TpOtrAtv
        - IdentdOtrAtv
      type: object
    LDL1006SelicGroup:
      additionalProperties: false
      properties:
        ChASEL:
          description: Chave Associação Selic (OpSEL, [0..1]).
          type: string
        CtCed:
          description: >-
            Conta Cedente (CtSEL, [1..1]): the Selic account the security
            leaves.
          type: string
        CtCes:
          description: >-
            Conta Cessionária (CtSEL, [1..1]): the Selic account the security
            reaches.
          type: string
        IdentdTitSEL:
          description: Identificador Título Selic (IdentdTitSEL, [1..1]).
          type: string
        PU:
          description: >-
            Preço_Unitário (PU, [0..1]). A decimal STRING with at most eight
            decimal places.
          type: string
        QtdMinTit:
          description: >-
            Quantidade Mínima Título (Qtd, [1..1]): the least the requester
            accepts, below which the câmara is to refuse rather than partially
            release.
          type: string
        QtdTit:
          description: 'Quantidade Título (QtdTit, [1..1]): the quantity asked for.'
          type: string
      required:
        - IdentdTitSEL
        - CtCed
        - CtCes
        - QtdTit
        - QtdMinTit
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````