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

# Assemble an assignment set

> Composes a DRAFT set from the chosen receivables: freezes each one's facts and prices it with the fund's own cession rate, so the composition a manager later approves is the composition that was measured. A receivable already travelling inside another set is refused, never silently dropped.



## OpenAPI

````yaml /pt/openapi/v3-current/lender.yaml post /api/v1/assignment/sets
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.
    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.
    name: Consignado
  - description: >-
      Credit-instrument document template registry: versioned drafting and
      publication of CCB clausulado.
    name: DocumentTemplates
paths:
  /api/v1/assignment/sets:
    post:
      tags:
        - AssignmentSets
      summary: Assemble an assignment set
      description: >-
        Composes a DRAFT set from the chosen receivables: freezes each one's
        facts and prices it with the fund's own cession rate, so the composition
        a manager later approves is the composition that was measured. A
        receivable already travelling inside another set is refused, never
        silently dropped.
      operationId: createAssignmentSet
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAssignmentSetHumaInputBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignmentSetDetailHumaBody'
          description: Created
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '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
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
components:
  schemas:
    CreateAssignmentSetHumaInputBody:
      additionalProperties: false
      properties:
        fundId:
          description: >-
            Fund registration this composition is offered to. Its cession rate
            prices every receivable and its regulation supplies the
            concentration limits.
          format: uuid
          type: string
        receivableRefs:
          description: >-
            The receivables the desk chose, by rail contract reference. A
            reference the tenant's assignable pool does not carry is refused by
            name — never dropped from the set silently.
          items:
            type: string
          maxItems: 500
          minItems: 1
          type:
            - array
            - 'null'
        retainedFraction:
          description: >-
            The share of the expected loss this institution keeps after THIS
            sale, a decimal string from 0 to 1 with at most 8 decimal places (0
            keeps nothing, 0.1 keeps 10%). Omit it to take the fraction the fund
            proposes. Whichever results is frozen onto the cession next to the
            institution's substantial-retention threshold of that day, and the
            regime is derived from those two frozen values, never re-read from
            the fund. Refusals: null or blank LENDER-0503; not a decimal, below
            0, above 1 or more than 8 decimal places LENDER-0506; a fraction at
            or above the threshold (substantial retention) LENDER-0504, not
            bookable yet.
          examples:
            - '0'
          type: string
        sellerRetainsControl:
          description: >-
            Whether the seller keeps control of what THIS sale transfers, the
            middle band of Res. CMN 4.966 art. 26 III that a fraction cannot
            express. Omit it to take what the fund proposes. Refusals: null
            LENDER-0503; true LENDER-0505, a band this product does not book and
            never will.
          examples:
            - false
          type: boolean
      required:
        - fundId
        - receivableRefs
      type: object
    AssignmentSetDetailHumaBody:
      additionalProperties: false
      properties:
        approval:
          $ref: '#/components/schemas/AssignmentSetApprovalHumaBody'
          description: >-
            The immutable approval fact. Absent while the composition has not
            been approved.
        items:
          description: >-
            Every receivable ever admitted to this set, survivors and departures
            alike, in the order the composition was read. Always present, empty
            slice when none.
          items:
            $ref: '#/components/schemas/AssignmentSetItemHumaBody'
          type:
            - array
            - 'null'
        set:
          $ref: '#/components/schemas/AssignmentSetHumaBody'
          description: The set and the aggregates of its surviving composition.
      required:
        - set
        - items
      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
    AssignmentSetApprovalHumaBody:
      additionalProperties: false
      properties:
        approvedAt:
          description: Approval instant (RFC3339, UTC).
          type: string
        approvedBy:
          description: Validated actor identity that approved.
          type: string
        contentDigest:
          description: >-
            sha-256 over the canonical bytes of the approved composition.
            Re-derivable from those bytes, so a reader can prove the composition
            was not edited afterwards.
          type: string
        currency:
          description: ISO currency code of totalAssignmentPrice.
          type: string
        fundId:
          description: Fund registration the composition was approved for.
          type: string
        id:
          description: Approval identifier (uuid).
          type: string
        itemCount:
          description: How many receivables the approval covers.
          format: int64
          type: integer
        setId:
          description: Assignment set this approval covers.
          type: string
        totalAssignmentPrice:
          description: >-
            Total the fund pays for the approved composition, decimal string,
            scale 2.
          type: string
        trailObservedAt:
          description: >-
            Instant the rail state behind this composition was read (RFC3339,
            UTC). The approval covers exactly that reading.
          type: string
        valuationVersion:
          description: Pricing ruler the approved prices came out of.
          type: string
      required:
        - id
        - setId
        - fundId
        - approvedBy
        - approvedAt
        - contentDigest
        - trailObservedAt
        - valuationVersion
        - currency
        - itemCount
        - totalAssignmentPrice
      type: object
    AssignmentSetItemHumaBody:
      additionalProperties: false
      properties:
        assignmentPrice:
          description: >-
            Present value at the fund's cession rate — what the fund pays,
            decimal string, scale 2.
          type: string
        assignmentRate:
          description: >-
            Monthly effective cession rate applied, decimal fraction string,
            scale 8.
          type: string
        assignorRef:
          description: Opaque assignor key the fund's assignor limit aggregates by.
          type: string
        borrowerRef:
          description: >-
            Opaque debtor key the invariable 20% cap aggregates by. Never a
            document number.
          type: string
        currency:
          description: ISO currency code of every amount on this item.
          type: string
        custodyComplete:
          description: >-
            Whether the signature evidence was complete when the receivable
            entered the set.
          type: boolean
        discountAmount:
          description: faceValue minus assignmentPrice, decimal string, scale 2.
          type: string
        dossierDigest:
          description: >-
            Digest of the materialized evidence bundle. Empty when no dossier
            has been produced yet — the endorsement term is what refuses to be
            signed over that.
          type: string
        exitReason:
          description: >-
            Why it was removed, in the remover's own vocabulary. Empty while
            in_set.
          type: string
        exitSource:
          description: >-
            Who removed it: eligibility (our engine), remessa (the fund's return
            file) or trail (the rail re-read). Empty while in_set.
          type: string
        faceValue:
          description: Face value of the remaining flow, decimal string, scale 2.
          type: string
        hasOpenOverdue:
          description: Whether the receivable carried open arrears when it entered the set.
          type: boolean
        installmentCount:
          description: Installments remaining as frozen at entry.
          format: int64
          type: integer
        itemState:
          description: >-
            in_set, cut (a verdict removed it) or removed_trail (the
            pre-approval rail re-read no longer found it).
          type: string
        outstandingBalance:
          description: Outstanding balance as frozen at entry, decimal string, scale 2.
          type: string
        paymentSourceRef:
          description: >-
            Opaque key of the receivable's payment source — the party the
            instalment is collected through — that the fund's payment-source
            limit aggregates by. Which party that is belongs to the
            jurisdiction, and this contract never names it.
          type: string
        principalAmount:
          description: Booked principal as frozen at entry, decimal string, scale 2.
          type: string
        receivableRef:
          description: Receivable reference (the rail contract number).
          type: string
        registrationActive:
          description: >-
            Whether the rail registration was in force when the receivable
            entered the set.
          type: boolean
        repriced:
          description: >-
            True when the pre-approval rail re-read found this receivable
            altered and the same ruler repriced it (Q-P6-5).
          type: boolean
        snapshotObservedAt:
          description: Instant the frozen facts above were read (RFC3339, UTC).
          type: string
        trailInstallmentsRemaining:
          description: >-
            Remaining installments the RAIL reported at the last pre-approval
            re-read. Absent before the first one.
          format: int64
          type: integer
        valuationBaseDate:
          description: Base date the present value was discounted to (RFC3339, UTC).
          type: string
        valuationVersion:
          description: Pricing ruler this price came out of.
          type: string
      required:
        - receivableRef
        - itemState
        - exitSource
        - exitReason
        - repriced
        - borrowerRef
        - paymentSourceRef
        - assignorRef
        - outstandingBalance
        - principalAmount
        - installmentCount
        - currency
        - registrationActive
        - custodyComplete
        - hasOpenOverdue
        - dossierDigest
        - faceValue
        - assignmentPrice
        - discountAmount
        - valuationVersion
        - assignmentRate
        - valuationBaseDate
        - snapshotObservedAt
      type: object
    AssignmentSetHumaBody:
      additionalProperties: false
      properties:
        createdAt:
          description: Creation timestamp (RFC3339, UTC).
          type: string
        createdBy:
          description: Validated actor identity that assembled the composition.
          type: string
        currency:
          description: ISO currency code every amount of this set is denominated in.
          type: string
        eligibilityCheckedAt:
          description: Instant the composition was scored (RFC3339, UTC). Empty on a draft.
          type: string
        fundId:
          description: Fund registration this composition is offered to.
          type: string
        id:
          description: Assignment set identifier (uuid).
          type: string
        inSetItemCount:
          description: How many receivables are still in the composition.
          format: int64
          type: integer
        registryProvider:
          description: >-
            Registradora regime this cession runs under, frozen from the fund
            when the composition was assembled. The fund's registration governs
            the NEXT set, never this one.
          type: string
        retainedFraction:
          description: >-
            Share of the expected loss this institution keeps after the sale,
            frozen when the composition was assembled (the sale's own fraction,
            or the fund's proposal when the sale stated none), decimal string
            from 0 to 1, scale 8. Re-declaring the fund never changes it.
          type: string
        retentionThreshold:
          description: >-
            The institution's substantial-retention threshold in force when the
            composition was assembled, frozen next to the fraction, decimal
            string, scale 8. A later change of the threshold never re-classifies
            this cession.
          type: string
        riskRetention:
          description: >-
            Res. CMN 4.966 art. 26 regime this cession is booked under, DERIVED
            from the two frozen numbers, never declared: substantial when
            retainedFraction is at or above retentionThreshold (the asset stays
            on this balance sheet against a liability, art. 29), none below it
            (the receivables leave on acceptance, art. 28).
          type: string
        ruleVersion:
          description: >-
            Eligibility/concentration ruler that scored this composition. Empty
            on a draft nobody has measured yet.
          type: string
        sellerRetainsControl:
          description: >-
            Whether the seller keeps control of what it sold (Res. CMN 4.966
            art. 26 III), frozen at assembly. Always false on a composition that
            exists: true is refused (LENDER-0505).
          type: boolean
        state:
          description: >-
            Lifecycle state: draft, eligibility_checked, pending_approval,
            approved, offer_sent, remessa_received, term_signed, paid,
            transferred, accepted — plus cancelled, the terminal state a
            DISCARDED composition rests in. cancelled is a sideways exit, not a
            step of the forward walk: its receivables are released back to the
            assignable pool and nothing advances it.
          type: string
        totalAssignmentPrice:
          description: >-
            Assignment price of the SURVIVING composition, decimal string, scale
            2.
          type: string
        totalFaceValue:
          description: Face value of the SURVIVING composition, decimal string, scale 2.
          type: string
        updatedAt:
          description: Last-update timestamp (RFC3339, UTC).
          type: string
        valuationVersion:
          description: Deterministic pricing ruler every item price came out of.
          type: string
      required:
        - id
        - fundId
        - registryProvider
        - retainedFraction
        - retentionThreshold
        - sellerRetainsControl
        - riskRetention
        - state
        - currency
        - valuationVersion
        - ruleVersion
        - eligibilityCheckedAt
        - createdBy
        - createdAt
        - updatedAt
        - inSetItemCount
        - totalFaceValue
        - totalAssignmentPrice
      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.