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

# Recuperar el margen consignable disponible de un trabajador

> Abre o reutiliza la autorización del trabajador y lee el margen de nómina disponible: autorizar-consulta-dados-trabalhador (Manual 002 v1.15 §3.1) y consultar-dados-trabalhador (Manual 002 v1.15 §3.3) de la red detrás de la operación una, porque el adaptador los realiza como uno solo. POST, no GET: abre un consentimiento, y la evidencia del consentimiento más CPF debe viajar en un cuerpo en lugar de en una ruta o cadena de consulta. Se devuelve el token de autorización del trabajador nunca. Se emite un hecho consignado.margin.fetched en esta ruta exactamente igual que en la ruta del evento del prestamista, por lo que un cliente que se integra mediante API mantiene alimentados a sus otros consumidores.

VENTANA DE CONSENTIMIENTO (Manual 002 v1.15 §5.6). DataHoraAutorizacaoDigital pone en marcha dos relojes, medidos en días calendario a partir de la firma del trabajador: la autorización puede ser CONSULTADA por 30 días, y una solicitud puede ser PRESENTADA en su contra por 45. Ambos límites son inclusivos: el instante exactamente 30 o 45 días después de que la firma todavía está dentro de su ventana, y solo el siguiente nanosegundo está afuera.

fuera de cualquiera de las ventanas, la gateway rechaza localmente, antes de que un byte llegue a la red: 422 con el código MYS-0006 y un detalle que le indica que obtenga una nueva autorización de trabajador. Esa negativa es no REINTENTABLE. Al repetir la solicitud se realiza la misma lectura de la autorización caducada y retirada; sólo nueva evidencia de autorización hace que tenga éxito. Un dataHoraAutorizacaoDigital que lleva un desplazamiento que no es UTC, o que tiene una fecha anterior al reloj de la gateway, es el mismo 422 con un detalle diferente: corrija la marca de tiempo; el consentimiento del trabajador no está en duda.

compare el rechazo de consentimiento propio de la red (Dataprev ex/iv en un tokenAutorizacao obsoleto): es 503 y se puede volver a intentar, porque la gateway descarta el token almacenado en caché y el siguiente intento abre un nuevo consentimiento a partir de la misma evidencia.



## OpenAPI

````yaml es/openapi/v3-current/consignado.yaml post /v1/consignado/workers/margin
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Superficie OpenAPI 3.1 para Lerian Consignado — Dataprev. API cubre las
    credenciales y la configuración de red de tenant, el margen de los
    trabajadores, las subastas y ofertas de préstamos, el registro y el ciclo de
    vida de los contratos, la confirmación de desembolsos, la portabilidad, la
    refinanciación, la renegociación, las garantías de FGTS, la conciliación,
    los fondos, las asignaciones, el uso, el rendimiento y las suscripciones a
    eventos. El material secreto se escribe en el almacén secreto tenant y
    ninguna operación lo devuelve nunca.
  license:
    name: Lerian Studio General License
  title: Lerian Consignado API
  version: v1.0.0
servers:
  - url: https://consignado.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Custodia de credenciales de Dataprev y configuración pública del rail por
      tenant (carga, estado, rotación, revocación, código del solicitante y URL
      base del portal del trabajador)
    name: Credentials
  - description: >-
      Uso de la gateway del consignado en el ámbito del tenant: agregación de
      unidades facturables con precio por competencia
    name: Consignado Usage
  - description: >-
      Plano de control de suscripción al hub de streaming per-tenant (enumerar,
      crear, obtener, rotar, revocar y probar la entrega)
    name: Subscriptions
  - description: >-
      Superficie de rail de nómina Dataprev: lecturas de saldo y autorización
      FGTS, ejecución de garantía FGTS, suspensión de contrato, reactivación y
      cambios de términos, documentos de contrato propios de la red y lecturas
      bajo demanda de leilão solicitações, escriturações, repasses y
      terminaciones de empleo.
    name: Consignado Rail
  - description: >-
      Superficie de comando de red síncrona: las operaciones de un bancarizador
      sin que el prestamista conduzca sobre HTTP. Cada uno comparte su
      implementación de comando con el activador de evento de prestamista
      equivalente.
    name: Consignado Rail Commands
  - description: >-
      Confirmación de desembolso propiedad de la gateway: un banco cliente que
      registra el dinero que ya pagó a un trabajador. No cruza ninguna frontera
      gubernamental y no representa ninguna operación Dataprev.
    name: Consignado Disbursement
  - description: >
      Rendimiento de red Dataprev saliente de autoservicio per-tenant: lea y
      configure el requests-per-second propio de este tenant, incluida una pausa
      deliberada en cero
    name: Consignado Throughput
paths:
  /v1/consignado/workers/margin:
    post:
      tags:
        - Consignado Rail Commands
      summary: Recuperar el margen consignable disponible de un trabajador
      description: >-
        Abre o reutiliza la autorización del trabajador y lee el margen de
        nómina disponible: autorizar-consulta-dados-trabalhador (Manual 002
        v1.15 §3.1) y consultar-dados-trabalhador (Manual 002 v1.15 §3.3) de la
        red detrás de la operación una, porque el adaptador los realiza como uno
        solo. POST, no GET: abre un consentimiento, y la evidencia del
        consentimiento más CPF debe viajar en un cuerpo en lugar de en una ruta
        o cadena de consulta. Se devuelve el token de autorización del
        trabajador nunca. Se emite un hecho consignado.margin.fetched en esta
        ruta exactamente igual que en la ruta del evento del prestamista, por lo
        que un cliente que se integra mediante API mantiene alimentados a sus
        otros consumidores.


        VENTANA DE CONSENTIMIENTO (Manual 002 v1.15 §5.6).
        DataHoraAutorizacaoDigital pone en marcha dos relojes, medidos en días
        calendario a partir de la firma del trabajador: la autorización puede
        ser CONSULTADA por 30 días, y una solicitud puede ser PRESENTADA en su
        contra por 45. Ambos límites son inclusivos: el instante exactamente 30
        o 45 días después de que la firma todavía está dentro de su ventana, y
        solo el siguiente nanosegundo está afuera.


        fuera de cualquiera de las ventanas, la gateway rechaza localmente,
        antes de que un byte llegue a la red: 422 con el código MYS-0006 y un
        detalle que le indica que obtenga una nueva autorización de trabajador.
        Esa negativa es no REINTENTABLE. Al repetir la solicitud se realiza la
        misma lectura de la autorización caducada y retirada; sólo nueva
        evidencia de autorización hace que tenga éxito. Un
        dataHoraAutorizacaoDigital que lleva un desplazamiento que no es UTC, o
        que tiene una fecha anterior al reloj de la gateway, es el mismo 422 con
        un detalle diferente: corrija la marca de tiempo; el consentimiento del
        trabajador no está en duda.


        compare el rechazo de consentimiento propio de la red (Dataprev ex/iv en
        un tokenAutorizacao obsoleto): es 503 y se puede volver a intentar,
        porque la gateway descarta el token almacenado en caché y el siguiente
        intento abre un nuevo consentimiento a partir de la misma evidencia.
      operationId: fetchConsignadoWorkerMargin
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarginRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MarginResponse'
          description: OK
        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 leaks into
            access logs and spans.
          examples:
            - '12345678901'
          pattern: ^[0-9]{11}$
          type: string
        matricula:
          description: Employment bond matrícula.
          examples:
            - M-1
          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
        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
      required:
        - availableMargin
        - availableRemuneration
        - asOf
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    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
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````