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

# Averbar a consignado contract on the payroll rail

> Submits averbar-consignado-trabalhador (Manual 003 v1.21 §3.1) and nothing else. An accepted averbação answers status attachment_pending and publishes consignado.averbacao.accepted: Dataprev holds the mandate, and the contract waits for its documentation — the signed CCB, the evidence pack when the averbação carries the booking block, and the Manual 004 signature evidence — sent through POST .../ccb-attachment. This body carries no document and no signing instant: artifacts, data_hora_assinatura and the signature-evidence fields are refused 422, or 413 first when the body exceeds 1 MiB, as one carrying a real signed CCB usually does. THIS COMMITS MONEY: the averbação creates the payroll-deduction mandate the worker starts paying — so the operation is marked x-money-path: true in this document. POST .../exclusion can cancel an accepted averbação, also while it waits for its documentation. X-Idempotency is required; the transport middleware supplies best-effort response replay while the durable PostgreSQL operation record remains the semantic authority, keyed by tenant and contract and bound to the request payload's digest. The numero_contrato in the body MUST equal the one in the path. A retry after the documentation was sent answers the operation as it stands and never attaches anything.

This intake accepts a bancarizador credential, a fundo credential for its own fund, or an originador credential for a contract whose proposal came from its own bid (a fund it names is validated against the tenant's fund register first, and a contract outside its own bids is refused 403), and most other rail operations accept a bancarizador credential only — so do not assume the credential that reaches this route reaches the rest of the rail.

Partner route: the text above describes the party's own route. Here the path names no party: the call runs as the one originador the partner credential's scope holds, which must be registered under the caller's tenant, exactly as the party's own credential would. A credential whose scope holds more than one originador is refused 403 AUT-1022: name the originador on this route's /v1/consignado/originadores/{originador_id} form instead. On this route the body names the fund by fundo_id, its register id, and fundo_ref is refused 422.



## OpenAPI

````yaml /en/openapi/v3-current/consignado.yaml post /v1/consignado/originador/contracts/{numero_contrato}/averbacao
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, B3 instrument codes, disbursement
    confirmation, portability, refinancing, renegotiation, FGTS guarantees,
    reconciliation, funds, assignments, throughput, and event subscriptions.
  license:
    name: Lerian Studio General License
  title: Lerian Consignado API
  version: v1.0.0
servers:
  - url: https://br-consignado-gw.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: >-
      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.
    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
  - description: >-
      The B3 instrument code (Código IF) of an averbado contract: informed once
      by the bancarizador after B3 registers the CCB, and read back
    name: Consignado Registro B3
paths:
  /v1/consignado/originador/contracts/{numero_contrato}/averbacao:
    post:
      tags:
        - Consignado Rail Commands
      summary: Averbar a consignado contract on the payroll rail
      description: >-
        Submits averbar-consignado-trabalhador (Manual 003 v1.21 §3.1) and
        nothing else. An accepted averbação answers status attachment_pending
        and publishes consignado.averbacao.accepted: Dataprev holds the mandate,
        and the contract waits for its documentation — the signed CCB, the
        evidence pack when the averbação carries the booking block, and the
        Manual 004 signature evidence — sent through POST .../ccb-attachment.
        This body carries no document and no signing instant: artifacts,
        data_hora_assinatura and the signature-evidence fields are refused 422,
        or 413 first when the body exceeds 1 MiB, as one carrying a real signed
        CCB usually does. THIS COMMITS MONEY: the averbação creates the
        payroll-deduction mandate the worker starts paying — so the operation is
        marked x-money-path: true in this document. POST .../exclusion can
        cancel an accepted averbação, also while it waits for its documentation.
        X-Idempotency is required; the transport middleware supplies best-effort
        response replay while the durable PostgreSQL operation record remains
        the semantic authority, keyed by tenant and contract and bound to the
        request payload's digest. The numero_contrato in the body MUST equal the
        one in the path. A retry after the documentation was sent answers the
        operation as it stands and never attaches anything.


        This intake accepts a bancarizador credential, a fundo credential for
        its own fund, or an originador credential for a contract whose proposal
        came from its own bid (a fund it names is validated against the tenant's
        fund register first, and a contract outside its own bids is refused
        403), and most other rail operations accept a bancarizador credential
        only — so do not assume the credential that reaches this route reaches
        the rest of the rail.


        Partner route: the text above describes the party's own route. Here the
        path names no party: the call runs as the one originador the partner
        credential's scope holds, which must be registered under the caller's
        tenant, exactly as the party's own credential would. A credential whose
        scope holds more than one originador is refused 403 AUT-1022: name the
        originador on this route's /v1/consignado/originadores/{originador_id}
        form instead. On this route the body names the fund by fundo_id, its
        register id, and fundo_ref is refused 422.
      operationId: averbarConsignadoContractAsBoundOriginador
      parameters:
        - description: >-
            The contract number, minted by the CLIENT — the rail mints nothing
            here: 2 to 15 letters or digits. Must equal the numero_contrato in
            the body.
          in: path
          name: numero_contrato
          required: true
          schema:
            description: >-
              The contract number, minted by the CLIENT — the rail mints nothing
              here: 2 to 15 letters or digits. Must equal the numero_contrato in
              the body.
            examples:
              - 99999999999AN1
            maxLength: 15
            minLength: 2
            pattern: ^[A-Za-z0-9]+$
            type: string
        - description: Required idempotency key. Absent is 422, never a generated default.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Required idempotency key. Absent is 422, never a generated
              default.
            examples:
              - idem-1
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OriginadorAverbacaoRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AverbacaoOperationResponse'
          description: OK
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            A conflict with the averbação this contract already holds.
            AVERBACAO_CLAIM_CONFLICT means the averbação is already claimed
            under another idempotency key, so follow the claim that exists
            rather than opening a second one. It is definitive until Dataprev
            refuses that averbação, which frees the contract number: a corrected
            averbação under a new contract_id and idempotency key then goes
            through, the refusal stays in the history, and the refused
            contract_id stays spent. CONTRACT_ALREADY_REGISTERED means the
            contract number is already a contract in this gateway (minted by a
            refinanciamento or renegociação, imported, or received by
            portability); nothing was written and nothing was sent to Dataprev.
            It is definitive. AVERBACAO_HELD_BY_ANOTHER_SENDER means a
            credential of another nature (bancarizador, fundo or originador)
            sent this same request first and it has not reached Dataprev: only a
            credential of that nature resumes it, by sending it again. It stops
            once Dataprev answers that request. A 409 carrying CLT-0007 and the
            detail "an identical request is already in flight" is not
            definitive: hold this idempotency key and retry under it.
            DATAPREV_CREDENTIAL_REQUIRED means this tenant has no Dataprev
            credential in custody, so the gateway cannot act for it on the rail
            at all; it is definitive until the credential is provisioned, and
            retrying before that never succeeds. DATAPREV_CREDENTIAL_REVOKED
            means the tenant's credentials were revoked; it holds until a
            complete upload (PUT /v1/credentials/dataprev with the certificate
            and the OAuth client together) opens a new custody.
            DATAPREV_CREDENTIAL_REJECTED means Dataprev refused its OAuth client
            credentials, so correct them in custody before retrying.
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The body is 1048576 bytes or more, or it holds more JSON tokens than
            the command budget; nothing is recorded or sent to Dataprev.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The request cannot be processed as sent. IDEMPOTENCY_KEY_REUSE means
            the X-Idempotency key is spent on a different request: send a new
            key. FUNDO_NOT_REGISTERED means fundo_ref names no fund registered
            for this tenant, and FUNDO_DEACTIVATED a fund that no longer accepts
            new credit: correct fundo_ref. A body carrying documents or Manual
            004 signature evidence answers 422, or 413 first when it exceeds 1
            MiB: they are sent through POST .../ccb-attachment, and so is
            data_hora_assinatura. FIRST_DEDUCTION_BEFORE_COMPETENCIA means
            data_primeiro_desconto falls in a month before
            first_deduction_competencia; DECLARED_DATES_OUT_OF_ORDER means the
            declared dates break an order the booking requires (see
            data_inicio_contrato and data_primeiro_desconto); correct the dates
            and resend. BOOKING_FIELD_INVALID means the lender cannot read a
            booking field (see loan_product_version, margin_snapshot,
            contract_id and fundo_ref). DECLARED_TERMS_INCONSISTENT means the
            declared amounts or rates contradict each other (see
            principal_amount and monthly_rate); correct the terms.
            MARGIN_SNAPSHOT_INCONSISTENT means margin_snapshot does not hold
            installment_amount; read the margin again or re-price.
            CONTRACT_NOT_BOOKABLE means the lender cannot book this contract at
            all (see installment_count and expected_disbursement_date); send it
            without the booking block. RATE_OUTSIDE_PRODUCT_RANGE means
            monthly_rate times 12 falls outside the annual rate range of the
            loan_product_version the Lender published.
            VERSION_ADMITS_NO_PESSOA_FISICA means the Lender published the
            loan_product_version as admitting no pessoaFisica.
            LOAN_PRODUCT_VERSION_UNKNOWN means the tenant has Lender versions
            and this gateway has not received this loan_product_version from the
            Lender; a version just created may still be on its way (resend
            later), one created before this gateway was linked to the tenant
            never arrives (create a new version in the Lender). A tenant without
            the Lender is not checked. MATRICULA_DIFFERS_FROM_PROPOSAL means
            matricula is not the one numero_proposta was won for; it applies
            without the booking block too. Each detail names the rule. The
            others apply only with the booking block, and the rail was not
            called; a retry of an averbação the rail already accepted is not
            refused.
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Too Many Requests
        '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:
    OriginadorAverbacaoRequest:
      additionalProperties: false
      properties:
        annual_rate:
          description: >-
            valorTaxaAnual as a PERCENT-per-year decimal string. "23.87" is
            23.87 %/year — the effective compounding of monthly_rate 1.80.
          examples:
            - '23.87'
          type: string
        cet_annual:
          description: >-
            valorCETAnual — Custo Efetivo Total as a PERCENT-per-year decimal
            string (the effective compounding of cet_monthly).
          examples:
            - '25.34'
          type: string
        cet_monthly:
          description: >-
            valorCETMensal — Custo Efetivo Total as a PERCENT-per-month decimal
            string. Sits above monthly_rate because it absorbs IOF and fees.
          examples:
            - '1.90'
          type: string
        cnpj_operador:
          description: >-
            CNPJ of the operator responsible for the operation — banking
            correspondent, cooperado or similar (Manual 003 §3.1.1 p.9,
            Obrigatório NÃO). An absent value is a legitimate "no intermediary
            operator": the adapter drops the field rather than sending an empty
            string.
          examples:
            - '98765432000188'
          type: string
        codigo_inscricao_empregador:
          description: >-
            Employer inscription TYPE code. Manual 003 §3.1.1 p.10 publishes
            exactly two: 1 = CNPJ, 2 = CPF. REQUIRED on the wire (Obrigatório
            Sim, error SG); a value outside the enumeration is refused 422
            before the rail is called.
          enum:
            - '1'
            - '2'
          examples:
            - '1'
          type: string
        contract_id:
          description: >-
            The CLIENT's own contract identity, echoed back on the response and
            used to correlate the emitted confirmed/rejected fact. Never minted
            here. 1..128 bytes of UTF-8 without leading or trailing spaces. With
            the booking block, one with control characters is refused 422
            BOOKING_FIELD_INVALID before the rail is called, and so is one
            outside those bounds on a contract import.
          examples:
            - contract-1
          type: string
        cpf:
          description: >-
            Worker CPF, exactly 11 digits — a CPF is eleven digits by definition
            (Manual 002 v1.15 §3.1.1 p.8 types the request field Número, 11
            algarismos). In the BODY, never a path or query parameter.
          examples:
            - '12345678901'
          pattern: ^[0-9]{11}$
          type: string
        dados_cadastrais:
          $ref: '#/components/schemas/DadosCadastrais'
          description: >-
            Optional worker, employer, origination and disbursement-account
            record. Part of the semantic digest. Rendered once at averbação and
            stored with nome_trabalhador; that rendering, not the request bytes,
            is what the dados-cadastrais route serves and the digest covers.
            Provisional until the contract confirms: a documentation that sends
            its own dados_cadastrais replaces this block whole. Never sent to
            Dataprev. contract.registered carries only the SHA-256 of the final
            cadastro.
        data_fim_contrato:
          description: >-
            Contract end date, RFC 3339 UTC. A value other than
            data_primeiro_desconto plus (installment_count - 1) months does not
            block the averbação.
          examples:
            - '2027-07-30T00:00:00Z'
          format: date-time
          type: string
        data_inicio_contrato:
          description: >-
            Contract start date, RFC 3339 UTC. With the booking block,
            data_fim_contrato, data_primeiro_desconto and
            expected_disbursement_date must not fall before it, and
            expected_disbursement_date must be before data_primeiro_desconto,
            compared as UTC calendar dates: the averbação route refuses that
            order 422 DECLARED_DATES_OUT_OF_ORDER before the rail is called.
          examples:
            - '2026-07-30T00:00:00Z'
          format: date-time
          type: string
        data_primeiro_desconto:
          description: >-
            Date of the first payroll deduction, RFC 3339 UTC; its UTC calendar
            date is what the rail and the Lerian lender receive. With the
            booking block, a date that is not a banking business day rolls to
            the next one, or back to the month's last one when the next falls in
            another month; the rolled date must be after
            expected_disbursement_date, or the averbação route refuses it 422
            DECLARED_DATES_OUT_OF_ORDER before the rail is called.
          examples:
            - '2026-08-30T00:00:00Z'
          format: date-time
          type: string
        expected_disbursement_date:
          description: >-
            Expected loan disbursement date in YYYY-MM-DD. Required for every
            booking, including originations without numero_proposta. A date
            outside 2026 to 2099 is refused 422 CONTRACT_NOT_BOOKABLE by the
            averbação route before the rail is called.
          examples:
            - '2026-08-01'
          maxLength: 10
          type: string
        first_deduction_competencia:
          description: >-
            Payroll competência of the first deduction, yyyyMM. With the booking
            block, data_primeiro_desconto must fall in this month or a later
            one: an earlier month is refused 422
            FIRST_DEDUCTION_BEFORE_COMPETENCIA by the averbação route before the
            rail is called.
          examples:
            - '202608'
          type: string
        formalization_deadline:
          description: >-
            UTC deadline by which the accepted contract must complete
            formalization. The documentation's data_hora_assinatura must not be
            after it, compared to the second: POST .../ccb-attachment refuses
            that 422 FORMALIZATION_DEADLINE_EXCEEDED before Dataprev is called.
          examples:
            - '2026-08-02T12:00:00Z'
          format: date-time
          type: string
        fundo_id:
          description: >-
            OPTIONAL fund the credit is attributed to, named by its id from GET
            /v1/consignado/fundos, or by its Lender fund id (canonical lowercase
            UUID), in place of fundo_ref, which this route refuses 422. The
            gateway attributes that fund's reference exactly as fundo_ref does
            on the principal's route; an id the tenant does not register is
            refused 422. Only a Lender fund id puts the contract in that Lender
            fund's cession pool. Omit it and the contract is attributed to no
            fund.
          examples:
            - 3f2504e0-4f89-41d3-9a0c-0305e82c3301
          format: uuid
          type: string
        fundo_ref:
          description: >-
            OPTIONAL opaque UTF-8 fund reference, bounded to 128 bytes. It is
            preserved byte-for-byte without trimming, case folding,
            normalization, parsing, or a local character whitelist. NOT a rail
            field — the fund has no relationship with the rail, so it never
            crosses the wire; it is persisted and published unchanged. With the
            booking block, a value of only spaces is refused 422
            BOOKING_FIELD_INVALID by the averbação route before the rail is
            called.


            VERIFIED against your credential. A fund, or a third party acting
            for one, may only name the fund its own credential carries: a
            different value is refused before the rail is called, and an omitted
            value is filled in from the credential. The comparison is exact
            bytes, so padding, letter case and accent composition are part of
            the fund's identity — send the reference exactly as it was issued to
            you. A bancarizador carries no fund of its own and may name one
            here; its value is taken as given, unchanged, and a present value
            must name a fund that still accepts new credit: one the tenant
            registered in this gateway, or one of the tenant's Lender fund
            registry, named by its Lender id (the lowercase UUID text of
            assignment_fund_id).


            OMIT it entirely and the contract is simply not attributed to any
            fund: nothing is looked up, nothing is refused, and the operation
            persists no fund at all. Which fund bought the credit is YOUR
            bookkeeping, not the rail's - the fund has no relationship with
            Dataprev.
          examples:
            - '  Fundo: Árvore/Classe A — série № 7  '
          maxLength: 128
          type: string
        installment_amount:
          description: valorParcela — the instalment amount (decimal string, BRL).
          examples:
            - '201.75'
          type: string
        installment_count:
          description: >-
            totalParcelas — the number of instalments. With the booking block,
            97 to 999 is refused 422 CONTRACT_NOT_BOOKABLE by the averbação
            route before the rail is called.
          examples:
            - 12
          format: int64
          maximum: 999
          type: integer
        iof_amount:
          description: valorIOF — the IOF charged (decimal string, BRL).
          examples:
            - '10.00'
          type: string
        liberated_amount:
          description: >-
            valorLiberado — "o valor líquido repassado ao trabalhador após
            descontos" (Manual 003 §3.1.1 p.9, Obrigatório Sim, errors BL/BQ),
            also required on the winning proposta (Manual 001 §3.1.2 p.10).
            DISTINCT from principal_amount and NOT derivable from it: the Manual
            001 p.13 example quotes valorEmprestimo 2160.00 / valorIOF 10.00
            with valorLiberado 2000.00. Never computed here.
          examples:
            - '2000.00'
          type: string
        loan_product_version:
          description: >-
            Immutable version of the loan product whose terms governed this
            contract, as a UUID. A value that is not a UUID, or the nil UUID, is
            refused 422 BOOKING_FIELD_INVALID by the averbação route before the
            rail is called. The averbação route also refuses, 422
            RATE_OUTSIDE_PRODUCT_RANGE before the rail is called, a monthly_rate
            that times 12 falls outside the annual rate range the Lender
            published for this version. A version this gateway has not received
            from the Lender, for a tenant that has received some, is refused 422
            LOAN_PRODUCT_VERSION_UNKNOWN: a version just created may still be on
            its way (resend later); one created before this gateway was linked
            to the tenant never arrives (create a new version in the Lender). A
            tenant without the Lender is not checked.
          examples:
            - 0f9d1a7c-3b52-4c8e-9a1d-2f6b8c4e5d70
          maxLength: 128
          type: string
        margin_snapshot:
          $ref: '#/components/schemas/AverbacaoMarginSnapshot'
        matricula:
          description: >-
            The worker's payroll registration at the employer (Texto 1..30,
            errors OT/SI). REQUIRED on the wire: Manual 004 v1.8 §2.1.2 marks it
            Obrigatório S on the CCB attach and the attach reuses this one
            value.
          examples:
            - M-1
          maxLength: 30
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        monthly_rate:
          description: >-
            valorTaxaMensal as a PERCENT-per-month decimal string. "1.80" is
            1.80 %/month, NOT the fraction 0.018. With the booking block, the
            four rates must be greater than zero, annual_rate above
            monthly_rate, cet_annual above cet_monthly, each CET at least its
            interest rate, and monthly_rate times 12 at most 1000: the averbação
            route refuses otherwise 422 DECLARED_TERMS_INCONSISTENT before the
            rail is called.
          examples:
            - '1.80'
          type: string
        nome_trabalhador:
          description: >-
            The worker's full name as it appears on the contract (Texto 1..90,
            errors AO/OT). REQUIRED: Manual 003 §3.1.1 marks nomeTrabalhador
            Obrigatório Sim, so a blank name is refused 422 before the rail is
            called.
          examples:
            - MARIA DA SILVA
          maxLength: 90
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        numero_contrato:
          description: >-
            The rail contract number, minted by the CLIENT: 2 to 15 letters or
            digits, without spaces, accents or symbols. It MUST equal the
            numero_contrato path parameter — a mismatch is refused 422 so a
            caller cannot address one contract and averbar another.
          examples:
            - 99999999999AN1
          maxLength: 15
          minLength: 2
          pattern: ^[A-Za-z0-9]+$
          type: string
        numero_inscricao_empregador:
          description: >-
            Employer inscription NUMBER matching codigo_inscricao_empregador
            (Texto 14 since Manual 004 v1.6, error SH). REQUIRED on the wire.
          examples:
            - '12345678000199'
          type: string
        numero_proposta:
          description: >-
            The optional proposal identifier this gateway minted for the winning
            bid. Absent means the origination did not pass through this
            gateway's auction. Present values are matched exactly: leading or
            trailing whitespace is refused, never normalized into another
            identity.
          examples:
            - '12345678901234567890'
          maxLength: 20
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        origination_fee_amount:
          description: >-
            OPTIONAL origination fee the client charges on this contract, in BRL
            as a canonical decimal with exactly two places ("10.00", "0.00").
            Omitted means zero. It must be below principal_amount and is sent
            only with the booking block. It is the client's definitive
            declaration: the gateway never derives it from the other terms and
            it is carried unchanged on consignado.contract.registered. NOT a
            rail field: it never reaches Dataprev.
          examples:
            - '150.00'
          maxLength: 20
          type: string
        perc_verba_rescisoria_garantia:
          description: >-
            Percentage of the rescission verbas pledged as collateral (decimal
            string, PERCENT). This rides the SEPARATE employer verba-rescisória
            track, not the FGTS-guarantee execution API.
          examples:
            - '10.00'
          type: string
        preparation:
          $ref: '#/components/schemas/AverbacaoPreparation'
          description: >-
            OPTIONAL references to a preparation the client obtained from the
            Lerian lender before averbação: the quote, the CCB instrument issued
            from it and the SHA-256 of that original CCB. All three are required
            when the object is sent, and it is sent only with the booking block.
            They are the client's declarations: the gateway checks their shape,
            never looks them up, and carries them unchanged on
            consignado.contract.registered. NOT a rail field: it never reaches
            Dataprev.
        principal_amount:
          description: >-
            valorEmprestimo — the amount lent (decimal string, BRL). DISTINCT
            from liberated_amount and not derivable from it: the Manual 001
            v1.10 §3.1.3 p.13 example quotes valorEmprestimo 2160.00 / valorIOF
            10.00 with valorLiberado 2000.00. With the booking block,
            principal_amount, liberated_amount and installment_amount must be
            greater than zero, and principal_amount less iof_amount and
            origination_fee_amount must equal liberated_amount, which the Lender
            books as released: the averbação route refuses otherwise 422
            DECLARED_TERMS_INCONSISTENT before the rail is called.
          examples:
            - '2160.00'
          type: string
        tem_garantias:
          description: >-
            Whether the contract pledges FGTS collateral. REQUIRED — it is the
            gate the three collateral values below are conditional on, and false
            is an authoritative "no collateral" rather than an absence. False
            with any of them, or true with none, is refused 422 by the averbação
            route before the rail is called (Dataprev rule FI).
          examples:
            - true
          type: boolean
        valor_multa_rescisoria_garantia_fgts:
          description: >-
            Rescission-penalty portion pledged as collateral (decimal string,
            BRL). Conditional on tem_garantias; omit rather than send 0.
          examples:
            - '400.25'
          type: string
        valor_saldo_disponivel_garantia_fgts:
          description: >-
            Consignable FGTS balance pledged as collateral (decimal string,
            BRL). Conditional on tem_garantias. OMIT it when there is no FGTS
            collateral: the rail reads a sent 0 as an invalid guarantee value.
          examples:
            - '1000.50'
          type: string
      required:
        - contract_id
        - numero_contrato
        - cpf
        - principal_amount
        - installment_amount
        - installment_count
        - annual_rate
        - cet_monthly
        - cet_annual
        - iof_amount
        - first_deduction_competencia
        - matricula
        - nome_trabalhador
        - codigo_inscricao_empregador
        - numero_inscricao_empregador
        - data_inicio_contrato
        - data_fim_contrato
        - data_primeiro_desconto
        - monthly_rate
        - liberated_amount
        - tem_garantias
      type: object
    AverbacaoOperationResponse:
      additionalProperties: false
      properties:
        attachmentAt:
          description: >-
            Instant the CCB attachment was recorded, RFC 3339 UTC. ABSENT until
            the attachment was recorded.
          examples:
            - '2026-07-30T12:00:09Z'
          format: date-time
          type: string
        averbacaoAt:
          description: >-
            Instant the rail's averbação response was recorded, RFC 3339 UTC.
            ABSENT until the rail has answered — absence is a state, not a zero
            timestamp.
          examples:
            - '2026-07-30T12:00:04Z'
          format: date-time
          type: string
        contractId:
          description: >-
            The client's own contract identity, echoed. Empty for a contract a
            renegociação minted, which has none.
          examples:
            - contract-1
          type: string
        hashOperacao:
          description: >-
            The rail's identity for the accepted CCB attachment (hashOperacao,
            Manual 004 §2.1). Durable, so a replay returns it without touching
            the rail.
          examples:
            - HASH-1
          type: string
        message:
          description: The rail's own response message.
          examples:
            - averbado
          type: string
        numeroContrato:
          description: The contract number the operation was addressed to.
          examples:
            - 99999999999AN1
          type: string
        responseCode:
          description: The rail's own response code for the averbação.
          examples:
            - AV
          type: string
        status:
          description: >-
            Durable operation status. attachment_pending means the averbação was
            accepted by Dataprev and the contract is waiting for its
            documentation, sent through POST .../ccb-attachment, also after an
            earlier one failed at Dataprev; this is a deliberate wait, not a
            failure. averbacao_unknown means the averbação's outcome at the rail
            is ambiguous and the operation needs reconciliation — it is not a
            failure to retry blindly. attachment_unknown is no longer produced.
          enum:
            - claimed
            - averbacao_invoking
            - averbacao_unknown
            - attachment_pending
            - attachment_invoking
            - attachment_unknown
            - confirmed
            - rejected
          examples:
            - confirmed
          type: string
      required:
        - contractId
        - numeroContrato
        - status
      type: object
    Detail:
      additionalProperties: true
      properties:
        code:
          description: >-
            Stable, machine-readable product error code. One of the enumerated
            values: the CLT-NNNN catalog codes for the general refusal classes;
            the named command conflicts, which a client branches on to tell one
            conflict from another; the four terminal refusals
            IDEMPOTENCY_STATE_UNRECOGNISED, IDEMPOTENCY_RECORD_UNREADABLE,
            IDEMPOTENCY_OUTCOME_UNRECORDED and IDEMPOTENCY_REPLAY_UNAVAILABLE
            (422), which tell the client to reconcile the original request and
            never retry under a new key; IDEMPOTENCY_KEY_REUSE (422): the key is
            spent on a different request, so send a new key; the codes a single
            surface answers, named after it (FUNDO_*, REGISTRO_B3_*, ...); and
            the 5xx codes naming an upstream (DATAPREV_*, STREAMING_HUB_*,
            TENANT_MANAGER_*, the Access Manager's AUT-0033 and AUT-1021) or an
            unknown outcome, whose detail is client-readable; and the Access
            Manager's AUT-1022 (403): the partner credential holds more than one
            originador, so name it in the path.
          enum:
            - AUT-0033
            - AUT-1021
            - AUT-1022
            - AVERBACAO_ARTIFACT_CONFLICT
            - AVERBACAO_CLAIM_CONFLICT
            - AVERBACAO_DOCUMENTATION_CONFLICT
            - AVERBACAO_EXCLUDED
            - AVERBACAO_HELD_BY_ANOTHER_SENDER
            - AVERBACAO_NOT_ACCEPTED
            - AVERBACAO_OPERATIONS_INTERNAL
            - AVERBACAO_OPERATIONS_INVALID_CURSOR
            - AVERBACAO_OPERATIONS_INVALID_QUERY
            - AVERBACAO_OPERATIONS_UNKNOWN_STATUS
            - AVERBACAO_OPERATION_NOT_FOUND
            - BID_NO_PROPOSTA_LEFT
            - BID_ORIGINADOR_INACTIVE
            - BID_ORIGINADOR_UNKNOWN
            - BID_PROPOSAL_SLOT_TAKEN
            - BID_SOLICITACAO_TAKEN
            - BID_SOLICITACAO_UNKNOWN
            - BID_SUBMISSIONS_INTERNAL
            - BID_SUBMISSIONS_INVALID_CURSOR
            - BID_SUBMISSIONS_UNKNOWN_SITUATION
            - BOOKING_FIELD_INVALID
            - CEDED_CREDIT_INTERNAL
            - CEDED_CREDIT_NO_FUND_ENTITLEMENT
            - CEDED_CREDIT_UNAVAILABLE
            - CLT-0001
            - CLT-0002
            - CLT-0003
            - CLT-0004
            - CLT-0005
            - CLT-0006
            - CLT-0007
            - CLT-0008
            - CLT-0009
            - CLT-0010
            - CLT-0011
            - CONTRACT_ALREADY_REGISTERED
            - CONTRACT_NOT_BOOKABLE
            - CURSOR_EXPIRED
            - CURSOR_FENCE_MISMATCH
            - DATAPREV_CREDENTIAL_REJECTED
            - DATAPREV_CREDENTIAL_REQUIRED
            - DATAPREV_CREDENTIAL_REVOKED
            - DATAPREV_INVALID_RESPONSE
            - DATAPREV_TIMEOUT
            - DATAPREV_UNAVAILABLE
            - DECLARED_DATES_OUT_OF_ORDER
            - DECLARED_TERMS_INCONSISTENT
            - DISBURSEMENT_CONFIRMATIONS_INTERNAL
            - DISBURSEMENT_CONFIRMATIONS_INVALID_CURSOR
            - DISBURSEMENT_PAYMENT_CONFLICT
            - EVENT_DELIVERY_INTERNAL
            - EXCLUSION_AUTHORITY_CONFLICT
            - EXCLUSION_BOOKING_IDENTITY_INCOMPLETE
            - EXCLUSION_DOCUMENTATION_UNDERWAY
            - EXCLUSION_OPERATIONS_INTERNAL
            - EXCLUSION_OPERATIONS_INVALID_CURSOR
            - EXCLUSION_OPERATIONS_INVALID_QUERY
            - EXCLUSION_OPERATIONS_UNKNOWN_STATUS
            - EXCLUSION_OPERATION_NOT_FOUND
            - EXCLUSION_RENEGOTIATION_UNDERWAY
            - FGTS_EXECUTION_ALREADY_REFUSED
            - FGTS_EXECUTION_CONTRACT_TAKEN
            - FGTS_EXECUTION_OUTCOME_UNRESOLVED
            - FGTS_EXECUTION_PAYLOAD_MISMATCH
            - FIRST_DEDUCTION_BEFORE_COMPETENCIA
            - FORMALIZATION_DEADLINE_EXCEEDED
            - FUNDO_CNPJ_CONFLICT
            - FUNDO_DEACTIVATED
            - FUNDO_INTERNAL
            - FUNDO_INVALID_ID
            - FUNDO_INVALID_INPUT
            - FUNDO_NOT_FOUND
            - FUNDO_NOT_REGISTERED
            - FUNDO_REF_CONFLICT
            - FUNDO_UNAVAILABLE
            - HELD_REPASSE_MONTH_CLOSED
            - HELD_REPASSE_MONTH_MISMATCH
            - HELD_REPASSE_NOT_FOUND
            - HELD_REPASSE_UNATTRIBUTABLE
            - IDEMPOTENCY_KEY_REUSE
            - IDEMPOTENCY_OUTCOME_UNRECORDED
            - IDEMPOTENCY_RECORD_UNREADABLE
            - IDEMPOTENCY_REPLAY_UNAVAILABLE
            - IDEMPOTENCY_STATE_UNRECOGNISED
            - INVALID_CONTRACT_NUMBER
            - INVALID_CURSOR
            - INVALID_EVENTS_INVALID_CURSOR
            - INVALID_EVENT_NOT_FOUND
            - INVALID_EVENT_NOT_REQUEUEABLE
            - INVALID_PAGE_LIMIT
            - INVENTORY_UNAVAILABLE
            - LOAN_PRODUCT_VERSION_UNKNOWN
            - MARGIN_SNAPSHOT_INCONSISTENT
            - MATRICULA_DIFFERS_FROM_PROPOSAL
            - ORIGINADOR_INTERNAL
            - ORIGINADOR_INVALID_ID
            - ORIGINADOR_INVALID_INPUT
            - ORIGINADOR_NOT_FOUND
            - ORIGINADOR_REF_CONFLICT
            - ORIGINADOR_UNAVAILABLE
            - OUTCOME_UNKNOWN
            - PORTABILIDADE_WINDOW_EXPIRED
            - RAIL_COMMANDS_INTERNAL
            - RAIL_COMMANDS_INVALID_CURSOR
            - RAIL_COMMANDS_TENANT_REQUIRED
            - RAIL_COMMANDS_UNKNOWN_FILTER
            - RAIL_COMMAND_ALREADY_REFUSED
            - RAIL_COMMAND_ANSWER_NOT_RETAINED
            - RAIL_COMMAND_CLAIM_CONFLICT
            - RAIL_COMMAND_CLOSE_CONTRADICTED
            - RAIL_COMMAND_NOT_CLOSEABLE
            - RAIL_COMMAND_OUTCOME_UNRESOLVED
            - RAIL_COMMAND_PAYLOAD_MISMATCH
            - RATE_OUTSIDE_PRODUCT_RANGE
            - REGISTRATION_NOT_FOUND
            - REGISTRO_B3_AVERBACAO_NAO_CONFIRMADA
            - REGISTRO_B3_CONTRATO_NAO_ENCONTRADO
            - REGISTRO_B3_DATA_REGISTRO_INVALIDA
            - REGISTRO_B3_INTERNAL
            - REGISTRO_B3_JA_INFORMADO
            - REGISTRO_B3_NAO_INFORMADO
            - REGISTRO_B3_UNAVAILABLE
            - REGISTRO_B3_UNWIRED
            - RENEGOTIATION_EXCLUSION_UNDERWAY
            - REPASSE_EXPECTATIONS_INTERNAL
            - REPASSE_EXPECTATIONS_INVALID_CURSOR
            - REPASSE_EXPECTATIONS_UNKNOWN_SITUATION
            - REVERSAO_WINDOW_EXPIRED
            - SALDO_DEVEDOR_INTERNAL
            - SALDO_DEVEDOR_INVALID_CURSOR
            - SALDO_DEVEDOR_NOT_FOUND
            - SALDO_DEVEDOR_TENANT_REQUIRED
            - SALDO_DEVEDOR_UNAVAILABLE
            - STREAMING_HUB_TIMEOUT
            - STREAMING_HUB_UNAVAILABLE
            - TENANT_MANAGER_TIMEOUT
            - TENANT_MANAGER_UNAVAILABLE
            - THROUGHPUT_HISTORY_INTERNAL
            - THROUGHPUT_HISTORY_INVALID_CURSOR
            - THROUGHPUT_HISTORY_TENANT_REQUIRED
            - THROUGHPUT_HISTORY_UNAVAILABLE
            - THROUGH_REQUIRED
            - UNKNOWN_QUERY_PARAMETER
            - VERSION_ADMITS_NO_PESSOA_FISICA
          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
    DadosCadastrais:
      additionalProperties: false
      properties:
        dados_bancarios:
          $ref: '#/components/schemas/DadosCadastraisBancarios'
          description: >-
            The worker's own disbursement account. When present it carries at
            least one complete set: banco + agencia + conta, or chave_pix +
            tipo_chave_pix.
        empregador:
          $ref: '#/components/schemas/DadosCadastraisEmpregador'
          description: >-
            Employer record. Required when the averbação's
            codigo_inscricao_empregador is 1 (CNPJ), refused when it is 2 (a
            person employer). The CNPJ is numero_inscricao_empregador and is not
            repeated here.
        originacao:
          $ref: '#/components/schemas/DadosCadastraisOriginacao'
        trabalhador:
          $ref: '#/components/schemas/DadosCadastraisTrabalhador'
      required:
        - trabalhador
        - originacao
      type: object
    AverbacaoMarginSnapshot:
      additionalProperties: false
      properties:
        as_of:
          description: UTC instant at which the margin snapshot was observed.
          examples:
            - '2026-07-30T11:55:00Z'
          format: date-time
          type: string
        available_margin:
          description: >-
            Available payroll margin observed for this booking, as a
            non-negative decimal string with at most two places; anything else
            is refused 422 BOOKING_FIELD_INVALID by the averbação route before
            the rail is called. It must hold installment_amount and not exceed
            remuneracao_disponivel, else 422 MARGIN_SNAPSHOT_INCONSISTENT.
          examples:
            - '1000.00'
          maxLength: 64
          type: string
        remuneracao_disponivel:
          description: >-
            Available remuneration observed with the margin, as a non-negative
            decimal string with at most two places; anything else is refused 422
            BOOKING_FIELD_INVALID by the averbação route before the rail is
            called. It must be greater than zero, else 422
            MARGIN_SNAPSHOT_INCONSISTENT.
          examples:
            - '5000.00'
          maxLength: 64
          type: string
      required:
        - available_margin
        - remuneracao_disponivel
        - as_of
      type: object
    AverbacaoPreparation:
      additionalProperties: false
      properties:
        credit_instrument_id:
          description: >-
            The CCB instrument the lender issued from that quote, as a canonical
            lowercase UUID.
          examples:
            - 7d2e4f6a-8b0c-4e1d-a3f5-6b7c8d9e0f1a
          maxLength: 36
          type: string
        original_ccb_digest_sha256:
          description: >-
            Lowercase hex SHA-256 of the original CCB document the lender issued
            from the quote, as the lender reported it. It is not the signed CCB.
          examples:
            - 3a1e0c5f9b2d4e6a8c7b1f0e2d3c4b5a69788796a5b4c3d2e1f0a9b8c7d6e5f4
          maxLength: 64
          type: string
        quote_id:
          description: >-
            The lender quote the contract was prepared from, as a canonical
            lowercase UUID.
          examples:
            - 0b6b7c1e-2f4a-4d6e-9a1b-3c5d7e9f1a2b
          maxLength: 36
          type: string
      required:
        - quote_id
        - credit_instrument_id
        - original_ccb_digest_sha256
      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
    DadosCadastraisBancarios:
      additionalProperties: false
      properties:
        agencia:
          description: Branch, without check digit.
          examples:
            - '1234'
          pattern: ^[0-9]{1,5}$
          type: string
        banco:
          description: COMPE bank code.
          examples:
            - '341'
          pattern: ^[0-9]{3}$
          type: string
        chave_pix:
          description: >-
            Pix key. A CPF key must equal the averbação's cpf; a TELEFONE key is
            E.164.
          examples:
            - '12345678901'
          maxLength: 77
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        conta:
          description: Account, without check digit.
          examples:
            - '56789'
          pattern: ^[0-9]{1,20}$
          type: string
        conta_digito:
          description: Account check digit.
          examples:
            - '0'
          pattern: ^[0-9X]{1,2}$
          type: string
        tipo_chave_pix:
          description: Pix key kind.
          enum:
            - CPF
            - EMAIL
            - TELEFONE
            - EVP
          examples:
            - CPF
          type: string
        tipo_conta:
          description: Account kind; absent means CORRENTE to the destination.
          enum:
            - CORRENTE
            - POUPANCA
            - PAGAMENTO
          examples:
            - CORRENTE
          type: string
      type: object
    DadosCadastraisEmpregador:
      additionalProperties: false
      properties:
        cnae_principal:
          description: Main CNAE code.
          examples:
            - '4743100'
          pattern: ^[0-9]{7}$
          type: string
        cnae_principal_descricao:
          description: Official CNAE description.
          examples:
            - Comércio varejista de vidros
          maxLength: 178
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        data_inicio_atividade:
          description: Activity start date, YYYY-MM-DD.
          examples:
            - '2013-04-01'
          format: date
          type: string
        endereco:
          $ref: '#/components/schemas/DadosCadastraisEnderecoEmpregador'
        natureza_juridica:
          description: CONCLA legal-nature code.
          examples:
            - '2062'
          pattern: ^[0-9]{4}$
          type: string
        natureza_juridica_descricao:
          description: Official CONCLA description.
          examples:
            - Sociedade Empresária Limitada
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        nome_fantasia:
          description: >-
            Trade name; when Receita has none, repeat razao_social and set
            nome_fantasia_ausente.
          examples:
            - Vidraçaria Exemplo
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        nome_fantasia_ausente:
          description: >-
            True when nome_fantasia repeats razao_social because Receita has no
            trade name.
          examples:
            - false
          type: boolean
        opcao_mei:
          description: Whether the employer opted into MEI.
          examples:
            - false
          type: boolean
        porte_receita:
          description: Receita company-size code.
          enum:
            - '00'
            - '01'
            - '03'
            - '05'
          examples:
            - '01'
          type: string
        qtd_empregados_clt:
          description: CLT headcount.
          examples:
            - 187
          format: int64
          minimum: 0
          type: integer
        razao_social:
          description: Legal name.
          examples:
            - VIDRACARIA EXEMPLO LTDA
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
      required:
        - razao_social
        - nome_fantasia
        - data_inicio_atividade
        - natureza_juridica
        - natureza_juridica_descricao
      type: object
    DadosCadastraisOriginacao:
      additionalProperties: false
      properties:
        autorizacao_consulta_scr:
          description: >-
            Whether the worker authorized an SCR (BACEN credit registry)
            inquiry.
          examples:
            - true
          type: boolean
        data_solicitacao:
          description: Request date, YYYY-MM-DD.
          examples:
            - '2026-09-04'
          format: date
          type: string
        id_contrato_interno:
          description: The client's internal contract identifier.
          examples:
            - WNG-2026-31892162
          maxLength: 64
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        id_decisao_credito:
          description: Stable identifier of the credit decision that approved the contract.
          examples:
            - CAI-DEC-2026-09-04-7f3a19
          maxLength: 64
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        lote_id:
          description: Stable batch identifier, unique per batch.
          examples:
            - CAI-2026-09-17-001
          pattern: ^[A-Za-z0-9_.-]{1,64}$
          type: string
        numero_ccb:
          description: >-
            CCB number; absent means equal to numero_contrato. At most 20
            characters, the size of the Contrato field of the B3 registro.
          examples:
            - DIDI2090
          maxLength: 20
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        referencias_externas:
          description: Identifiers owned by third-party systems.
          items:
            $ref: '#/components/schemas/DadosCadastraisReferenciaExterna'
          maxItems: 10
          type:
            - array
            - 'null'
      required:
        - lote_id
        - id_contrato_interno
        - id_decisao_credito
      type: object
    DadosCadastraisTrabalhador:
      additionalProperties: false
      properties:
        categoria_esocial:
          description: eSocial worker category.
          examples:
            - '101'
          pattern: ^[0-9]{3}$
          type: string
        cbo:
          description: CBO occupation code.
          examples:
            - '354815'
          pattern: ^[0-9]{6}$
          type: string
        cbo_descricao:
          description: Official CBO description.
          examples:
            - Agente de viagem
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        data_admissao:
          description: Admission date, YYYY-MM-DD.
          examples:
            - '2024-06-10'
          format: date
          type: string
        data_nascimento:
          description: Birth date, YYYY-MM-DD.
          examples:
            - '1970-09-04'
          format: date
          type: string
        email:
          description: E-mail address.
          examples:
            - fulano.de.tal@example.com
          format: email
          maxLength: 254
          type: string
        endereco:
          $ref: '#/components/schemas/DadosCadastraisEndereco'
        estado_civil:
          description: Marital status.
          enum:
            - SOLTEIRO
            - CASADO
            - DIVORCIADO
            - VIUVO
            - UNIAO_ESTAVEL
            - SEPARADO
          examples:
            - SOLTEIRO
          type: string
        nome_mae:
          description: Mother's name.
          examples:
            - Beltrana de Tal
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        renda_base:
          description: Base income, BRL decimal string with at most two places.
          examples:
            - '2201.17'
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          type: string
        rg:
          $ref: '#/components/schemas/DadosCadastraisRG'
        sexo:
          description: Sex.
          enum:
            - M
            - F
          examples:
            - M
          type: string
        telefone_celular:
          description: Mobile phone with area code, digits only.
          examples:
            - '21900000000'
          pattern: ^[0-9]{10,11}$
          type: string
        vinculo_ativo:
          description: Whether the employment relationship is active.
          examples:
            - true
          type: boolean
      required:
        - data_nascimento
        - nome_mae
        - sexo
        - estado_civil
        - renda_base
        - cbo
        - vinculo_ativo
        - endereco
      type: object
    DadosCadastraisEnderecoEmpregador:
      additionalProperties: false
      properties:
        bairro:
          description: District.
          examples:
            - Centro
          maxLength: 100
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        cep:
          description: Postal code, eight digits, no hyphen.
          examples:
            - '20040020'
          pattern: ^[0-9]{8}$
          type: string
        complemento:
          description: Address complement.
          examples:
            - sala 5
          maxLength: 100
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        logradouro:
          description: Street.
          examples:
            - Avenida Rio Branco
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        municipio:
          description: Official municipality name.
          examples:
            - Rio de Janeiro
          maxLength: 100
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        municipio_ibge:
          description: IBGE municipality code.
          examples:
            - '3304557'
          pattern: ^[0-9]{7}$
          type: string
        numero:
          description: Street number.
          examples:
            - '1'
          maxLength: 20
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        uf:
          description: State.
          examples:
            - RJ
          pattern: ^[A-Z]{2}$
          type: string
      required:
        - cep
        - logradouro
        - numero
        - bairro
        - municipio_ibge
        - municipio
        - uf
      type: object
    DadosCadastraisReferenciaExterna:
      additionalProperties: false
      properties:
        sistema:
          description: Owning system.
          examples:
            - REGISTRADORA_X
          pattern: ^[A-Z0-9_]{1,32}$
          type: string
        tipo:
          description: Identifier kind.
          examples:
            - ipoc
          maxLength: 64
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        valor:
          description: Identifier value.
          examples:
            - IPOC-000123
          maxLength: 128
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
      required:
        - sistema
        - tipo
        - valor
      type: object
    DadosCadastraisEndereco:
      additionalProperties: false
      properties:
        bairro:
          description: District.
          examples:
            - Laranjeiras
          maxLength: 100
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        cep:
          description: Postal code, eight digits, no hyphen.
          examples:
            - '22240003'
          pattern: ^[0-9]{8}$
          type: string
        cidade:
          description: City.
          examples:
            - Rio de Janeiro
          maxLength: 100
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        complemento:
          description: Address complement.
          examples:
            - apto 41
          maxLength: 100
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        logradouro:
          description: Street.
          examples:
            - Rua das Laranjeiras
          maxLength: 150
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        numero:
          description: Street number; S/N is valid.
          examples:
            - '120'
          maxLength: 20
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        uf:
          description: State.
          examples:
            - RJ
          pattern: ^[A-Z]{2}$
          type: string
      required:
        - logradouro
        - numero
        - bairro
        - cidade
        - uf
        - cep
      type: object
    DadosCadastraisRG:
      additionalProperties: false
      properties:
        data_emissao:
          description: Issue date, YYYY-MM-DD.
          examples:
            - '2010-03-15'
          format: date
          type: string
        numero:
          description: RG number.
          examples:
            - '12345678'
          maxLength: 20
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        orgao_emissor:
          description: Issuing body.
          examples:
            - DETRAN
          maxLength: 20
          minLength: 1
          pattern: ^[^\x00-\x1F\x7F-\x9F]*$
          patternDescription: free of control characters
          type: string
        uf_emissor:
          description: Issuing state.
          examples:
            - RJ
          pattern: ^[A-Z]{2}$
          type: string
      required:
        - numero
        - orgao_emissor
        - uf_emissor
      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.