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

# Register a pre-existing (legado) loan

> Proxies incluir-emprestimo-legado-trabalhador (Manual 007 v1.4 §3.1): registers a contract the tenant made BEFORE this rail's model existed. The worker becomes ineligible for new contracting on this rail until the legado contract is excluded or renegotiated. Dataprev performs no documental validation of legado contracts (§2.2.1.3) — the veracity of what is sent is the institution's own responsibility. When codigoTipoContrato is 2 (folha), codigoInscricaoEmpregador, numeroInscricaoEmpregador and matricula become required; this gateway proves that conditional before the rail is called, since neither the rail nor the official Swagger enforces it. X-Idempotency is required. A retried request that lands on the rail's own HX ("empréstimo já cadastrado") answers success rather than a refusal.



## OpenAPI

````yaml en/openapi/v3-current/consignado.yaml post /v1/consignado/legacy-contracts
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for Lerian Consignado — Dataprev. The API covers tenant
    credentials and rail configuration, worker margin, loan auctions and bids,
    contract registration and lifecycle, disbursement confirmation, portability,
    refinancing, renegotiation, FGTS guarantees, reconciliation, funds,
    assignments, usage, throughput, and event subscriptions. Secret material is
    written to the tenant secret store and is never returned by any operation.
  license:
    name: Lerian Studio General License
  title: Lerian Consignado API
  version: v1.0.0
servers:
  - url: https://consignado.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Per-tenant Dataprev credential custody and public rail configuration
      (upload, status, rotation, revoke, requester code, and worker portal base
      URL)
    name: Credentials
  - description: >-
      Tenant-scoped consignado gateway usage: priced billable-unit aggregation
      per competência
    name: Consignado Usage
  - description: >-
      Per-tenant streaming-hub subscription control-plane (list, create, get,
      rotate, revoke, and test delivery)
    name: Subscriptions
  - description: >-
      Dataprev payroll-rail surface: FGTS balance and authorization reads, the
      FGTS guarantee execution, contract suspension, reactivation and term
      changes, the rail's own contract documents, and the on-demand reads of
      leilão solicitações, escriturações, repasses and employment terminations
    name: Consignado Rail
  - description: >-
      Synchronous rail command surface: the operations a bancarizador without
      the lender drives over HTTP. Each shares its command implementation with
      the equivalent lender event trigger.
    name: Consignado Rail Commands
  - description: >-
      Gateway-owned disbursement confirmation: a client bank recording money it
      has ALREADY paid to a worker. It crosses no government boundary and
      proxies no Dataprev operation.
    name: Consignado Disbursement
  - description: >-
      Per-tenant self-service outbound Dataprev rail throughput: read and set
      this tenant's own requests-per-second, including a deliberate pause at
      zero
    name: Consignado Throughput
