> ## 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 the repasse transfers the rail still owes this tenant

> Walks the tenant's own repasse expectation book: the escriturated instalments whose transfer the rail still owes, oldest deadline first, undated promises last.

READ THE FRESHNESS STAMP BEFORE THE ROWS. An empty list under a state other than fresh DOES NOT MEAN nothing is missing. When the reconciliation pass cannot seed the tenant database it returns before the D+2 detector runs, publishing neither an alarm nor the "I do not know" fact, so that outage class is indistinguishable from health unless the stamp is read. state is fresh, stale or never; never covers a deployment that never composed reconciliation, a cold-started process, a deployment whose rail credentials never worked, and every tenant that is not the pass's one canonical tenant.

freshness.observed_replica is the opaque tag of the ONE PROCESS that answered this request. The clean-read clock is process memory, per replica, so two reads may disagree by design; the tag exists so an operator can see that they came from two processes. It is never a hostname and never a pod name.

It answers from the LOCAL BOOK and never reaches the Dataprev rail, so it cannot answer 501 and it is served on a deployment with no reconciliation composed at all - that deployment answers 200 with an empty book, an empty scope census and state never.

scopes censuses the OPEN promises by employer scope. A scope with in_scope false is an ORPHAN: promises written under an employer scope this deployment no longer reconciles, whose repasse now arrives under a different key and closes nothing, so they alarm forever for money already in the bank. An empty cnpj is a legal scope and is the rail-wide read's own name, never a missing value.

scopes IS ANSWERED ON THE FIRST PAGE ONLY and is null on every page requested with a non-blank after. A blank or whitespace-only after is a first-page request and is censused like an omitted one. The census is unfiltered and unpaged by design, so it describes the whole book rather than the page and is asked once per scan. Read it from the first page. null means it was not asked on this page; an empty list is the different, stated fact that no employer scope holds an open promise. freshness, by contrast, travels on every page.

There is deliberately NO time window. The rail's own reads carry one because the rail demands it; imposing one here would hide exactly the old promise nobody ever closed, which is what this board exists to show.

Paging is keyset over (due_at nulls last, competencia, numero_contrato, cnpj), EXACTLY the order the D+2 alarm walks, so the board and the alarm can never disagree about which deadline is next. 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. The cursor never expires; a cursor this service did not mint is refused with 422 rather than silently restarting the scan from the top.

situation may be repeated to narrow the page to several situations at once (situation=open&situation=overdue). Omitting it means ALL FOUR, never none. undated is a promise whose deadline was not computable, which is a durable STATE and not missing data: nothing ever back-fills it, so it can never become overdue.



## OpenAPI

````yaml /en/openapi/v3-current/consignado.yaml get /v1/consignado/reconciliation/repasse-expectations
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for Lerian Consignado — Dataprev. The API covers tenant
    credentials and rail configuration, worker margin, loan auctions and bids,
    contract registration and lifecycle, disbursement confirmation, portability,
    refinancing, renegotiation, FGTS guarantees, reconciliation, funds,
    assignments, usage, throughput, and event subscriptions. Secret material is
    written to the tenant secret store and is never returned by any operation.
  license:
    name: Lerian Studio General License
  title: Lerian Consignado API
  version: v1.0.0
servers:
  - url: https://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: >-
      Tenant-scoped consignado gateway usage: priced billable-unit aggregation
      per competência
    name: Consignado Usage
  - description: >-
      Per-tenant streaming-hub subscription control-plane (list, create, get,
      rotate, revoke, and test delivery)
    name: Subscriptions
  - description: >-
      Dataprev payroll-rail surface: FGTS balance and authorization reads, the
      FGTS guarantee execution, contract suspension, reactivation and term
      changes, the rail's own contract documents, and the on-demand reads of
      leilão solicitações, escriturações, repasses and employment terminations
    name: Consignado Rail
  - description: >-
      Synchronous rail command surface: the operations a bancarizador without
      the lender drives over HTTP. Each shares its command implementation with
      the equivalent lender event trigger.
    name: Consignado Rail Commands
  - description: >-
      Gateway-owned disbursement confirmation: a client bank recording money it
      has ALREADY paid to a worker. It crosses no government boundary and
      proxies no Dataprev operation.
    name: Consignado Disbursement
  - description: >-
      Per-tenant self-service outbound Dataprev rail throughput: read and set
      this tenant's own requests-per-second, including a deliberate pause at
      zero
    name: Consignado Throughput
