{"openapi": "3.1.0", "info": {"title": "Menor Pre\u00e7o Agora \u2014 API P\u00fablica de Ofertas e Cupons", "version": "1.0.0", "summary": "Endpoints p\u00fablicos somente-leitura de ofertas verificadas e cupons ativos (menorprecoagora.com.br).", "description": "O Menor Pre\u00e7o Agora \u00e9 um site brasileiro independente de ofertas que trabalha como afiliado de lojas parceiras (Mercado Livre, Amazon, Shopee, AliExpress e KaBuM via Awin). N\u00f3s n\u00e3o vendemos, n\u00e3o entregamos e n\u00e3o damos garantia. A compra, o pagamento, a entrega, a troca e a garantia acontecem na loja. Conferimos o pre\u00e7o na loja antes de publicar e mostramos a hora da confer\u00eancia. Quando algu\u00e9m compra pelo nosso link, a loja nos paga uma comiss\u00e3o, sem custo extra para quem compra.", "x-disclosure": "O Menor Pre\u00e7o Agora \u00e9 um site brasileiro independente de ofertas que trabalha como afiliado de lojas parceiras (Mercado Livre, Amazon, Shopee, AliExpress e KaBuM via Awin). N\u00f3s n\u00e3o vendemos, n\u00e3o entregamos e n\u00e3o damos garantia. A compra, o pagamento, a entrega, a troca e a garantia acontecem na loja. Conferimos o pre\u00e7o na loja antes de publicar e mostramos a hora da confer\u00eancia. Quando algu\u00e9m compra pelo nosso link, a loja nos paga uma comiss\u00e3o, sem custo extra para quem compra."}, "servers": [{"url": "https://menorprecoagora.com.br", "description": "Servidor p\u00fablico (Menor Pre\u00e7o Agora)"}], "paths": {"/api/deals": {"get": {"operationId": "listPublicDeals", "summary": "Lista ofertas verificadas ativas e cupons confirmados no cofre", "description": "Retorna a vitrine p\u00fablica de ofertas verificadas com pre\u00e7o conferido, links can\u00f4nicos (`url_oferta`, `url_produto`) e os cupons verificados ativos (`vault_coupons`).", "parameters": [{"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 100, "default": 24}, "description": "Quantidade m\u00e1xima de ofertas retornadas (1 a 100)."}, {"name": "platform", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Filtra por plataforma (ex.: MERCADOLIVRE, AMAZON, KABUM)."}, {"name": "text", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Filtro textual sobre t\u00edtulo ou categoria."}], "responses": {"200": {"description": "Lista p\u00fablica de ofertas verificadas e cupons ativos do cofre.", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealsResponse"}}}}}}}, "/api/v1/deals/top": {"get": {"operationId": "getTopVerifiedDeals", "summary": "Retorna o ranking das melhores ofertas verificadas por portal, departamento ou marca", "description": "Endpoint otimizado para agentes de IA (ChatGPT, Claude, Perplexity, Gemini) consultarem as melhores ofertas do dia nos portais Casa, Fit (Suplementos Whey/Creatina), Gamer e Beleza.", "parameters": [{"name": "portal", "in": "query", "required": false, "schema": {"type": "string", "enum": ["casa", "fit", "gamer", "beleza"]}, "description": "Filtra pelo portal especialista (casa, fit, gamer, beleza)."}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Filtro opcional por termo, marca ou categoria."}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 60, "default": 24}, "description": "Quantidade m\u00e1xima de ofertas (1 a 60)."}], "responses": {"200": {"description": "Ranking das melhores ofertas verificadas em estoque.", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealsResponse"}}}}}}}, "/api/match-coupon": {"get": {"operationId": "matchCoupon", "summary": "Calcula os melhores cupons verificados aplic\u00e1veis a um produto e pre\u00e7o", "description": "Avalia elegibilidade por loja, categoria e valor m\u00ednimo (`price` em R$) retornando a economia estimada, pre\u00e7o final e regras de n\u00e3o-cumulatividade.", "parameters": [{"name": "store", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Loja alvo (ex.: mercadolivre, amazon, kabum)."}, {"name": "q", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Termo ou t\u00edtulo do produto para validar restri\u00e7\u00f5es de categoria."}, {"name": "price", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "Pre\u00e7o do produto em R$ para c\u00e1lculo do desconto l\u00edquido."}], "responses": {"200": {"description": "Resultado de valida\u00e7\u00e3o e ranking de cupons aplic\u00e1veis.", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MatchCouponResponse"}}}}}}}, "/api/search": {"get": {"operationId": "searchDeals", "summary": "Busca textual de ofertas verificadas ativas", "description": "Pesquisa ofertas p\u00fablicas por palavra-chave (`q`), departamento (`dept`), loja (`store`) e teto de pre\u00e7o (`max_price`).", "parameters": [{"name": "q", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Termo de busca (m\u00ednimo 2 caracteres)."}, {"name": "store", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Filtro opcional por loja (ex.: mercadolivre, amazon, kabum)."}, {"name": "price", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "Alias opcional de pre\u00e7o m\u00e1ximo em R$."}, {"name": "max_price", "in": "query", "required": false, "schema": {"type": "number", "minimum": 0}, "description": "Pre\u00e7o m\u00e1ximo em R$."}, {"name": "dept", "in": "query", "required": false, "schema": {"type": "string"}, "description": "Slug do departamento para filtragem opcional."}, {"name": "limit", "in": "query", "required": false, "schema": {"type": "integer", "minimum": 1, "maximum": 50, "default": 20}, "description": "Quantidade m\u00e1xima de resultados (1 a 50)."}], "responses": {"200": {"description": "Resultados da busca de ofertas.", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SearchResponse"}}}}}}}}, "components": {"schemas": {"PublicDeal": {"type": "object", "properties": {"id": {"type": "string"}, "title": {"type": "string"}, "platform": {"type": "string"}, "discount_price": {"type": ["number", "null"]}, "original_price": {"type": ["number", "null"]}, "discount_pct": {"type": "integer"}, "coupon_code": {"type": "string"}, "category": {"type": "string"}, "in_stock": {"type": "boolean"}, "verified": {"type": "boolean"}, "price_checked_at_brt": {"type": "string"}, "price_disclaimer": {"type": "string"}, "url_oferta": {"type": "string", "format": "uri"}, "url_produto": {"type": "string", "format": "uri"}}}, "VaultCoupon": {"type": "object", "properties": {"code": {"type": "string"}, "platform": {"type": "string"}, "store_name": {"type": "string"}, "discount_text": {"type": "string"}, "min_purchase": {"type": "number"}, "cap_value": {"type": "number"}, "category_hint": {"type": "string"}, "url_loja": {"type": "string", "format": "uri"}}}, "DealsResponse": {"type": "object", "properties": {"ok": {"type": "boolean"}, "portal": {"type": "string"}, "disclosure": {"type": "string"}, "count": {"type": "integer"}, "ofertas_ativas": {"type": "integer"}, "deals": {"type": "array", "items": {"$ref": "#/components/schemas/PublicDeal"}}, "vault_coupons": {"type": "array", "items": {"$ref": "#/components/schemas/VaultCoupon"}}}}, "MatchCouponResponse": {"type": "object", "properties": {"ok": {"type": "boolean"}, "disclosure": {"type": "string"}, "query": {"type": "object", "properties": {"store": {"type": "string"}, "q": {"type": "string"}, "price": {"type": "number"}}}, "count": {"type": "integer"}, "results": {"type": "array", "items": {"type": "object"}}, "vault_coupons": {"type": "array", "items": {"$ref": "#/components/schemas/VaultCoupon"}}, "rule": {"type": "string"}, "combos": {"type": "array", "items": {"type": "object"}}}}, "SearchResponse": {"type": "object", "properties": {"results": {"type": "array", "items": {"$ref": "#/components/schemas/PublicDeal"}}, "total": {"type": "integer"}, "query": {"type": "string"}}}}}}