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

# Fetch a worker's available consignable margin

> Opens or reuses the worker's authorization and reads available payroll margin — the rail's autorizar-consulta-dados-trabalhador (Manual 002 v1.15 §3.1) and consultar-dados-trabalhador (Manual 002 v1.15 §3.3) behind ONE operation, because the adapter performs them as one. POST, not GET: it opens a consent, and the consent evidence plus the CPF must travel in a body rather than in a path or query string. The worker's authorization token is NEVER returned. A consignado.margin.fetched fact is emitted on this path exactly as on the lender event path, so a client integrating by API keeps its other consumers fed.

CONSENT WINDOW (Manual 002 v1.15 §5.6). dataHoraAutorizacaoDigital starts two clocks, measured in calendar days from the worker's signature: the authorization may be CONSULTED for 30 days, and a request may be MADE against it for 45. Both boundaries are INCLUSIVE — the instant exactly 30 or 45 days after the signature is still inside its window, and only the next nanosecond is outside.

Outside either window the gateway refuses LOCALLY, before a byte reaches the rail: 422 with code CLT-0006 and a detail telling you to obtain a fresh worker authorization. THAT REFUSAL IS NOT RETRYABLE. Repeating the request performs the very read the lapsed authorization withdrew; only new authorization evidence makes it succeed. A dataHoraAutorizacaoDigital carrying a non-UTC offset, or dated ahead of the gateway's clock, is the same 422 with a different detail — correct the timestamp; the worker's consent is not in question.

Contrast the rail's OWN consent rejection (Dataprev EX/IV on a stale tokenAutorizacao): that is 503 and IS retryable, because the gateway drops the cached token and the next attempt opens a fresh consent from the same evidence.

Partner route: the text above describes the party's own route. Here the register id in the path names the party: it must be in the partner credential's scope and registered under the caller's tenant, and the call runs as that party, exactly as the party's own credential would.



## OpenAPI

