openapi: 3.0.3
info:
  title: vIA-FinBR API Pública
  description: >
    Endpoints REST públicos da vIA-FinBR (Schadler Tech). Dados (eventos, correlações,
    what-if, status, veredito) são públicos. /concierge (análise premium) exige token.
  version: "1.0.0"
  contact:
    name: Schadler Tech
    email: Schadler.Tech.IA@gmail.com
    url: https://visionaria-tech.com
servers:
  - url: https://api.visionaria-tech.com
paths:
  /api/status:
    get:
      summary: Health da API
      responses:
        "200":
          description: Status operacional + bindings
  /api/veredito-hoje:
    get:
      summary: Veredito diário POPPER (projeções MCMC + SHA256)
      responses: { "200": { description: Veredito do dia } }
  /api/events:
    get:
      summary: Eventos exógenos recentes (web search) por indicador
      parameters:
        - name: indicador
          in: query
          required: true
          schema:
            type: string
            enum: [selic, ipca, cambio, ibov, recessao, ouro, soja, milho, cafe, niquel, litio, terras-raras, grafita]
      responses: { "200": { description: Lista de eventos com relevância } }
  /api/correlations:
    get:
      summary: Matriz de correlação cross-asset (9 indicadores, BCB+Yahoo 2015-2026)
      responses: { "200": { description: Matriz Δ + níveis + top drivers } }
  /api/what-if:
    get:
      summary: Sensitivity — impacto de um choque (base) sobre um alvo
      parameters:
        - { name: base, in: query, required: true, schema: { type: string } }
        - { name: shock, in: query, required: true, schema: { type: number } }
        - { name: target, in: query, required: true, schema: { type: string } }
      responses:
        "200": { description: Impacto estimado + beta + confiança }
        "400": { description: Par não coberto / parâmetro inválido }
  /concierge:
    post:
      summary: Análise institucional premium (POPPER + RAVs + eventos + correlações + SHA256)
      description: "Autenticação — coming soon (gestão de API keys B2B). Hoje: X-Whitelist-Token (beta por convite)."
      security:
        - WhitelistToken: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [pergunta, tier]
              properties:
                pergunta: { type: string, minLength: 10, maxLength: 5000 }
                tier: { type: string, enum: [standard, pro, premium, premium_v2] }
                skip_elicitation: { type: boolean }
      responses:
        "200": { description: Resposta com response_text + commitment_hash + ravs_citados }
        "402": { description: Sem créditos — comprar }
        "503": { description: soft_beta (beta restrita por convite) }
components:
  securitySchemes:
    WhitelistToken:
      type: apiKey
      in: header
      name: X-Whitelist-Token
