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

# Registrar uma correção em um contrato registrado

> Registra uma correção de algo que o cliente já afirmou sobre um contrato registrado e publica o fato que a nomeia.

Esta NÃO é uma operação da Dataprev: nenhuma credencial da rede é usada e nenhuma fronteira governamental é atravessada. O Manual 005 revisão 1.13 declara que os campos de retificação da rede não são mais usados e sempre retornam null, portanto o cliente é a única autoridade que uma correção pode ter — `source_authority` é sempre `client`.

NADA É ALTERADO. Uma correção é um acréscimo que nomeia o que ela substitui, e o registro que ela corrige permanece imutável no banco de dados exatamente como estava. Corrigir a mesma coisa duas vezes acrescenta uma segunda correção que substitui a primeira.

O gateway assume a custódia do recurso corrigido e calcula o SHA-256 dele por conta própria; um digest declarado pelo cliente nunca é aceito. O fato publicado carrega um caminho de mesma origem de volta a este gateway mais esse digest, e o consumidor o busca e o verifica por M2M autenticado.

| correction_type | payment_reference | supersedes |
|---|---|---|
| `ccb` | deve estar vazio | a correção de CCB anterior, ou nada na primeira |
| `disbursement` | obrigatório | o pagamento confirmado que ela repara, depois a correção anterior desse pagamento |

Uma correção de disbursement que nomeia um pagamento para o qual esta instalação não possui confirmação é recusada com 404: uma substituição que aponta para nada é pior do que nenhuma correção.

X-Idempotency é obrigatório, opaco, de 1..128 bytes, e nunca assume valor padrão. O PostgreSQL é a autoridade: a mesma chave repete o corpo 202 idêntico e não publica um segundo fato, e a mesma chave carregando uma correção diferente responde 422 sem nunca retornar o corpo anterior.



## OpenAPI

````yaml pt/openapi/v3-current/consignado.yaml post /v1/consignado/contracts/{numero_contrato}/corrections
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Superfície OpenAPI 3.1 para Lerian Consignado — Dataprev. o API cobre
    credenciais tenant e configuração de rede, margem do trabalhador, leilões e
    licitações de empréstimos, registro e ciclo de vida do contrato, confirmação
    de desembolso, portabilidade, refinanciamento, renegociação, garantias FGTS,
    reconciliação, fundos, atribuições, uso, rendimento e assinaturas de
    eventos. o material secreto é gravado no armazenamento secreto tenant e
    nunca é devolvido por nenhuma operação.
  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: >-
      Custódia de credenciais do Dataprev e configuração pública do rail por
      tenant (upload, status, rotação, revogação, código do solicitante e URL
      base do portal do trabalhador)
    name: Credentials
  - description: >-
      Uso do gateway consignado no escopo do tenant: agregação de unidades
      faturáveis ​​com preço por competência
    name: Consignado Usage
  - description: >-
      Per-tenant plano de controle de assinatura do streaming-hub (listar,
      criar, obter, girar, revogar e testar a entrega)
    name: Subscriptions
  - description: >-
      Superfície folha de pagamento da rail Dataprev: leituras de saldo e
      autorização FGTS, execução de garantias FGTS, suspensão de contrato,
      reativação e alteração de prazo, documentos contratuais próprios da rede e
      leituras sob demanda de transações, escriturações, repasses e rescisões
      trabalhistas
    name: Consignado Rail
  - description: >-
      Superfície de comando da rede síncrona: as operações que um bancarizador
      sem o credor realizam sobre HTTP. cada um compartilha sua implementação de
      comando com o gatilho de evento de credor equivalente.
    name: Consignado Rail Commands
  - description: >-
      Confirmação de desembolso de propriedade do gateway: um banco cliente
      registrando o dinheiro que ALREADY pagou a um trabalhador. ele não cruza
      nenhuma fronteira governamental e não representa nenhuma operação
      Dataprev.
    name: Consignado Disbursement
  - description: >
      Taxa de transferência da rail Dataprev de saída de autoatendimento
      per-tenant: leia e defina o próprio requests-per-second deste tenant,
      incluindo uma pausa deliberada em zero
    name: Consignado Throughput
