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

# Approve the close of a held outbound message as failed

> The second operator's step: ends the message FAILED (or as declared), writes its fact for the client's ledger, closes the card command behind it and records both operators in the audit trail, in one transaction. A declaration with typed values (numCtrl, situation) is approved only with the same values and settledAt in the body (422 otherwise, the request stays pending). 403 for the operator who made the request and for a machine credential; 409 when no request awaits approval, or when the câmara's answer reached the message first (the request is then closed as superseded and the message stays as the answer left it).



## OpenAPI

````yaml /es/openapi/v3-current/siloc.yaml post /api/v1/siloc/outbound/messages/{id}/close-request/approve
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://api.example.com
    description: >-
      Replace the example host with the URL provided during environment
      onboarding.
security: []
paths:
  /api/v1/siloc/outbound/messages/{id}/close-request/approve:
    post:
      tags:
        - Schedule
      summary: Approve the close of a held outbound message as failed
      description: >-
        The second operator's step: ends the message FAILED (or as declared),
        writes its fact for the client's ledger, closes the card command behind
        it and records both operators in the audit trail, in one transaction. A
        declaration with typed values (numCtrl, situation) is approved only with
        the same values and settledAt in the body (422 otherwise, the request
        stays pending). 403 for the operator who made the request and for a
        machine credential; 409 when no request awaits approval, or when the
        câmara's answer reached the message first (the request is then closed as
        superseded and the message stays as the answer left it).
      operationId: approveOutboundMessageClose
      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
        - description: Outbound message id.
          in: path
          name: id
          required: true
          schema:
            description: Outbound message id.
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApproveCloseInputBody'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutboundCloseRequestResponse'
          description: OK
        '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:
    ApproveCloseInputBody:
      additionalProperties: false
      properties:
        numCtrl:
          description: >-
            The control number the second operator read in the answer; must
            equal the request's when it carries one.
          type: string
        settledAt:
          description: >-
            The settlement instant the second operator confirmed; must equal the
            request's when it carries typed values.
          format: date-time
          type: string
        situation:
          description: >-
            The situation the second operator read in the answer; must equal the
            request's when it carries one.
          type: string
      type: object
    OutboundCloseRequestResponse:
      additionalProperties: false
      properties:
        id:
          description: Close request id.
          format: uuid
          type: string
        messageId:
          description: The outbound message the request is about.
          format: uuid
          type: string
        numCtrl:
          description: >-
            The câmara's own control number (NumCtrlPAG) the first operator read
            in the answer, for a SETTLED declaration of a PAG transfer; omitted
            otherwise.
          type: string
        outcome:
          description: >-
            What the operators declared from that answer; omitted for a close
            with no parked answer.
          enum:
            - SETTLED
            - FAILED
          type: string
        parkedAnswerId:
          description: >-
            The refused câmara answer the operators declared the outcome from;
            omitted for a close with no parked answer.
          format: uuid
          type: string
        reason:
          description: The evidence the first operator gave.
          type: string
        requestedAt:
          description: When the request was made.
          format: date-time
          type: string
        requestedBy:
          description: The operator who asked, as the audit trail names them.
          type: string
        settledAt:
          description: >-
            The settlement instant the operators confirmed for a SETTLED
            declaration; omitted otherwise.
          format: date-time
          type: string
        situation:
          description: >-
            The situation (SitLancPAG) the first operator read in the answer,
            for a SETTLED declaration of a PAG transfer; omitted otherwise.
          type: string
        status:
          description: >-
            PENDING until a second operator approves; APPROVED once the message
            is closed.
          enum:
            - PENDING
            - APPROVED
          type: string
      required:
        - id
        - messageId
        - requestedBy
        - reason
        - requestedAt
        - status
      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
    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

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.