{
  "openapi": "3.0.3",
  "info": {
    "title": "INCO — Dados públicos",
    "description": "Endpoints públicos de leitura da INCO (https://inco.vc), plataforma brasileira de investimento coletivo regulada pelo Banco Central do Brasil e pela CVM. Expõem as métricas oficiais publicadas no site: o Índice INCO e a série histórica de rentabilidade da carteira. Dados factuais, sem recomendação de investimento. Rentabilidade passada não garante resultado futuro.",
    "version": "1.0.0",
    "contact": { "url": "https://inco.vc/sobre" },
    "license": { "name": "Dados factuais — cite a fonte: INCO (inco.vc)" }
  },
  "servers": [
    { "url": "https://xbuadoqsuokogbiekzpt.supabase.co/functions/v1", "description": "Edge functions públicas da INCO" }
  ],
  "paths": {
    "/inco-index": {
      "get": {
        "operationId": "getIncoIndex",
        "summary": "Índice INCO — série histórica da carteira",
        "description": "Retorna a série mensal do Índice INCO (rentabilidade acumulada em %) e a série diária de rentabilidade e saldo da carteira, nas versões provisionada (líquida de provisões de perda) e não provisionada. Cache de 10 minutos.",
        "responses": {
          "200": {
            "description": "Séries do Índice INCO",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "indice": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": { "type": "string", "example": "2026-07", "description": "Ano-mês de referência" },
                          "value": { "type": "number", "example": 156.0, "description": "Rentabilidade acumulada em %" }
                        }
                      }
                    },
                    "serie": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": { "type": "string", "format": "date" },
                          "rentabilidade": { "type": ["number", "null"], "description": "Rentabilidade acumulada provisionada (%)" },
                          "rentabilidade_np": { "type": ["number", "null"], "description": "Rentabilidade acumulada não provisionada (%)" },
                          "saldo": { "type": ["number", "null"], "description": "Saldo da carteira (R$)" },
                          "saldo_np": { "type": ["number", "null"] }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/inco-roi": {
      "get": {
        "operationId": "getIncoRoi",
        "summary": "Rentabilidade histórica da carteira INCO",
        "description": "Retorna a série mensal oficial de rentabilidade acumulada, rendimento mensal e saldo da carteira. Em caso de falha da fonte primária, responde a partir de espelho com o campo `stale: true`.",
        "responses": {
          "200": {
            "description": "Série histórica da carteira",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "carteira": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "data": { "type": "string", "format": "date", "description": "Mês de referência" },
                          "rentabilidade_acumulada": { "type": "string", "description": "Rentabilidade acumulada (decimal em string)" },
                          "rendimento": { "type": ["string", "null"], "description": "Rendimento do mês" },
                          "saldo": { "type": ["string", "null"], "description": "Saldo da carteira no mês" }
                        }
                      }
                    },
                    "source": { "type": "string", "example": "INCO" },
                    "fetched_at": { "type": "string", "format": "date-time" },
                    "stale": { "type": "boolean", "description": "Presente e verdadeiro quando a resposta veio de cache/espelho" }
                  }
                }
              }
            }
          },
          "502": { "description": "Série histórica temporariamente indisponível" }
        }
      }
    }
  }
}
