{"servico":"Central de Dados de Ofertas","versao":"0.1.0","autenticacao":{"tipo":"Bearer","cabecalho":"Authorization: Bearer <token>","como_obter":"peça ao dono da Central: ele roda o wizard na VPS (`docker compose exec api python -m central.seguranca.wizard_consumidor`), escolhe o dono e os escopos, e o token aparece UMA vez — não é recuperável","escopos_conhecidos":["links:converter","painel:ler"]},"comece_por":"/v1/prontidao","documentacao":"/docs","endpoints":[{"caminho":"/v1","metodos":["GET"],"exige_token":false,"escopo":null,"para_que":"este mapa: o que a Central serve, com que escopo e com que parâmetros","observacao":null,"parametros":[]},{"caminho":"/v1/links/converter","metodos":["GET"],"exige_token":true,"escopo":"links:converter","para_que":"URL de produto + projeto → link de afiliado do dono daquele projeto, já verificado como comissionável","observacao":"recusa vem com HTTP 200 e `recusa` preenchido — recusa é resposta normal, e 4xx empurraria quem chama para um `except` genérico, que é como recusa vira sumiço","parametros":[{"nome":"url","obrigatorio":true,"para_que":"URL de origem do produto, na loja"},{"nome":"projeto","obrigatorio":true,"para_que":"slug do projeto que vai publicar (tem de ser seu)"},{"nome":"canal","obrigatorio":true,"para_que":"canal de publicação: telegram, site, ..."}]},{"caminho":"/v1/painel/estado","metodos":["GET"],"exige_token":true,"escopo":"painel:ler","para_que":"a fotografia inteira da Central agora — contagens, fontes, credenciais, consumidores e a lista de alarmes já julgada","observacao":"é o que a tela `/painel` lê de 5 em 5 segundos; escopo próprio porque um braço que converte link não deve enxergar as credenciais de todos os donos","parametros":[]},{"caminho":"/v1/prontidao","metodos":["GET"],"exige_token":true,"escopo":null,"para_que":"o que falta para este consumidor funcionar, por projeto e por rede, com a pendência dita na voz de quem resolve (dono ou Central)","observacao":"exige token, mas nenhum escopo — todo consumidor pode perguntar de si","parametros":[]},{"caminho":"/v1/quem-sou-eu","metodos":["GET"],"exige_token":true,"escopo":null,"para_que":"confere token e escopo ANTES de integrar qualquer coisa, para que erro de autenticação não seja confundido com erro da chamada de verdade","observacao":null,"parametros":[]},{"caminho":"/v1/saude","metodos":["GET"],"exige_token":false,"escopo":null,"para_que":"monitoramento: 200 quando banco e Redis respondem, 503 quando não","observacao":"aberto de propósito — é o que o Docker e o monitor externo chamam","parametros":[]}]}