{
  "openapi": "3.1.0",
  "info": {
    "title": "Saitro Website — Public API",
    "version": "1.0.0",
    "summary": "Endpoints públicos do site institucional da Saitro.",
    "description": "Esta especificação cobre APENAS o que é público e sem autenticação.\n\nA API da plataforma GSIM é distinta desta, exige autenticação e o acesso é concedido sob contrato. A referência dela é entregue aos clientes através do portal, e não é publicada aqui.\n\nOs demais endpoints sob /api/ existem para uso do próprio site (formulário de contato, CSRF, ALTCHA, autenticação do portal) e não são de uso geral: dependem de token de sessão emitido pelas páginas e não estão documentados como interface pública.",
    "contact": {
      "name": "Saitro",
      "url": "https://saitro.com/contact.html"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://saitro.com/privacy-policy.html"
    }
  },
  "servers": [
    {
      "url": "https://saitro.com",
      "description": "Produção"
    }
  ],
  "paths": {
    "/api/health": {
      "get": {
        "operationId": "getHealth",
        "summary": "Estado do site",
        "description": "Verifica que o PHP executa e que a configuração da aplicação, que vive fora do docroot, é alcançável. Não consulta banco de dados, não exige autenticação e não revela informação de infraestrutura.",
        "tags": ["status"],
        "security": [],
        "responses": {
          "200": {
            "description": "Site operacional.",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/Health" },
                "example": {
                  "status": "ok",
                  "service": "saitro-website",
                  "time": "2026-08-03T21:30:00Z"
                }
              }
            }
          },
          "503": {
            "description": "Configuração da aplicação inalcançável. Ocorre, por exemplo, quando o open_basedir do servidor impede a leitura de lib/, que fica acima do docroot.",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/Health" },
                "example": {
                  "status": "error",
                  "service": "saitro-website",
                  "detail": "configuration unavailable"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Health": {
        "type": "object",
        "required": ["status", "service"],
        "properties": {
          "status": {
            "type": "string",
            "enum": ["ok", "error"]
          },
          "service": {
            "type": "string",
            "const": "saitro-website"
          },
          "time": {
            "type": "string",
            "format": "date-time",
            "description": "UTC, apenas em respostas 200."
          },
          "detail": {
            "type": "string",
            "description": "Motivo da falha, apenas em respostas 503."
          }
        }
      }
    }
  }
}
