{
    "openapi": "3.1.0",
    "info": {
        "title": "Achadinhos GPT API",
        "version": "0.3.0",
        "description": "API somente leitura do catálogo de ofertas (Shopee, Amazon, Mercado Livre, Magazine Luiza e outras) e bugs de preço. Site independente, sem vínculo com as lojas citadas. Os links são de afiliado: se você comprar por eles, podemos ganhar uma comissão, sem custo extra para você. Preços e bugs mudam a todo momento; confira sempre na loja antes de comprar."
    },
    "servers": [
        {
            "url": "https://achadinhosgpt.com.br"
        }
    ],
    "paths": {
        "/api/buscar": {
            "get": {
                "operationId": "buscarAchadinhos",
                "summary": "Buscar ofertas por termo, categoria, loja, preço máximo, bugs ou frete grátis (paginado)",
                "parameters": [
                    {
                        "name": "termo",
                        "in": "query",
                        "required": false,
                        "description": "O que procurar, em português. Ex.: \"carregador iphone\", \"air fryer\".",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "categoria",
                        "in": "query",
                        "required": false,
                        "description": "Slug da categoria (veja listar_categorias). \"bug\" = só bugs de preço ativos.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "bug",
                                "tecnologia",
                                "casa-e-cozinha",
                                "beleza-e-cuidados",
                                "moda-e-acessorios",
                                "infantil-e-brinquedos",
                                "esporte-e-lazer",
                                "pet",
                                "ferramentas-e-automotivo",
                                "games",
                                "mercado",
                                "papelaria-e-escritorio",
                                "variados"
                            ]
                        }
                    },
                    {
                        "name": "loja",
                        "in": "query",
                        "required": false,
                        "description": "Slug da loja: shopee, mercado-livre, amazon, shein, magazine-luiza. Veja listar_categorias.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "shopee",
                                "mercado-livre",
                                "amazon",
                                "shein",
                                "magazine-luiza"
                            ]
                        }
                    },
                    {
                        "name": "preco_max",
                        "in": "query",
                        "required": false,
                        "description": "Preço máximo em reais (R$).",
                        "schema": {
                            "type": "number",
                            "minimum": 0
                        }
                    },
                    {
                        "name": "apenas_bugs",
                        "in": "query",
                        "required": false,
                        "description": "Se true, só bugs de preço ativos.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "frete_gratis",
                        "in": "query",
                        "required": false,
                        "description": "Se true, só ofertas com frete grátis.",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "ordenar",
                        "in": "query",
                        "required": false,
                        "description": "Ordem dos resultados. Padrão: relevancia.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "relevancia",
                                "mais_recentes",
                                "menor_preco",
                                "maior_desconto"
                            ]
                        }
                    },
                    {
                        "name": "limite",
                        "in": "query",
                        "required": false,
                        "description": "Resultados por página (padrão 10).",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50
                        }
                    },
                    {
                        "name": "pagina",
                        "in": "query",
                        "required": false,
                        "description": "Página de resultados (padrão 1).",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Produtos encontrados",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/bugs": {
            "get": {
                "operationId": "listarBugs",
                "summary": "Listar bugs de preço ativos (maior desconto primeiro)",
                "parameters": [
                    {
                        "name": "loja",
                        "in": "query",
                        "required": false,
                        "description": "Slug da loja: shopee, mercado-livre, amazon, shein, magazine-luiza. Veja listar_categorias.",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "shopee",
                                "mercado-livre",
                                "amazon",
                                "shein",
                                "magazine-luiza"
                            ]
                        }
                    },
                    {
                        "name": "limite",
                        "in": "query",
                        "required": false,
                        "description": "Máximo de bugs (padrão 20).",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 50
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Bugs de preço",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/produto/{slug}": {
            "get": {
                "operationId": "detalhesProduto",
                "summary": "Ficha completa de um produto",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "pattern": "^[a-z0-9-]+$"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ficha do produto",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Produto não encontrado"
                    }
                }
            }
        },
        "/api/categorias": {
            "get": {
                "operationId": "listarCategorias",
                "summary": "Listar categorias com quantidade de produtos",
                "responses": {
                    "200": {
                        "description": "Categorias",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}