> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nlbs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Regenerar parágrafos do relatório produzidos por agente

> Reexecuta de forma síncrona a etapa do agente que produziu parágrafos específicos de um relatório concluído, sem reexecutar o workflow inteiro, e devolve o relatório completo atualizado. Somente parágrafos produzidos por agente são regeneráveis (hoje: 'enquadramento_suggestion', 'legal_basis', 'coaf_communication_draft'); seções determinísticas são rejeitadas. A validação é tudo-ou-nada: qualquer parágrafo inválido rejeita a requisição inteira e nada é regenerado. Somente os parágrafos pedidos são substituídos no resultado persistido; as demais seções e os artefatos XML/PDF gerados são mantidos como produzidos originalmente.



## OpenAPI

````yaml https://api.nlbs.ai/api/openapi.json post /reports/{report_uuid}/paragraphs/regenerate
openapi: 3.1.0
info:
  description: >-
    API de AML da NL Labs AI. Use apikeys Bearer para os endpoints protegidos.
    As sondas /live e /ready são públicas.
  title: NL Labs AI
  version: 0.1.0
servers:
  - url: https://api.nlbs.ai/api
security:
  - ApiKeyAuth: []
tags:
  - description: >-
      Endpoints de verificação de saúde em tempo de execução e atualização das
      fontes.
    name: health
  - description: >-
      Endpoints de busca de entidades canônicas usados antes de iniciar
      análises.
    name: entities
  - description: >-
      Endpoints de criação, consulta e sub-recursos (grafo, sinais, eventos,
      explicação, snapshot) de análises de AML.
    name: analyses
  - description: >-
      Endpoints de criação, consulta e regeneração de parágrafos de relatórios
      regulatórios (Motor 2).
    name: reports
  - description: Endpoints do catálogo versionado de regras determinísticas.
    name: rules
  - description: Endpoints do catálogo versionado de referências regulatórias.
    name: regulatory
  - description: Operações de configuração de endpoints de webhook e eventos de entrega.
    name: webhooks
paths:
  /reports/{report_uuid}/paragraphs/regenerate:
    post:
      tags:
        - reports
      summary: Regenerar parágrafos do relatório produzidos por agente
      description: >-
        Reexecuta de forma síncrona a etapa do agente que produziu parágrafos
        específicos de um relatório concluído, sem reexecutar o workflow
        inteiro, e devolve o relatório completo atualizado. Somente parágrafos
        produzidos por agente são regeneráveis (hoje:
        'enquadramento_suggestion', 'legal_basis', 'coaf_communication_draft');
        seções determinísticas são rejeitadas. A validação é tudo-ou-nada:
        qualquer parágrafo inválido rejeita a requisição inteira e nada é
        regenerado. Somente os parágrafos pedidos são substituídos no resultado
        persistido; as demais seções e os artefatos XML/PDF gerados são mantidos
        como produzidos originalmente.
      operationId: regenerate_report_paragraphs
      parameters:
        - description: UUID da execução do relatório.
          in: path
          name: report_uuid
          required: true
          schema:
            description: UUID da execução do relatório.
            format: uuid
            title: UUID do Relatório
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportParagraphsRegenerateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResponse'
          description: Resposta bem-sucedida.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Apikey Bearer ausente, malformada, expirada ou inválida.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: A apikey autenticada não tem o escopo necessário.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Relatório não encontrado para o cliente autenticado.
        '422':
          description: >-
            Corpo da requisição, parâmetro de rota, parâmetro de query ou regra
            de negócio inválidos.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Falha no processamento do relatório.
      security:
        - HTTPBearer: []
