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

# Dispose consignado contract divergence

> Records the operator's structured result and closes the item. A parked payroll competência (employer_shortfall or reconciliation_hold_for_review awaiting its posting) is never disposed: it leaves only by requeue, which re-runs it. The exceptions are the item naming money already placed (run=placed) and a run held for its escrituração: the operador disposes them, and the held money is then his. So is the reconciliation_hold_for_review of a settle the rail never confirmed (lender evidence rail 0): its dispose says the rail did not pay and books the month with what the rail confirmed by then, the rest the employer's receivable where the escrituração proves the withholding, or parks it as its closed_contract_month_unremitted item once the contract left our book; what still refuses that booking answers LENDER-0363 and the item stays open. Compare-and-swap guarded by expectedVersion; idempotent via the X-Idempotency header enforced by the platform middleware.



## OpenAPI

````yaml /pt/openapi/v3-current/lender.yaml post /api/v1/internal/br/consignado/divergences/{id}/dispose
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Code-first OpenAPI 3.1 surface for the Lender service. Routes that move
    money are at-most-once per X-Idempotency: when one answers 5xx, the
    X-Idempotency-Fenced response header says whether that key is now refusing
    resends (true) or free to retry (false or absent).
  license:
    name: Lerian Studio General License
  title: Lender API
  version: 1.0.0
servers:
  - url: https://lender.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Caller session projection: validated subject and effective permissions for
      the presented token.
    name: Session
  - description: >-
      Ledger accounting operations: journal entries and accrual postings for
      loan accounts. Operations under /api/v1/internal are back-office
      operations for the client's operators: they require a person's login, and
      a service credential gets 403.
    name: Accounting
  - description: >-
      Loan application intake and lifecycle: submission, decisioning, and
      status.
    name: LoanApplications
  - description: >-
      Loan product catalog: definition, versioning, and activation of lending
      products.
    name: LoanProducts
  - description: >-
      Loan account servicing operations: balances, schedules, and account-level
      actions.
    name: Loan Accounts
  - description: >-
      Portfolio dashboard read operations: aggregated portfolio and performance
      views.
    name: Dashboard
  - description: >-
      Jurisdiction registry: supported jurisdiction profiles and their
      capabilities.
    name: Jurisdictions
  - description: >-
      Jurisdiction-specific loan application operations (Brazil origination
      surface).
    name: Loan Applications
  - description: >-
      Tax computation operations for jurisdiction-specific lending (e.g. Brazil
      IOF).
    name: Tax
  - description: >-
      Brazil consignado privado operations: contract lifecycle, exclusion
      repair, and compensating adjustments. Operations under /api/v1/internal
      are back-office operations for the client's operators: they require a
      person's login, and a service credential gets 403.
    name: Consignado
  - description: >-
      Inbound record quarantine. Operations under /api/v1/internal are
      back-office operations for the client's operators: they require a person's
      login, and a service credential gets 403.
    name: Streaming
  - description: >-
      Credit-instrument document template registry: versioned drafting and
      publication of CCB clausulado.
    name: DocumentTemplates
paths:
  /api/v1/internal/br/consignado/divergences/{id}/dispose:
    post:
      tags:
        - Consignado
      summary: Dispose consignado contract divergence
      description: >-
        Records the operator's structured result and closes the item. A parked
        payroll competência (employer_shortfall or
        reconciliation_hold_for_review awaiting its posting) is never disposed:
        it leaves only by requeue, which re-runs it. The exceptions are the item
        naming money already placed (run=placed) and a run held for its
        escrituração: the operador disposes them, and the held money is then
        his. So is the reconciliation_hold_for_review of a settle the rail never
        confirmed (lender evidence rail 0): its dispose says the rail did not
        pay and books the month with what the rail confirmed by then, the rest
        the employer's receivable where the escrituração proves the withholding,
        or parks it as its closed_contract_month_unremitted item once the
        contract left our book; what still refuses that booking answers
        LENDER-0363 and the item stays open. Compare-and-swap guarded by
        expectedVersion; idempotent via the X-Idempotency header enforced by the
        platform middleware.
      operationId: disposeConsignadoContractDivergence
      parameters:
        - description: Contract divergence identifier.
          in: path
          name: id
          required: true
          schema:
            description: Contract divergence identifier.
            format: uuid
            type: string
        - description: Canonical idempotency request ID (lib-commons enforcer reads this).
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Canonical idempotency request ID (lib-commons enforcer reads
              this).
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisposeContractDivergenceHumaRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDivergenceHumaBody'
          description: OK
          headers:
            X-Idempotency-Replayed:
              description: >-
                "true" when this response replays a request already executed
                under the same X-Idempotency, so nothing ran a second time and
                no money moved again. Absent on a first execution.
              schema:
                type: string
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The at-most-once contract refused the request before any handler
            ran: no X-Idempotency header (IDEMPOTENCY_KEY_REQUIRED), a key under
            a spelling this service does not read
            (IDEMPOTENCY_KEY_HEADER_UNKNOWN), or a request that could not be
            scoped to a tenant (IDEMPOTENCY_TENANT_REQUIRED). The code is in the
            problem document's `code` member.
        '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
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Request Entity Too Large
        '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
        '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