paths:
  /v1/consignado/legacy-contracts:
    post:
      tags:
        - Consignado Rail
      summary: Register a pre-existing (legado) loan
      description: >-
        Proxies incluir-emprestimo-legado-trabalhador (Manual 007 v1.4 §3.1):
        registers a contract the tenant made BEFORE this rail's model existed.
        The worker becomes ineligible for new contracting on this rail until the
        legado contract is excluded or renegotiated. Dataprev performs no
        documental validation of legado contracts (§2.2.1.3) — the veracity of
        what is sent is the institution's own responsibility. When
        codigoTipoContrato is 2 (folha), codigoInscricaoEmpregador,
        numeroInscricaoEmpregador and matricula become required; this gateway
        proves that conditional before the rail is called, since neither the
        rail nor the official Swagger enforces it. X-Idempotency is required. A
        retried request that lands on the rail's own HX ("empréstimo já
        cadastrado") answers success rather than a refusal.
      operationId: incluirConsignadoEmprestimoLegado
      parameters:
        - description: >-
            Client-chosen idempotency key. REQUIRED: an absent key is 422, never
            a generated default.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Client-chosen idempotency key. REQUIRED: an absent key is 422,
              never a generated default.
            examples:
              - idem-legado-incluir-0001
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegadoIncluirBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegadoOperationResponse'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    LegadoIncluirBody:
      additionalProperties: false
      properties:
        codigoInscricaoEmpregador:
          description: >-
            Employer inscription type: 1 CNPJ, 2 CPF. Required when
            codigoTipoContrato is 2 (folha).
          enum:
            - '1'
            - '2'
          examples:
            - '1'
          type: string
        codigoTipoContrato:
          description: >-
            1 = empréstimo não consignado sem garantia; 2 = empréstimo com
            descontos em folha de pagamento. When 2, codigoInscricaoEmpregador,
            numeroInscricaoEmpregador and matricula become required (§3.1.1, a
            condition the official Swagger does not express).
          enum:
            - 1
            - 2
          examples:
            - 2
          format: int64
          type: integer
        cpfTrabalhador:
          description: Worker CPF, exactly 11 digits.
          examples:
            - '99999999999'
          pattern: ^[0-9]{11}$
          type: string
        dataFimContrato:
          description: End date of the legado contract, RFC 3339 UTC.
          examples:
            - '2025-12-23T00:00:00Z'
          format: date-time
          type: string
        dataInicioContrato:
          description: Start date of the legado contract, RFC 3339 UTC.
          examples:
            - '2024-09-03T00:00:00Z'
          format: date-time
          type: string
        matricula:
          description: >-
            Matrícula assigned to the worker by the employer. Required when
            codigoTipoContrato is 2 (folha).
          examples:
            - 99999999999-A
          maxLength: 30
          type: string
        numeroContrato:
          description: Number of the legado contract, freely chosen by the institution.
          examples:
            - 99999999999AL1
          maxLength: 20
          minLength: 1
          type: string
        numeroInscricaoEmpregador:
          description: >-
            Employer inscription number: 14 digits for CNPJ, 11 for CPF
            (matching codigoInscricaoEmpregador; §3.1.1's own '15 algarismos' is
            a stale maximum, see ports.ValidateNumeroInscricaoEmpregador).
            Required when codigoTipoContrato is 2 (folha).
          examples:
            - '42422253000101'
          pattern: ^[0-9]{11,14}$
          type: string
        numeroParcelas:
          description: Total number of instalments of the legado loan.
          examples:
            - 15
          format: int64
          maximum: 999
          minimum: 1
          type: integer
        qtdParcelasPagas:
          description: Number of instalments already paid.
          examples:
            - 7
          format: int64
          maximum: 999
          minimum: 0
          type: integer
        valorCETMensal:
          description: >-
            valorCETMensal — Custo Efetivo Total, monthly percent decimal
            string.
          examples:
            - '0.5'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorEmprestimo:
          description: valorEmprestimo — the legado loan's principal (decimal string, BRL).
          examples:
            - '12000.00'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorParcela:
          description: >-
            valorParcela — the legado loan's instalment amount (decimal string,
            BRL).
          examples:
            - '831.34'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorSaldoDevedor:
          description: >-
            valorSaldoDevedor — present value of the remaining instalments, base
            date the day of the request (Manual 007 §3.1.1's OWN definition, not
            Manual 015's — decimal string, BRL).
          examples:
            - '6512.46'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        valorTaxaMensal:
          description: valorTaxaMensal — monthly interest rate, percent decimal string.
          examples:
            - '0.5'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
      required:
        - cpfTrabalhador
        - codigoTipoContrato
        - numeroContrato
        - dataInicioContrato
        - dataFimContrato
        - numeroParcelas
        - qtdParcelasPagas
        - valorEmprestimo
        - valorParcela
        - valorSaldoDevedor
        - valorTaxaMensal
        - valorCETMensal
      type: object
    LegadoOperationResponse:
      additionalProperties: false
      properties:
        idempotent:
          description: >-
            True when the rail answered its own HX (incluir)/HY (excluir)
            idempotency code rather than fresh confirmation. On excluir (HY)
            this means the contract is confirmed gone, which is sound. On
            incluir (HX) it means ONLY that this numeroContrato is already
            registered on the rail — the values THIS request carried
            (valorEmprestimo, valorParcela, etc.) were NOT compared against what
            is stored. To correct a legado registered with wrong values, exclude
            it (motivo 9) and include it again; do not rely on idempotent:true
            as proof the stored values match.
          examples:
            - false
          type: boolean
        mensagem:
          description: The rail's own message.
          examples:
            - Emprestimo legado incluido com sucesso
          type: string
        numeroContrato:
          description: The contract number the rail confirmed the operation against.
          examples:
            - 99999999999AL1
          type: string
      required:
        - mensagem
        - numeroContrato
        - idempotent
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          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

````