components:
  schemas:
    ReportParagraphsRegenerateRequest:
      additionalProperties: false
      examples:
        - paragraphs:
            - enquadramento_suggestion
            - coaf_communication_draft
      properties:
        paragraphs:
          description: >-
            Identificadores dos parágrafos produzidos por agente a regenerar —
            chaves das seções do resultado do relatório (ex.:
            'enquadramento_suggestion', 'legal_basis',
            'coaf_communication_draft'). Seções determinísticas não são
            regeneráveis.
          items:
            type: string
          minItems: 1
          title: Paragraphs
          type: array
      required:
        - paragraphs
      title: ReportParagraphsRegenerateRequest
      type: object
    ReportResponse:
      description: >-
        Relatório regulatório completo, devolvido por POST e GET
        /reports/{uuid}.


        Um relatório devolvido de forma síncrona está sempre COMPLETED; falhas
        não são persistidas, então os campos de ciclo de vida de fila
        (status/error/timestamps) foram removidos. `result` carrega as
        referências de armazenamento do XML/PDF (bucket/key/uri) — os artefatos
        ficam no MinIO, não embutidos na resposta.
      properties:
        analysis_uuid:
          description: UUID da análise de origem.
          format: uuid
          title: Analysis Uuid
          type: string
        institution_type:
          $ref: '#/components/schemas/InstitutionType'
          description: Tipo de instituição utilizado.
        result:
          anyOf:
            - $ref: '#/components/schemas/ReportResult'
            - type: 'null'
          description: Resultado completo do relatório montado.
        uuid:
          description: UUID da execução do relatório.
          format: uuid
          title: Uuid
          type: string
      required:
        - uuid
        - analysis_uuid
        - institution_type
        - result
      title: ReportResponse
      type: object
    ErrorResponse:
      properties:
        detail:
          description: Mensagem pública estável de erro.
          examples:
            - Resource not found.
          title: Detail
          type: string
      required:
        - detail
      title: ErrorResponse
      type: object
    InstitutionType:
      description: >-
        Tipo de instituição supervisionada solicitando o relatório regulatório.
        O tipo de instituição seleciona a norma setorial (regime) aplicável,
        usada ao resolver referências regulatórias e orientar o agente
        narrativo.
      enum:
        - banco
        - seguradora
      title: InstitutionType
      type: string
    ReportResult:
      additionalProperties: false
      description: >-
        Relatório regulatório completo montado pelo workflow do Motor 2. Cada
        tópico do relatório é um texto em PT-BR pronto pra exibição. As seções
        determinísticas (§1, §2, §3, §7) estão sempre presentes; as seções
        narrativas (§4–§6) são ``None`` quando o agente narrativo não conseguiu
        produzir um resultado válido, com a limitação correspondente registrada
        em ``limitations``.
      properties:
        audit_trail:
          title: Audit Trail
          type: string
        coaf_communication_draft:
          anyOf:
            - type: string
            - type: 'null'
          title: Coaf Communication Draft
        coaf_xml:
          anyOf:
            - $ref: '#/components/schemas/ReportXmlArtifact'
            - type: 'null'
        consolidated_risk_signals:
          title: Consolidated Risk Signals
          type: string
        counterparty_identification:
          title: Counterparty Identification
          type: string
        enquadramento_suggestion:
          anyOf:
            - type: string
            - type: 'null'
          title: Enquadramento Suggestion
        institution_type:
          $ref: '#/components/schemas/InstitutionType'
        legal_basis:
          anyOf:
            - type: string
            - type: 'null'
          title: Legal Basis
        limitations:
          items:
            $ref: '#/components/schemas/AnalysisLimitation'
          title: Limitations
          type: array
        ownership_and_ubo:
          title: Ownership And Ubo
          type: string
        pdf:
          anyOf:
            - $ref: '#/components/schemas/ReportPdfArtifact'
            - type: 'null'
        regime:
          $ref: '#/components/schemas/RegulatoryRegime'
        source_analysis_uuid:
          format: uuid
          title: Source Analysis Uuid
          type: string
        versions:
          $ref: '#/components/schemas/ReportVersions'
      required:
        - source_analysis_uuid
        - institution_type
        - regime
        - counterparty_identification
        - ownership_and_ubo
        - consolidated_risk_signals
        - audit_trail
        - versions
      title: ReportResult
      type: object
    ReportXmlArtifact:
      additionalProperties: false
      description: >-
        Referência à comunicação XML COAF/COS gerada e armazenada no object
        storage. Artefato determinístico. ``available`` é ``False`` só quando
        nenhum XML pode ser produzido porque o leiaute oficial do regime ainda
        não foi implementado (ex.: banco/BCB); ``limitations`` explica o motivo
        e o restante do relatório não é afetado. Um erro real de serialização ou
        upload de armazenamento não é representado aqui — ele falha a etapa.
        ``limitations`` também pode ser não-vazio num artefato disponível quando
        dados operacionais opcionais estavam ausentes (comunicação parcial).
      properties:
        available:
          title: Available
          type: boolean
        byte_size:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Byte Size
        content_type:
          default: application/xml
          title: Content Type
          type: string
        filename:
          anyOf:
            - type: string
            - type: 'null'
          title: Filename
        format:
          title: Format
          type: string
        limitations:
          items:
            $ref: '#/components/schemas/AnalysisLimitation'
          title: Limitations
          type: array
        regime:
          $ref: '#/components/schemas/RegulatoryRegime'
        storage_bucket:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Bucket
        storage_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Key
        storage_uri:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Uri
      required:
        - regime
        - format
        - available
      title: ReportXmlArtifact
      type: object
    AnalysisLimitation:
      additionalProperties: false
      description: >-
        Descrição estruturada de dados de análise ausentes, parciais ou
        restritos.
      properties:
        code:
          minLength: 1
          pattern: ^[a-z][a-z0-9_]*$
          title: Code
          type: string
        details:
          additionalProperties: true
          title: Details
          type: object
        entity_id:
          anyOf:
            - exclusiveMinimum: 0
              type: integer
            - type: 'null'
          title: Entity Id
        message:
          minLength: 1
          title: Message
          type: string
      required:
        - code
        - message
      title: AnalysisLimitation
      type: object
    ReportPdfArtifact:
      additionalProperties: false
      description: >-
        Referência ao relatório em PDF legível gerado e armazenado no object
        storage. Artefato de apresentação (melhor esforço): ``available`` é
        ``False`` quando o PDF não pôde ser renderizado ou armazenado; nesse
        caso, ``limitations`` explica o motivo e o restante do relatório (JSON +
        XML) não é afetado. O PDF é uma renderização das seções montadas do
        relatório; não é uma comunicação regulatória.
      properties:
        available:
          title: Available
          type: boolean
        byte_size:
          anyOf:
            - minimum: 0
              type: integer
            - type: 'null'
          title: Byte Size
        content_type:
          default: application/pdf
          title: Content Type
          type: string
        filename:
          anyOf:
            - type: string
            - type: 'null'
          title: Filename
        limitations:
          items:
            $ref: '#/components/schemas/AnalysisLimitation'
          title: Limitations
          type: array
        storage_bucket:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Bucket
        storage_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Key
        storage_uri:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Uri
      required:
        - available
      title: ReportPdfArtifact
      type: object
    RegulatoryRegime:
      description: Regime regulatório setorial selecionado a partir do tipo de instituição.
      enum:
        - BCB
        - SUSEP
      title: RegulatoryRegime
      type: string
    ReportVersions:
      additionalProperties: false
      description: Identificadores de versão registrados junto com o relatório gerado.
      properties:
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
        narrative_prompt_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Narrative Prompt Version
        regulatory_catalog_version:
          minLength: 1
          title: Regulatory Catalog Version
          type: string
        report_workflow_version:
          minLength: 1
          title: Report Workflow Version
          type: string
        source_analysis_workflow_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Analysis Workflow Version
      required:
        - report_workflow_version
        - regulatory_catalog_version
      title: ReportVersions
      type: object
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````