components:
  schemas:
    DisposeContractDivergenceHumaRequest:
      additionalProperties: false
      properties:
        expectedVersion:
          description: 'Compare-and-swap guard: the version this request was read against.'
          format: int64
          minimum: 1
          type: integer
        justification:
          description: Optional free-text justification.
          maxLength: 4000
          type: string
        result:
          description: Bounded, category-specific structured outcome.
          maxLength: 128
          minLength: 1
          type: string
      required:
        - result
        - expectedVersion
      type: object
    ContractDivergenceHumaBody:
      additionalProperties: false
      properties:
        adjustmentStatus:
          description: not_required|required|requested|posted.
          type: string
        amountCurrency:
          description: ISO-4217 currency of the contested amounts.
          type: string
        assignedAt:
          description: Instant of the current assignment (RFC3339 UTC).
          type: string
        assignee:
          description: Operator currently responsible, when assigned.
          type: string
        authority:
          description: >-
            Source of truth for the contested value:
            client|dataprev|gateway|lender.
          type: string
        calculatedAt:
          description: Instant the Lender calculation was produced (RFC3339 UTC).
          type: string
        category:
          description: 'Bounded category: cash|rate|terms|margin|registration|technical.'
          type: string
        classification:
          description: Specific durable exception inside the category.
          type: string
        clientDeclaredAmount:
          description: >-
            Authoritative value the client declared, when a comparison exists;
            on a ceded_cash_unplaced item, the router's current figure of the
            rail's cash no desk line holds.
          type: string
        contractId:
          description: Contract the divergence belongs to.
          type: string
        createdAt:
          description: RFC3339 UTC.
          type: string
        disposable:
          description: >-
            True when the item is open and Dispose accepts it. False on a closed
            item and on a competência parked for its re-run (posting_pending
            employer_shortfall or reconciliation_hold_for_review), which leaves
            only by Requeue; true on its placed item (occurrenceKey
            run=placed|...), on a run held for its escrituração, on the review
            hold of a settle the rail never confirmed (lenderEvidence rail 0)
            and on every review hold of a month whose escrituração Dataprev
            flagged or a live cession holds, whose money the operador then
            holds.
          type: boolean
        disposedAt:
          description: Instant of disposition (RFC3339 UTC), present once disposed.
          type: string
        dispositionActor:
          description: Identity that disposed the item, present once disposed.
          type: string
        dispositionJustification:
          description: Free-text justification, present once disposed.
          type: string
        dispositionResult:
          description: Structured outcome, present once disposed.
          type: string
        dispositionState:
          description: open|disposed.
          type: string
        effect:
          description: >-
            What the item does to the flow:
            audit_only|posting_pending|adjustment_required|booking_blocked.
          type: string
        firstObservedAt:
          description: First durable persist (RFC3339 UTC); the SLA clock start.
          type: string
        id:
          description: Contract divergence identifier.
          type: string
        latestObservedAt:
          description: Most recent observation (RFC3339 UTC).
          type: string
        lenderCalculatedAmount:
          description: Lender calculation. Audit evidence only, never authoritative.
          type: string
        occurrenceKey:
          description: Replay-fencing key for the observed occurrence.
          type: string
        railAcceptedAt:
          description: Instant the rail accepted the underlying fact (RFC3339 UTC).
          type: string
        rerunnable:
          description: >-
            True when the item is open and Requeue re-executes it: a parked
            payroll competência, an unserviced repasse, a renegociação link, a
            closed contract's month, a ceded_cash_unplaced item whose month no
            live cession holds, or a review hold naming money on a month a live
            cession holds. The re-run reads the live books and can still be
            refused with its reason (a contract sold again, cash the cession's
            desk holds, an escrituração Dataprev flagged), the item staying
            open. False on a closed item, where the requeue only records a retry
            signal, and where the item itself shows a refusal every time: an
            item naming the fund's money, a ceded_cash_unplaced item of a month
            a live cession holds.
          type: boolean
        ruleVersion:
          description: Version of the rule that produced the Lender calculation.
          type: string
        slaDueAt:
          description: Resolution deadline (RFC3339 UTC).
          type: string
        updatedAt:
          description: RFC3339 UTC.
          type: string
        version:
          description: >-
            Compare-and-swap guard: every mutation supplies this as
            expectedVersion.
          format: int64
          type: integer
      required:
        - id
        - contractId
        - category
        - classification
        - effect
        - authority
        - occurrenceKey
        - railAcceptedAt
        - firstObservedAt
        - latestObservedAt
        - slaDueAt
        - dispositionState
        - adjustmentStatus
        - version
        - createdAt
        - updatedAt
      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.