paths:
  /v1/consignado/reconciliation/repasse-expectations:
    get:
      tags:
        - Consignado Repasse Board
      summary: List the repasse transfers the rail still owes this tenant
      description: >-
        Walks the tenant's own repasse expectation book: the escriturated
        instalments whose transfer the rail still owes, oldest deadline first,
        undated promises last.


        READ THE FRESHNESS STAMP BEFORE THE ROWS. An empty list under a state
        other than fresh DOES NOT MEAN nothing is missing. When the
        reconciliation pass cannot seed the tenant database it returns before
        the D+2 detector runs, publishing neither an alarm nor the "I do not
        know" fact, so that outage class is indistinguishable from health unless
        the stamp is read. state is fresh, stale or never; never covers a
        deployment that never composed reconciliation, a cold-started process, a
        deployment whose rail credentials never worked, and every tenant that is
        not the pass's one canonical tenant.


        freshness.observed_replica is the opaque tag of the ONE PROCESS that
        answered this request. The clean-read clock is process memory, per
        replica, so two reads may disagree by design; the tag exists so an
        operator can see that they came from two processes. It is never a
        hostname and never a pod name.


        It answers from the LOCAL BOOK and never reaches the Dataprev rail, so
        it cannot answer 501 and it is served on a deployment with no
        reconciliation composed at all - that deployment answers 200 with an
        empty book, an empty scope census and state never.


        scopes censuses the OPEN promises by employer scope. A scope with
        in_scope false is an ORPHAN: promises written under an employer scope
        this deployment no longer reconciles, whose repasse now arrives under a
        different key and closes nothing, so they alarm forever for money
        already in the bank. An empty cnpj is a legal scope and is the rail-wide
        read's own name, never a missing value.


        scopes IS ANSWERED ON THE FIRST PAGE ONLY and is null on every page
        requested with a non-blank after. A blank or whitespace-only after is a
        first-page request and is censused like an omitted one. The census is
        unfiltered and unpaged by design, so it describes the whole book rather
        than the page and is asked once per scan. Read it from the first page.
        null means it was not asked on this page; an empty list is the
        different, stated fact that no employer scope holds an open promise.
        freshness, by contrast, travels on every page.


        There is deliberately NO time window. The rail's own reads carry one
        because the rail demands it; imposing one here would hide exactly the
        old promise nobody ever closed, which is what this board exists to show.


        Paging is keyset over (due_at nulls last, competencia, numero_contrato,
        cnpj), EXACTLY the order the D+2 alarm walks, so the board and the alarm
        can never disagree about which deadline is next. 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. The cursor
        never expires; a cursor this service did not mint is refused with 422
        rather than silently restarting the scan from the top.


        situation may be repeated to narrow the page to several situations at
        once (situation=open&situation=overdue). Omitting it means ALL FOUR,
        never none. undated is a promise whose deadline was not computable,
        which is a durable STATE and not missing data: nothing ever back-fills
        it, so it can never become overdue.
      operationId: listConsignadoRepasseExpectations
      parameters:
        - description: >-
            Narrows the page to the named situations. Repeat the parameter for
            several. Omitted means all four.
          explode: true
          in: query
          name: situation
          schema:
            description: >-
              Narrows the page to the named situations. Repeat the parameter for
              several. Omitted means all four.
            items:
              enum:
                - open
                - overdue
                - undated
                - settled
              type: string
            type: array
        - description: >-
            The previous page's page.next_after. Omitted starts at the oldest
            deadline. 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 oldest
              deadline. A cursor this service did not mint is refused, never
              restarted from the top.
            type: string
        - description: >-
            Maximum number of expectations to return. Omitted means the ceiling
            of 200.
          explode: false
          in: query
          name: limit
          schema:
            description: >-
              Maximum number of expectations to return. Omitted means the
              ceiling of 200.
            format: int64
            maximum: 200
            minimum: 1
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RepasseExpectationsPage'
          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
      security:
        - BearerAuth: []
components:
  schemas:
    RepasseExpectationsPage:
      additionalProperties: false
      properties:
        freshness:
          $ref: '#/components/schemas/RepasseFreshness'
        items:
          items:
            $ref: '#/components/schemas/RepasseExpectationItem'
          type: array
        page:
          $ref: '#/components/schemas/KeysetPageMetadata'
        scopes:
          items:
            $ref: '#/components/schemas/RepasseScopeCount'
          type:
            - array
            - 'null'
      required:
        - items
        - page
        - freshness
        - scopes
      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
    RepasseFreshness:
      additionalProperties: false
      properties:
        last_clean_read_at:
          format: date-time
          type:
            - string
            - 'null'
        observed_replica:
          type: string
        stale_after_seconds:
          format: int64
          type: integer
        state:
          description: How much this board's own absence of rows can be trusted.
          enum:
            - fresh
            - stale
            - never
          type: string
      required:
        - last_clean_read_at
        - stale_after_seconds
        - state
        - observed_replica
      type: object
    RepasseExpectationItem:
      additionalProperties: false
      properties:
        cnpj:
          type: string
        competencia:
          type: string
        due_at:
          format: date-time
          type:
            - string
            - 'null'
        guia_paid_at:
          format: date-time
          type:
            - string
            - 'null'
        in_scope:
          type: boolean
        numero_contrato:
          type: string
        observed_at:
          format: date-time
          type: string
        repasse_paid_at:
          format: date-time
          type:
            - string
            - 'null'
        resolution_pending:
          type: boolean
        settled_at:
          format: date-time
          type:
            - string
            - 'null'
        settled_by_registro:
          type:
            - string
            - 'null'
        situation:
          description: The state this expectation is in, derived once by the server.
          enum:
            - open
            - overdue
            - undated
            - settled
          type: string
      required:
        - cnpj
        - numero_contrato
        - competencia
        - due_at
        - observed_at
        - settled_at
        - repasse_paid_at
        - guia_paid_at
        - settled_by_registro
        - resolution_pending
        - situation
        - in_scope
      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
    RepasseScopeCount:
      additionalProperties: false
      properties:
        cnpj:
          type: string
        in_scope:
          type: boolean
        open_count:
          format: int64
          type: integer
      required:
        - cnpj
        - open_count
        - in_scope
      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

````