{
    "openapi": "3.0.3",
    "info": {
        "title": "Academy Educação API",
        "description": "API pública da Academy Educação. Consulte o catálogo de pós-graduação, MBA e MBA ao Vivo. Busque por nome, área de conhecimento ou categoria. Acesse grades curriculares, valores, formas de pagamento e artigos do blog. Todos os cursos possuem certificado reconhecido pelo MEC, são 100% online, sem TCC, com conclusão a partir de 4 meses.",
        "version": "2.0.0",
        "contact": {
            "name": "Academy Educação",
            "email": "atendimento@academyeducacao.com.br",
            "url": "https://www.academyeducacao.com.br"
        },
        "license": {
            "name": "Uso público — dados do catálogo",
            "url": "https://www.academyeducacao.com.br"
        }
    },
    "servers": [
        {
            "url": "https://www.academyeducacao.com.br/api",
            "description": "Produção"
        }
    ],
    "paths": {
        "/cursos": {
            "get": {
                "operationId": "listCursos",
                "summary": "Lista cursos paginados com filtros",
                "description": "Lista cursos ativos com paginação. Pode filtrar por área de conhecimento, categoria (MBA, Pós-Graduação, MBA ao Vivo) ou cursos em destaque.",
                "parameters": [
                    {"name": "page", "in": "query", "description": "Número da página (começa em 1)", "schema": {"type": "integer", "default": 1, "minimum": 1}},
                    {"name": "area", "in": "query", "description": "ID da área de conhecimento", "schema": {"type": "integer"}},
                    {"name": "categoria", "in": "query", "description": "ID da categoria: 2=MBA, 3=Pós-Graduação, 4=MBA ao Vivo, 5=MBA", "schema": {"type": "integer", "enum": [2, 3, 4, 5]}},
                    {"name": "destaque", "in": "query", "description": "Se 1, retorna apenas cursos em destaque", "schema": {"type": "integer", "enum": [0, 1]}}
                ],
                "responses": {
                    "200": {
                        "description": "Lista paginada de cursos",
                        "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CursosPaginados"}}}
                    }
                }
            }
        },
        "/cursos/{id}": {
            "get": {
                "operationId": "getCursoPorId",
                "summary": "Detalhes completos de um curso por ID",
                "description": "Retorna ficha completa: proposta, objetivo, público-alvo, grade curricular, carga horária, preço, URL.",
                "parameters": [
                    {"name": "id", "in": "path", "required": true, "description": "ID numérico do curso", "schema": {"type": "integer"}}
                ],
                "responses": {
                    "200": {"description": "Ficha completa do curso", "content": {"application/json": {"schema": {"type": "object", "properties": {"curso": {"$ref": "#/components/schemas/CursoCompleto"}}}}}},
                    "404": {"description": "Curso não encontrado"}
                }
            }
        },
        "/cursos/slug/{slug}": {
            "get": {
                "operationId": "getCursoPorSlug",
                "summary": "Detalhes completos de um curso por slug",
                "description": "Retorna ficha completa do curso a partir do slug (ex: 'inteligencia-artificial').",
                "parameters": [
                    {"name": "slug", "in": "path", "required": true, "description": "Slug do curso", "schema": {"type": "string"}}
                ],
                "responses": {
                    "200": {"description": "Ficha completa do curso", "content": {"application/json": {"schema": {"type": "object", "properties": {"curso": {"$ref": "#/components/schemas/CursoCompleto"}}}}}},
                    "404": {"description": "Curso não encontrado"}
                }
            }
        },
        "/areas": {
            "get": {
                "operationId": "listAreas",
                "summary": "Lista todas as áreas de conhecimento",
                "description": "Retorna as 19 áreas de conhecimento da Academy Educação com total de cursos em cada uma.",
                "responses": {
                    "200": {
                        "description": "Lista de áreas",
                        "content": {"application/json": {"schema": {"type": "object", "properties": {"areas": {"type": "array", "items": {"$ref": "#/components/schemas/Area"}}}}}}
                    }
                }
            }
        },
        "/search": {
            "get": {
                "operationId": "searchCursos",
                "summary": "Busca cursos por palavra-chave",
                "description": "Busca cursos de Pós-Graduação, MBA e MBA ao Vivo por nome. Retorna lista com id, nome, URL, categoria e preço. Mínimo 2 caracteres.",
                "parameters": [
                    {"name": "q", "in": "query", "required": true, "description": "Termo de busca (mínimo 2 caracteres)", "schema": {"type": "string", "minLength": 2}}
                ],
                "responses": {
                    "200": {
                        "description": "Lista de cursos encontrados",
                        "content": {"application/json": {"schema": {"type": "object", "properties": {"results": {"type": "array", "items": {"$ref": "#/components/schemas/CursoResumo"}}}}}}
                    }
                }
            }
        },
        "/blog/search": {
            "get": {
                "operationId": "searchBlog",
                "summary": "Busca artigos do blog",
                "description": "Busca artigos do blog Academy Educação por título e resumo. Cobre temas de educação, carreira, gestão, tecnologia e mercado de trabalho.",
                "parameters": [
                    {"name": "q", "in": "query", "required": true, "description": "Termo de busca (mínimo 2 caracteres)", "schema": {"type": "string", "minLength": 2}}
                ],
                "responses": {
                    "200": {
                        "description": "Lista de artigos",
                        "content": {"application/json": {"schema": {"type": "object", "properties": {"results": {"type": "array", "items": {"$ref": "#/components/schemas/BlogPost"}}}}}}
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "CursoResumo": {
                "type": "object",
                "properties": {
                    "id": {"type": "integer"},
                    "nome": {"type": "string"},
                    "url": {"type": "string", "description": "URL relativa da ficha"},
                    "categoria": {"type": "string", "enum": ["Pós-Graduação", "MBA", "MBA Ao Vivo"]},
                    "preco": {
                        "type": "object",
                        "properties": {
                            "valor": {"type": "number"},
                            "parcela_minima": {"type": "number"},
                            "parcelas": {"type": "integer"}
                        }
                    }
                }
            },
            "CursosPaginados": {
                "type": "object",
                "properties": {
                    "data": {"type": "array", "items": {"$ref": "#/components/schemas/CursoCompleto"}},
                    "page": {"type": "integer"},
                    "total": {"type": "integer"},
                    "total_pages": {"type": "integer"}
                }
            },
            "CursoCompleto": {
                "type": "object",
                "properties": {
                    "id": {"type": "integer"},
                    "nome": {"type": "string"},
                    "slug": {"type": "string"},
                    "url": {"type": "string"},
                    "imagem_url": {"type": "string"},
                    "categoria_nome": {"type": "string"},
                    "area_nome": {"type": "string"},
                    "proposta": {"type": "string", "description": "Sobre o curso"},
                    "objetivo": {"type": "string"},
                    "publico_alvo": {"type": "string"},
                    "conteudo_programatico": {"type": "string"},
                    "carga_horaria": {"type": "integer"},
                    "valor": {"type": "number"},
                    "parcela_minima": {"type": "number"},
                    "parcelas": {"type": "integer"},
                    "grade": {"type": "array", "items": {"type": "object"}}
                }
            },
            "Area": {
                "type": "object",
                "properties": {
                    "id": {"type": "integer"},
                    "nome": {"type": "string"},
                    "slug": {"type": "string"},
                    "total_cursos": {"type": "integer"}
                }
            },
            "BlogPost": {
                "type": "object",
                "properties": {
                    "titulo": {"type": "string"},
                    "url": {"type": "string"},
                    "categoria_nome": {"type": "string", "nullable": true},
                    "categoria_cor": {"type": "string", "nullable": true}
                }
            }
        }
    },
    "x-legacy-routes": {
        "note": "Rotas legadas com ?route= ainda funcionam para compatibilidade, mas use as rotas REST acima.",
        "search": "/index.php?route=search&q=",
        "cursos": "/index.php?route=cursos",
        "curso": "/index.php?route=curso&id=",
        "areas": "/index.php?route=areas",
        "blog-search": "/blog-search.php"
    }
}