paths:
  /v1/consignado/contracts/{numero_contrato}/corrections:
    post:
      tags:
        - Consignado Corrections
      summary: Registrar uma correção em um contrato registrado
      description: >-
        Registra uma correção de algo que o cliente já afirmou sobre um contrato
        registrado e publica o fato que a nomeia.


        Esta NÃO é uma operação da Dataprev: nenhuma credencial da rede é usada
        e nenhuma fronteira governamental é atravessada. O Manual 005 revisão
        1.13 declara que os campos de retificação da rede não são mais usados e
        sempre retornam null, portanto o cliente é a única autoridade que uma
        correção pode ter — `source_authority` é sempre `client`.


        NADA É ALTERADO. Uma correção é um acréscimo que nomeia o que ela
        substitui, e o registro que ela corrige permanece imutável no banco de
        dados exatamente como estava. Corrigir a mesma coisa duas vezes
        acrescenta uma segunda correção que substitui a primeira.


        O gateway assume a custódia do recurso corrigido e calcula o SHA-256
        dele por conta própria; um digest declarado pelo cliente nunca é aceito.
        O fato publicado carrega um caminho de mesma origem de volta a este
        gateway mais esse digest, e o consumidor o busca e o verifica por M2M
        autenticado.


        | correction_type | payment_reference | supersedes |

        |---|---|---|

        | `ccb` | deve estar vazio | a correção de CCB anterior, ou nada na
        primeira |

        | `disbursement` | obrigatório | o pagamento confirmado que ela repara,
        depois a correção anterior desse pagamento |


        Uma correção de disbursement que nomeia um pagamento para o qual esta
        instalação não possui confirmação é recusada com 404: uma substituição
        que aponta para nada é pior do que nenhuma correção.


        X-Idempotency é obrigatório, opaco, de 1..128 bytes, e nunca assume
        valor padrão. O PostgreSQL é a autoridade: a mesma chave repete o corpo
        202 idêntico e não publica um segundo fato, e a mesma chave carregando
        uma correção diferente responde 422 sem nunca retornar o corpo anterior.
      operationId: recordConsignadoContractCorrection
      parameters:
        - description: >-
            The rail contract number the correction is about. Exact,
            control-free UTF-8, bounded in BYTES: 2..15, which is the consumer's
            own bound for this field.
          in: path
          name: numero_contrato
          required: true
          schema:
            description: >-
              The rail contract number the correction is about. Exact,
              control-free UTF-8, bounded in BYTES: 2..15, which is the
              consumer's own bound for this field.
            examples:
              - 99999999999AN1
            maxLength: 15
            minLength: 2
            type: string
        - description: >-
            Mandatory opaque replay key, 1..128 bytes of valid UTF-8, preserved
            byte for byte. No default, no alias header, no case folding: two
            keys differing in one byte are two keys.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Mandatory opaque replay key, 1..128 bytes of valid UTF-8,
              preserved byte for byte. No default, no alias header, no case
              folding: two keys differing in one byte are two keys.
            examples:
              - idem-correcao-0001
            maxLength: 128
            minLength: 1
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractCorrectionRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractCorrectionResponse'
          description: >-
            The correction is durably recorded and its fact queued. A replay
            under the same key answers with the identical body.
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Authentication is required to access this resource.
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: You do not have permission to access this resource.
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            A disbursement correction named a payment reference this deployment
            holds no confirmation for.
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            Another correction already supersedes the same event. The chain is a
            list, not a tree: re-read the head and retry.
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The transport key, the contract number or the body is refused. A key
            that already bought a DIFFERENT correction lands here too, and the
            earlier body is never returned.
        '501':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: This deployment does not record contract corrections.
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Contract correction persistence is temporarily unavailable.
      security:
        - BearerAuth: []
components:
  schemas:
    ContractCorrectionRequest:
      additionalProperties: false
      properties:
        content_type:
          description: >-
            Media type of the corrected resource. Its media type must be
            application/pdf or application/zip — parameters are permitted — and
            the bytes are sniffed against it.
          examples:
            - application/pdf
          maxLength: 128
          type: string
        correction_type:
          description: >-
            What this correction corrects. Selects which fact is published; the
            payload shape is identical for both.
          enum:
            - ccb
            - disbursement
          examples:
            - ccb
          type: string
        file_name:
          description: Original file name of the corrected resource.
          examples:
            - ccb-corrigida.pdf
          maxLength: 255
          type: string
        payment_reference:
          description: >-
            The payment_reference of the confirmed disbursement this correction
            repairs. Required when correction_type is disbursement, and must be
            empty otherwise.
          examples:
            - E32074986202608011200A1B2C3D4E5F
          maxLength: 256
          type: string
        resource_base64:
          description: >-
            Canonical base64 of the corrected resource. The gateway computes the
            SHA-256 itself; no client-declared digest is accepted.
          examples:
            - JVBERi0xLjcKJSVFT0Y=
          maxLength: 8388608
          type: string
      required:
        - content_type
        - correction_type
        - file_name
        - payment_reference
        - resource_base64
      type: object
    ContractCorrectionResponse:
      additionalProperties: false
      properties:
        correction_id:
          description: >-
            The gateway's identity for this correction. It is also the published
            event id.
          examples:
            - 1f5b9c26-6f5a-4f77-9c1c-5d1c0f0a9b21
          type: string
        correction_type:
          description: What was corrected.
          examples:
            - ccb
          type: string
        gateway_received_at:
          description: When the gateway took custody, strict RFC 3339 UTC.
          examples:
            - '2026-08-29T12:00:05Z'
          type: string
        numero_contrato:
          description: The rail contract number, echoed from the path.
          examples:
            - 99999999999AN1
          type: string
        resource_digest_sha256:
          description: Lowercase hex SHA-256 the gateway computed over the corrected bytes.
          examples:
            - e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
          type: string
        resource_uri:
          description: >-
            Same-origin relative path serving the corrected resource under M2M
            bearer auth.
          examples:
            - >-
              /v1/consignado/contracts/99999999999AN1/corrections/1f5b9c26-6f5a-4f77-9c1c-5d1c0f0a9b21
          type: string
        source_authority:
          description: >-
            Who is authoritative for the corrected value. Always client on this
            gateway.
          examples:
            - client
          type: string
        supersedes_event_id:
          description: >-
            The event id this correction supersedes: the corrected disbursement
            confirmation, or the previous correction. ABSENT on a first CCB
            correction, meaning the original contract fact.
          examples:
            - 7c2a1b40-11f4-4a1e-9a44-1f4d7cbb8e02
          type: string
      required:
        - correction_id
        - numero_contrato
        - correction_type
        - source_authority
        - resource_uri
        - resource_digest_sha256
        - gateway_received_at
      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
    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

````