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

# Produzir sugestões de regra de correspondência de IA (requer revisão humana)

> Constrói features de histórico AGREGADAS e seguras quanto a privacidade para o contexto, pede ao advisor de IA regras candidatas apenas em configuração, e enfileira cada candidato sobrevivente em uma fila de revisão humana. A saída da IA NUNCA é autoritativa: produzir uma sugestão NÃO CRIA NENHUMA regra. Uma regra é criada apenas quando um humano APROVA uma sugestão. A lane é controlada por um kill-switch global do advisor E um opt-in por tenant (falha fechada: um tenant sem opt-in recebe 403). Tenant do JWT, contexto do path. O payload de egresso é apenas agregados — sem transação bruta, valor monetário ou PII.



## OpenAPI

````yaml pt/openapi/v3-current/matcher.yaml post /v1/matching/contexts/{contextId}/rule-suggestions
openapi: 3.1.0
info:
  title: Matcher APIs
  description: >-
    Referência completa de API para o motor de conciliação Matcher, que fornece
    conciliação automática de transações entre o Midaz Ledger e sistemas
    externos.
  version: 4.1.0
  license:
    name: Elastic License 2.0
    url: https://www.elastic.co/licensing/elastic-license
servers:
  - url: https://matcher.sandbox.lerian.net
security: []
paths:
  /v1/matching/contexts/{contextId}/rule-suggestions:
    post:
      tags:
        - Matching
      summary: >-
        Produzir sugestões de regra de correspondência de IA (requer revisão
        humana)
      description: >-
        Constrói features de histórico AGREGADAS e seguras quanto a privacidade
        para o contexto, pede ao advisor de IA regras candidatas apenas em
        configuração, e enfileira cada candidato sobrevivente em uma fila de
        revisão humana. A saída da IA NUNCA é autoritativa: produzir uma
        sugestão NÃO CRIA NENHUMA regra. Uma regra é criada apenas quando um
        humano APROVA uma sugestão. A lane é controlada por um kill-switch
        global do advisor E um opt-in por tenant (falha fechada: um tenant sem
        opt-in recebe 403). Tenant do JWT, contexto do path. O payload de
        egresso é apenas agregados — sem transação bruta, valor monetário ou
        PII.
      operationId: suggestMatchRules
      parameters:
        - description: Context ID
          in: path
          name: contextId
          required: true
          schema:
            description: ID do contexto
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestRulesResponse'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Erro
      security:
        - BearerAuth: []
components:
  schemas:
    SuggestRulesResponse:
      additionalProperties: false
      properties:
        count:
          description: Número de revisões de sugestão produzidas
          examples:
            - 2
          format: int64
          type: integer
        items:
          description: >-
            Revisões de sugestão PENDING_REVIEW recém-criadas; produzi-las não
            cria nenhuma regra
          items:
            $ref: '#/components/schemas/RuleSuggestionResponse'
          type:
            - array
            - 'null'
      required:
        - items
        - count
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Código de erro de domínio estável e legível por máquina com escopo
            no serviço emissor (formato: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            Uma explicação legível por humanos específica para esta ocorrência
            do problema.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Lista opcional de detalhes de erro individuais
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            Uma referência URI que identifica a ocorrência específica do
            problema.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: Código de status HTTP
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            Um resumo curto e legível por humanos do tipo do problema. Este
            valor não deve mudar entre ocorrências do erro.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: >-
            Uma referência URI para documentação legível por humanos sobre o
            erro.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    RuleSuggestionResponse:
      additionalProperties: false
      properties:
        candidate:
          $ref: '#/components/schemas/RuleSuggestionCandidateResponse'
          description: A regra de correspondência proposta apenas em configuração
        contextId:
          description: ID do contexto de reconciliação ao qual esta sugestão pertence
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        createdAt:
          description: Quando a revisão foi criada (RFC 3339)
          examples:
            - '2026-06-16T10:30:00Z'
          type: string
        createdRuleId:
          description: >-
            Identificador da regra de correspondência criada na aprovação; vazio
            até uma revisão aprovada ser vinculada
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        id:
          description: Identificador único da revisão
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        rejectReason:
          description: Motivo opcional registrado quando a sugestão é rejeitada
          examples:
            - too aggressive
          type: string
        reviewerId:
          description: ID do principal do revisor; vazio até a sugestão ser adjudicada
          examples:
            - user-42
          type: string
        status:
          description: >-
            Status do ciclo de vida: PENDING_REVIEW (aguardando decisão humana),
            APPROVED (regra criada) ou REJECTED (descartada)
          examples:
            - PENDING_REVIEW
          type: string
        updatedAt:
          description: Quando a revisão foi atualizada pela última vez (RFC 3339)
          examples:
            - '2026-06-16T10:35:00Z'
          type: string
        version:
          description: Versão de concorrência otimista da revisão
          examples:
            - 1
          format: int64
          type: integer
      required:
        - id
        - contextId
        - candidate
        - status
        - version
        - createdAt
        - updatedAt
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: 'Onde o erro ocorreu, ex.: ''body.items[3].tags'' ou ''path.thing-id'''
          type: string
        message:
          description: Texto da mensagem de erro
          type: string
        value:
          description: O valor na localização informada
      type: object
    RuleSuggestionCandidateResponse:
      additionalProperties: false
      properties:
        confidence:
          description: Confiança do advisor na sugestão, de 0.0 (mínima) a 1.0 (máxima)
          examples:
            - 0.82
          format: double
          type: number
        config:
          additionalProperties: {}
          description: >-
            Configuração de regra por tipo sobre o schema fechado; o formato
            depende do tipo de candidato
          type: object
        expectedImprovement:
          description: >-
            Nota consultiva sobre o efeito esperado na taxa de
            auto-correspondência; nunca uma cifra monetária
          examples:
            - +8% auto-match
          type: string
        priority:
          description: >-
            Prioridade da regra proposta no intervalo 1..1000 (menor executa
            primeiro)
          examples:
            - 10
          format: int64
          type: integer
        rationale:
          description: Justificativa curta e legível por humanos para a sugestão
          examples:
            - near-miss amounts cluster under 1%
          type: string
        type:
          description: >-
            Tipo de regra proposto do vocabulário fechado: EXACT (igualdade
            estrita), TOLERANCE (dentro de uma faixa de valor) ou DATE_LAG
            (permitindo um offset de data de liquidação)
          examples:
            - TOLERANCE
          type: string
      required:
        - type
        - priority
        - config
        - rationale
        - confidence
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Autenticação por Bearer token (formato: "Bearer {token}")'

````