````yaml /pt/openapi/v3-current/consignado.yaml post /v1/consignado/originadores/{originador_id}/workers/margin
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/originadores/{originador_id}/workers/margin:
    post:
      tags:
        - Consignado Rail Commands
      summary: Fetch a worker's available consignable margin
      description: >-
        Opens or reuses the worker's authorization and reads available payroll
        margin — the rail's autorizar-consulta-dados-trabalhador (Manual 002
        v1.15 §3.1) and consultar-dados-trabalhador (Manual 002 v1.15 §3.3)
        behind ONE operation, because the adapter performs them as one. POST,
        not GET: it opens a consent, and the consent evidence plus the CPF must
        travel in a body rather than in a path or query string. The worker's
        authorization token is NEVER returned. A consignado.margin.fetched fact
        is emitted on this path exactly as on the lender event path, so a client
        integrating by API keeps its other consumers fed.


        CONSENT WINDOW (Manual 002 v1.15 §5.6). dataHoraAutorizacaoDigital
        starts two clocks, measured in calendar days from the worker's
        signature: the authorization may be CONSULTED for 30 days, and a request
        may be MADE against it for 45. Both boundaries are INCLUSIVE — the
        instant exactly 30 or 45 days after the signature is still inside its
        window, and only the next nanosecond is outside.


        Outside either window the gateway refuses LOCALLY, before a byte reaches
        the rail: 422 with code CLT-0006 and a detail telling you to obtain a
        fresh worker authorization. THAT REFUSAL IS NOT RETRYABLE. Repeating the
        request performs the very read the lapsed authorization withdrew; only
        new authorization evidence makes it succeed. A
        dataHoraAutorizacaoDigital carrying a non-UTC offset, or dated ahead of
        the gateway's clock, is the same 422 with a different detail — correct
        the timestamp; the worker's consent is not in question.


        Contrast the rail's OWN consent rejection (Dataprev EX/IV on a stale
        tokenAutorizacao): that is 503 and IS retryable, because the gateway
        drops the cached token and the next attempt opens a fresh consent from
        the same evidence.


        Partner route: the text above describes the party's own route. Here the
        register id in the path names the party: it must be in the partner
        credential's scope and registered under the caller's tenant, and the
        call runs as that party, exactly as the party's own credential would.
      operationId: fetchConsignadoWorkerMarginAsOriginador
      parameters:
        - description: >-
            The originador's register id, as returned in the id field of GET
            /v1/consignado/originadores. It must be in the partner credential's
            scope.
          in: path
          name: originador_id
          required: true
          schema:
            description: >-
              The originador's register id, as returned in the id field of GET
              /v1/consignado/originadores. It must be in the partner
              credential's scope.
            examples:
              - 6f1c2a3b-4d5e-4f60-8a7b-9c0d1e2f3a4b
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarginRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarginResponse'
          description: OK
          headers:
            Cache-Control:
              schema:
                type: string
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    MarginRequest:
      additionalProperties: false
      properties:
        codigoInscricaoEmpregador:
          description: 'Employer inscription TYPE code: 1 = CNPJ, 2 = CPF.'
          enum:
            - '1'
            - '2'
          examples:
            - '1'
          type: string
        consent:
          $ref: '#/components/schemas/MarginConsent'
          description: >-
            The worker's grupo-1 consent evidence. Relayed verbatim; never
            synthesized here.
        contractRef:
          description: >-
            Client-chosen correlation reference echoed onto the emitted
            consignado.margin.fetched fact.
          examples:
            - req-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). Body-only by design: a path or query CPF lands in proxy
            and ingress logs.
          examples:
            - '12345678901'
          pattern: ^[0-9]{11}$
          type: string
        matricula:
          description: >-
            Employment bond matrícula (Texto 1..30, Manual 002 v1.15 §3.3.1,
            errors OT/SI).
          examples:
            - M-1
          maxLength: 30
          type: string
        numeroInscricaoEmpregador:
          description: >-
            Employer inscription number, relayed verbatim as Texto. Required:
            Manual 002 v1.15 §3.3.1 marks it Obrigatório on the worker data
            read.
          examples:
            - '12345678000199'
          minLength: 1
          type: string
      required:
        - cpf
        - matricula
        - codigoInscricaoEmpregador
        - numeroInscricaoEmpregador
        - consent
      type: object
    MarginResponse:
      additionalProperties: false
      properties:
        activeOrSuspendedLoans:
          description: >-
            How many consignados already sit active or suspended on this bond.
            Manual 002 v1.15 §3.3.2 p.17 publishes the ceiling: 9 per employment
            bond, so a bond at 9 takes no tenth however much margin it shows.
            Absent when the rail said nothing; 0 is a live count.
          examples:
            - 2
          format: int64
          type: integer
        asOf:
          description: Instant the gateway observed this margin (UTC).
          examples:
            - '2026-07-30T12:00:00Z'
          format: date-time
          type: string
        availableMargin:
          description: Available consignable margin (decimal string, BRL). Never a float.
          examples:
            - '1234.56'
          type: string
        availableRemuneration:
          description: Disposable remuneration base (decimal string, BRL). Never a float.
          examples:
            - '5000.00'
          type: string
        blockType:
          $ref: '#/components/schemas/RailCodeDescription'
          description: >-
            The consignado block on this employment bond (Manual 002 v1.15
            §3.3.2 table p.18: 0 no block, 1 blocked by the worker, 2 blocked by
            the MTE). A blocked bond can show a POSITIVE margin and still take
            no consignado, so this is not derivable from availableMargin. Code 0
            is a live value.
        contractRef:
          description: The correlation reference the request supplied.
          examples:
            - req-1
          type: string
        eligible:
          description: >-
            The rail's own eligibility verdict for this worker. ABSENT when the
            read carried no verdict — which is NOT the same statement as false.
            Decode into a nullable boolean: collapsing absence into false
            recreates a refusal the rail never made.
          examples:
            - true
          type: boolean
        employer:
          $ref: '#/components/schemas/MarginEmployer'
          description: >-
            The employer's registration data as eSocial holds it (Manual 002
            v1.15 §3.3.2). Absent when the rail sent none of it. It carries no
            trade name and no legal nature: Dataprev publishes neither.
        employment:
          $ref: '#/components/schemas/MarginEmployment'
          description: >-
            The employment bond's registration data (Manual 002 v1.15 §3.3.2).
            Absent when the rail sent none of it.
        grossPay:
          description: >-
            The worker's gross pay for the period the margin was computed
            against (decimal string, BRL). The denominator the margin is a slice
            of. Absent when the rail did not publish it — never "0".
          examples:
            - '7000.00'
          type: string
        ineligibilityReason:
          $ref: '#/components/schemas/RailCodeDescription'
          description: >-
            WHY the rail refused (Manual 002 v1.15 §3.3.2 code table p.16: 1
            legacy loan in eSocial, 2 legacy loan reported by the institution, 3
            zero remuneration, 4 bond has a termination date, 5 no remuneration
            in the last competência, 6 invalid labour regime, 7 invalid worker
            category, 8 bond whose previous loan closed on termination, 9
            employer not in the programme). The codes are not one kind: 3 and 5
            clear with the next payroll competência, 4 never clears.
        severanceAvailablePercent:
          description: >-
            The share of severance pay available as collateral on this bond
            (Manual 002 v1.15 §3.3.2 p.17, NÚMERO(3,2)) — a PERCENT PER the
            manual, as an exact decimal string relayed verbatim and never
            converted. 40.00 means forty percent, not 0.40.
          examples:
            - '40.00'
          type: string
        terminationDate:
          description: >-
            The BOND's termination date (Manual 002 v1.15 §3.3.2 p.15). A bond
            with one has no future payroll for an instalment to be discounted
            from. Absent when the bond is not terminated.
          examples:
            - '2026-06-30T00:00:00Z'
          format: date-time
          type: string
        terminationReasonCode:
          description: >-
            The eSocial termination-reason code, relayed VERBATIM and never
            interpreted. Manual 002 v1.15 §3.3.2 p.15 types it "Número, 2
            algarismos" and points at the eSocial "Motivos de Desligamento"
            table rather than reproducing it; JSON has no leading-zero literal,
            so a code beginning with 0 arrives one digit short and travels that
            way. Zero-pad to the published width before looking it up.
          examples:
            - '2'
          type: string
        worker:
          $ref: '#/components/schemas/MarginWorker'
          description: >-
            The worker's registration data as Dataprev returns it on this read
            (Manual 002 v1.15 §3.3.2). Absent when the rail sent none of it.
      required:
        - availableMargin
        - availableRemuneration
        - asOf
      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_*, CESSAO_*, 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.
          enum:
            - AUT-0033
            - AUT-1021
            - 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
            - CESSAO_CEDED_TO_OTHER_FUND
            - CESSAO_CREDIT_NOT_ACCEPTED
            - CESSAO_CREDIT_NOT_FOUND
            - CESSAO_CREDIT_NOT_WITNESSED
            - CESSAO_CREDIT_PENDING
            - CESSAO_FUNDO_NOT_ATTRIBUTED
            - CESSAO_INTERNAL
            - CESSAO_INVALID_INPUT
            - CESSAO_UNAVAILABLE
            - CESSAO_UNWIRED
            - 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
            - 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
            - 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
            - MARGIN_SNAPSHOT_INCONSISTENT
            - 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_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
            - 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
          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
    MarginConsent:
      additionalProperties: false
      properties:
        canalAutorizacaoDigital:
          description: >-
            Digital channel the worker authorized through (1=ATM, 2=Agência,
            3=Web Cliente, 4=Web Correspondente, 5=Mobile). Published
            enumeration: Manual 002 v1.15 §3.1.1 p.9.
          enum:
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
          examples:
            - '5'
          type: string
        dataHoraAutorizacaoDigital:
          description: Instant the worker authorized (RFC 3339, UTC).
          examples:
            - '2026-07-30T12:00:00Z'
          format: date-time
          type: string
        nsuAutorizacaoDigital:
          description: >-
            Authorization Número Sequencial Único, up to 19 digits (Manual 002
            v1.15 §3.1.1 p.8: Número, 19 algarismos — a maximum, not an exact
            width). A STRING: 19 digits exceed a 64-bit integer.
          examples:
            - '1234567890123456789'
          pattern: ^[0-9]{1,19}$
          type: string
      required:
        - canalAutorizacaoDigital
        - dataHoraAutorizacaoDigital
        - nsuAutorizacaoDigital
      type: object
    RailCodeDescription:
      additionalProperties: false
      properties:
        code:
          description: The rail's code, relayed verbatim.
          examples:
            - 5
          format: int64
          type: integer
        description:
          description: The rail's own label for the code, relayed verbatim.
          examples:
            - Sem remuneração na última competência
          type: string
      required:
        - code
        - description
      type: object
    MarginEmployer:
      additionalProperties: false
      properties:
        activityStartDate:
          description: >-
            The employer's activity start date, YYYY-MM-DD, a calendar date
            (Manual 002 v1.15 §3.3.2 p.15, dataInicioAtividadeEmpregador).
            Absent when the rail sent nothing readable — never an empty string,
            a zero or a placeholder.
          examples:
            - '2013-04-01'
          format: date
          type: string
        cnae:
          $ref: '#/components/schemas/MarginTableCode'
          description: >-
            The employer's main activity, CNAE as a 7-digit string and the
            rail's label (Manual 002 v1.15 §3.3.2 p.14, cnae). Absent when the
            rail sent nothing readable — never an empty string, a zero or a
            placeholder.
        name:
          description: >-
            The employer's name as eSocial holds it — not necessarily the
            Receita's razão social (Manual 002 v1.15 §3.3.2 p.15,
            nomeEmpregador). Absent when the rail sent nothing readable — never
            an empty string, a zero or a placeholder.
          examples:
            - Vidraçaria Exemplo Ltda
          type: string
      type: object
    MarginEmployment:
      additionalProperties: false
      properties:
        admissionDate:
          description: >-
            Admission date, YYYY-MM-DD, a calendar date (Manual 002 v1.15 §3.3.2
            p.15, dataAdmissao). Absent when the rail sent nothing readable —
            never an empty string, a zero or a placeholder.
          examples:
            - '2024-06-10'
          format: date
          type: string
        cbo:
          $ref: '#/components/schemas/MarginTableCode'
          description: >-
            The occupation, CBO as a 6-digit string and the rail's label (Manual
            002 v1.15 §3.3.2 p.14, cbo). Absent when the rail sent nothing
            readable — never an empty string, a zero or a placeholder.
      type: object
    MarginWorker:
      additionalProperties: false
      properties:
        birthDate:
          description: >-
            Birth date, YYYY-MM-DD, a calendar date (Manual 002 v1.15 §3.3.2
            p.15, dataNascimento). Absent when the rail sent nothing readable —
            never an empty string, a zero or a placeholder.
          examples:
            - '1990-09-04'
          format: date
          type: string
        categoryCode:
          description: >-
            The eSocial worker-category code as a 3-digit string (Manual 002
            v1.15 §3.3.2 p.15, codigoCategoriaTrabalhador; the eSocial
            Categorias de Trabalhadores table). Absent when the rail sent
            nothing readable — never an empty string, a zero or a placeholder.
          examples:
            - '101'
          pattern: ^[0-9]{3}$
          type: string
        motherName:
          description: >-
            The worker's mother's name (Manual 002 v1.15 §3.3.2 p.15, nomeMae).
            Absent when the rail sent nothing readable — never an empty string,
            a zero or a placeholder.
          examples:
            - Beltrana de Tal
          type: string
        name:
          description: >-
            The worker's name (Manual 002 v1.15 §3.3.2 p.15, nome). Absent when
            the rail sent nothing readable — never an empty string, a zero or a
            placeholder.
          examples:
            - Fulano de Tal
          type: string
        nationality:
          $ref: '#/components/schemas/MarginTableCode'
          description: >-
            Nationality, ISO 3166-1 numeric as a 3-digit string ("076" is
            Brazil) and the rail's label (Manual 002 v1.15 §3.3.2 p.15,
            paisNacionalidade). Absent when the rail sent nothing readable —
            never an empty string, a zero or a placeholder.
        sex:
          $ref: '#/components/schemas/RailCodeDescription'
          description: >-
            The worker's sex, code and the rail's own label (Manual 002 v1.15
            §3.3.2 p.16 and table: 1 Masculino, 3 Feminino, 9 Não Informado).
            Absent when the rail sent nothing readable — never an empty string,
            a zero or a placeholder.
      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
    MarginTableCode:
      additionalProperties: false
      properties:
        code:
          description: The table code as a fixed-width digit string, leading zeros kept.
          examples:
            - '076'
          type: string
        description:
          description: >-
            The rail's own label for the code, relayed verbatim. Absent when the
            rail sent none.
          examples:
            - Brasil
          type: string
      required:
        - code
      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.