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

# List what each averbado contract of this tenant still owes

> Walks the tenant's saldo devedor obligation book, lowest contract number first: what each averbado contract still owes, as this gateway itself reports it to the payroll rail under M015.

'valor_saldo_devedor' is DERIVED on every read and never stored: the present value, at today's Brasília date, of every instalment still ahead whose competência has not amortized (an antecipação need not be the next one), discounted at the contract's own monthly rate as valor_parcela / (1 + taxa_mensal)^(days/30) and assuming on-time payment. It is published BESIDE 'valor_parcela', 'numero_parcelas', 'parcelas_pagas', 'taxa_mensal' and 'data_primeiro_desconto' precisely so a client can redo the discounting and see the same figure the rail is given on a send that day. 'valor_parcela' is republished byte for byte as the schedule stores it and is never re-scaled, because a reformatted number would make the screen and the rail report two spellings of one amount.

'quitado' is likewise derived: every instalment amortized (parcelas_pagas >= numero_parcelas), or an accepted refinanciamento or origin-side portability exclusion that no reversal undid settled the contract, or the M005 follow-up observed its exclusion by refinanciamento or portabilidade at Dataprev, and the rail then gets one final 0.00. It is not a stored flag, because two owners of that fact would disagree.

'vigente' is derived by the predicate the M015 clock reads: false once the contract left the registry (a confirmed or portability exclusion, a refinanciamento or renegociação that replaced it and no reversal undid, a reversed refinanciamento of its own, an exit other than situação 15 the M005 follow-up observed, or an exclusion's M005 read). A contract in situação 15 (término de vínculo) stays vigente: its debt stands (Manual 017 v1.5 §2.1). This gateway then stops reporting it, so 'valor_saldo_devedor' is no longer the figure the rail is given.

Filter with 'quitado=true' for the settled obligations or 'quitado=false' for the ones not settled, vigente or not: read 'vigente' to tell an open obligation from a contract that left. OMITTING the parameter is the whole book, which is what an operator arriving with no filter is asking for, and it is the only way to see a settled obligation at all: the table's own index deliberately excludes them, and they are exactly the rows a client reconciling a finished contract comes to check.

'proximo_marco' is always null. 'ultimo_envio_at' is null until this gateway has reported the obligation at least once, and it travels as null rather than as the zero instant.

The worker's CPF is deliberately absent from every row. It is on the table only because M015 resends it on each report, and this screen answers its question without it.

Paging is keyset over the contract number, which is half the table's own primary key, so the page costs an index walk and no sort. Send the previous page's page.next_after as after. has_more is true exactly when another page exists, and next_after is null exactly when it is false, so a client loop may terminate on either. The cursor never expires; a cursor this service did not mint is refused with 422 rather than silently restarting the walk from the top.

It answers from a LOCAL table and never reaches the Dataprev rail, so it cannot answer 501 and it is served on a deployment with the rail off entirely. The tenant is derived from the validated identity and is never read from the request.



## OpenAPI

````yaml /pt/openapi/v3-current/consignado.yaml get /v1/consignado/saldo-devedor
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/saldo-devedor:
    get:
      tags:
        - Consignado Saldo Devedor
      summary: List what each averbado contract of this tenant still owes
      description: >-
        Walks the tenant's saldo devedor obligation book, lowest contract number
        first: what each averbado contract still owes, as this gateway itself
        reports it to the payroll rail under M015.


        'valor_saldo_devedor' is DERIVED on every read and never stored: the
        present value, at today's Brasília date, of every instalment still ahead
        whose competência has not amortized (an antecipação need not be the next
        one), discounted at the contract's own monthly rate as valor_parcela /
        (1 + taxa_mensal)^(days/30) and assuming on-time payment. It is
        published BESIDE 'valor_parcela', 'numero_parcelas', 'parcelas_pagas',
        'taxa_mensal' and 'data_primeiro_desconto' precisely so a client can
        redo the discounting and see the same figure the rail is given on a send
        that day. 'valor_parcela' is republished byte for byte as the schedule
        stores it and is never re-scaled, because a reformatted number would
        make the screen and the rail report two spellings of one amount.


        'quitado' is likewise derived: every instalment amortized
        (parcelas_pagas >= numero_parcelas), or an accepted refinanciamento or
        origin-side portability exclusion that no reversal undid settled the
        contract, or the M005 follow-up observed its exclusion by
        refinanciamento or portabilidade at Dataprev, and the rail then gets one
        final 0.00. It is not a stored flag, because two owners of that fact
        would disagree.


        'vigente' is derived by the predicate the M015 clock reads: false once
        the contract left the registry (a confirmed or portability exclusion, a
        refinanciamento or renegociação that replaced it and no reversal undid,
        a reversed refinanciamento of its own, an exit other than situação 15
        the M005 follow-up observed, or an exclusion's M005 read). A contract in
        situação 15 (término de vínculo) stays vigente: its debt stands (Manual
        017 v1.5 §2.1). This gateway then stops reporting it, so
        'valor_saldo_devedor' is no longer the figure the rail is given.


        Filter with 'quitado=true' for the settled obligations or
        'quitado=false' for the ones not settled, vigente or not: read 'vigente'
        to tell an open obligation from a contract that left. OMITTING the
        parameter is the whole book, which is what an operator arriving with no
        filter is asking for, and it is the only way to see a settled obligation
        at all: the table's own index deliberately excludes them, and they are
        exactly the rows a client reconciling a finished contract comes to
        check.


        'proximo_marco' is always null. 'ultimo_envio_at' is null until this
        gateway has reported the obligation at least once, and it travels as
        null rather than as the zero instant.


        The worker's CPF is deliberately absent from every row. It is on the
        table only because M015 resends it on each report, and this screen
        answers its question without it.


        Paging is keyset over the contract number, which is half the table's own
        primary key, so the page costs an index walk and no sort. Send the
        previous page's page.next_after as after. has_more is true exactly when
        another page exists, and next_after is null exactly when it is false, so
        a client loop may terminate on either. The cursor never expires; a
        cursor this service did not mint is refused with 422 rather than
        silently restarting the walk from the top.


        It answers from a LOCAL table and never reaches the Dataprev rail, so it
        cannot answer 501 and it is served on a deployment with the rail off
        entirely. The tenant is derived from the validated identity and is never
        read from the request.
      operationId: listConsignadoSaldoDevedorObrigacoes
      parameters:
        - description: >-
            Narrows the page to settled obligations (true) or to the ones not
            settled (false), vigente or not. Omitted means the whole book, which
            is never the same as either half.
          explode: false
          in: query
          name: quitado
          schema:
            description: >-
              Narrows the page to settled obligations (true) or to the ones not
              settled (false), vigente or not. Omitted means the whole book,
              which is never the same as either half.
            enum:
              - 'true'
              - 'false'
            examples:
              - 'false'
            type: string
        - description: >-
            The previous page's page.next_after. Omitted starts at the lowest
            contract number. A cursor this service did not mint is refused,
            never restarted from the top.
          explode: false
          in: query
          name: after
          schema:
            description: >-
              The previous page's page.next_after. Omitted starts at the lowest
              contract number. A cursor this service did not mint is refused,
              never restarted from the top.
            examples:
              - >-
                eyJ2IjoxLCJyIjoiYm9hcmQiLCJ0IjoiMjAyNi0wOC0xNFQwOToxMjozM1oiLCJrIjpbImMwMDEyIl19
            type: string
        - description: >-
            Maximum number of obligations to return. Omitted means the ceiling
            of 200.
          explode: false
          in: query
          name: limit
          schema:
            description: >-
              Maximum number of obligations to return. Omitted means the ceiling
              of 200.
            examples:
              - 50
            format: int64
            maximum: 200
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaldoDevedorPage'
          description: OK
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '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
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
      security:
        - BearerAuth: []
components:
  schemas:
    SaldoDevedorPage:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/SaldoDevedorItem'
          type: array
        page:
          $ref: '#/components/schemas/KeysetPageMetadata'
      required:
        - items
        - page
      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
    SaldoDevedorItem:
      additionalProperties: false
      properties:
        codigo_inscricao_empregador:
          description: 'Which register the employer identifier belongs to: 1 CNPJ, 2 CPF.'
          examples:
            - '1'
          type: string
        competencia_inicio_desconto:
          description: Payroll competencia the deductions start in, yyyyMM.
          examples:
            - '202601'
          type: string
        data_primeiro_desconto:
          description: >-
            The first payroll deduction date every instalment's due date is
            counted from, RFC 3339 UTC midnight.
          examples:
            - '2026-01-20T00:00:00Z'
          format: date-time
          type: string
        matricula:
          description: The worker's payroll registration with the employer.
          examples:
            - MATCEN716
          type: string
        numero_contrato:
          description: The rail contract number this obligation belongs to.
          examples:
            - 99999999999AN1
          type: string
        numero_inscricao_empregador:
          description: >-
            The employer identifier itself, as reported to Dataprev: text of up
            to 14 characters.
          examples:
            - '42422253000101'
          type: string
        numero_parcelas:
          description: >-
            How many instalments the cronograma holds from
            competencia_inicio_desconto: the ones E0 minted, or as an accepted
            alteração (M003 §3.2) set them.
          examples:
            - 12
          format: int64
          type: integer
        origem:
          description: >-
            Who averbou the contract: "gateway" if this gateway did (or
            renegotiated a legado one), "importado" if it was averbado elsewhere
            and adopted from the rail afterwards.
          enum:
            - gateway
            - importado
          examples:
            - gateway
          type: string
        parcelas_pagas:
          description: How many competencias have amortized so far.
          examples:
            - 3
          format: int64
          type: integer
        proximo_marco:
          description: The next scheduled-report marker, in UTC. Always null.
          examples:
            - null
          format: date-time
          type:
            - string
            - 'null'
        quitado:
          description: >-
            Whether the obligation is settled: every instalment amortized
            (parcelas_pagas against numero_parcelas), or an accepted
            refinanciamento or origin-side portability exclusion that no
            reversal undid, or an exclusion by refinanciamento or portabilidade
            the M005 follow-up observed at Dataprev. Derived, never a stored
            flag.
          examples:
            - false
          type: boolean
        taxa_mensal:
          description: >-
            The contract's monthly rate (valorTaxaMensal) the balance is
            discounted at, as a PERCENT-per-month decimal string: "1.80" is 1.80
            %/month.
          examples:
            - '1.80'
          type: string
        ultimo_envio_at:
          description: >-
            When this gateway last reported this obligation to the rail, in UTC.
            Null means nothing has been sent yet.
          examples:
            - '2026-08-14T09:12:33Z'
          format: date-time
          type:
            - string
            - 'null'
        valor_parcela:
          description: >-
            The instalment as the schedule stores it, republished verbatim as a
            BRL decimal string.
          examples:
            - '1116.31'
          type: string
        valor_saldo_devedor:
          description: >-
            The balance this gateway reports under M015 while vigente is true;
            once it is false, only a first report never accepted or a final 0.00
            still goes out: at today's Brasília date, the present value of every
            instalment still ahead whose competência has not amortized, each
            valor_parcela (its valores_parcela value once an alteração was
            accepted) / (1 + taxa_mensal)^(days/30), due on
            data_primeiro_desconto's day of month k months on, assuming on-time
            payment. "0.00" once the obligation is quitada.
          examples:
            - '10046.79'
          type: string
        valores_parcela:
          additionalProperties:
            type: string
          description: >-
            The instalment from each competencia key (yyyyMM) on, the
            averbação's included, once an accepted alteração (M003 §3.2) changed
            it; the latest equals valor_parcela. Absent while no alteração was
            accepted.
          examples:
            - '202509': '100.00'
              '202511': '101.00'
          type: object
        vigente:
          description: >-
            Whether the contract is still on the registry, so this gateway keeps
            reporting it under M015. False once it left: a confirmed exclusion,
            an accepted portability exclusion, a refinanciamento or renegociação
            that replaced it and no reversal undid, a refinanciamento of its own
            that was reversed, an exit other than situação 15 the M005 follow-up
            observed, or an exclusion's M005 read. Situação 15 (término de
            vínculo) keeps it true: its debt stands (Manual 017 v1.5 §2.1). A
            settled contract can still read true until it leaves. Derived, never
            a stored flag.
          examples:
            - true
          type: boolean
      required:
        - numero_contrato
        - matricula
        - codigo_inscricao_empregador
        - numero_inscricao_empregador
        - numero_parcelas
        - parcelas_pagas
        - valor_parcela
        - valor_saldo_devedor
        - taxa_mensal
        - data_primeiro_desconto
        - competencia_inicio_desconto
        - origem
        - ultimo_envio_at
        - proximo_marco
        - quitado
        - vigente
      type: object
    KeysetPageMetadata:
      additionalProperties: false
      properties:
        after:
          description: >-
            The cursor this page resumed from, echoed back. Null when the read
            started at the beginning.
          examples:
            - >-
              eyJ2IjoxLCJyIjoiYm9hcmQiLCJ0IjoiMjAyNi0wOC0xNFQwOToxMjozM1oiLCJrIjpbImMwMDEyIl19
          type:
            - string
            - 'null'
        has_more:
          description: Whether at least one further page exists.
          examples:
            - true
          type: boolean
        next_after:
          description: >-
            The cursor for the page after this one. Null exactly when has_more
            is false.
          examples:
            - >-
              eyJ2IjoxLCJyIjoiYm9hcmQiLCJ0IjoiMjAyNi0wOC0xNFQwOTowNzo1MVoiLCJrIjpbImMwMDM3Il19
          type:
            - string
            - 'null'
      required:
        - after
        - next_after
        - has_more
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.