{
  "openapi": "3.1.0",
  "info": {
    "title": "Deu no Bicho — API pública",
    "version": "1.0.0",
    "description": "Endpoints públicos com license CC-BY-4.0 para consumo por LLMs (RAG), pesquisadores e desenvolvedores.",
    "contact": {
      "email": "contato@deunobicho.online",
      "url": "https://deunobicho.online/sobre"
    },
    "license": {
      "name": "CC-BY-4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    }
  },
  "servers": [{ "url": "https://deunobicho.online" }],
  "paths": {
    "/api/facts/{topic}": {
      "get": {
        "summary": "Fatos estruturados sobre um tópico do jogo do bicho",
        "description": "Retorna fatos canônicos verificáveis (origem, estrutura, Federal ao vivo, legalidade, cotações, Pix, brand). Fonte primária citada em cada resposta.",
        "operationId": "getFacts",
        "parameters": [
          {
            "name": "topic",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["origem", "estrutura", "federal", "legalidade", "cotacoes", "pix", "brand"]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fatos estruturados do tópico",
            "content": {
              "application/json": {
                "schema": { "type": "object" }
              }
            }
          },
          "404": { "description": "Tópico não encontrado" }
        }
      }
    },
    "/api/resultados/{sorteio}": {
      "get": {
        "summary": "Resultado ao vivo de um sorteio",
        "description": "Federal retorna mode='live' com hash SHA256 reproduzível. Bancas retornam mode='live' via worker Playwright quando disponível, senão mode='sample' com disclaimer.",
        "operationId": "getResultado",
        "parameters": [
          {
            "name": "sorteio",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": ["federal", "pt", "ptm", "ptv", "ptn", "corujinha"]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Resultado com 5 prêmios + hash SHA256",
            "content": {
              "application/json": {
                "schema": { "type": "object" }
              }
            }
          }
        }
      }
    }
  }
}
