Eden · mapa de rotas

LUA Vision · dev.eden.lua.vision

Rotas & Endpoints
do Eden

O mapa completo do app: páginas, API /v1 e autenticação — extraído dos bundles do client e com corpos, params e headers conferidos na própria API.

40rotas de página
121endpoints mapeados
4hosts
09·10·2026atualizado em
corpo {campos} · campo? = opcional · filtra na hora
Nada encontrado por aqui. Tenta outra palavra?
00

Hosts

dev.eden.lua.vision

O app — Next.js (Turbopack). Telas, fluxo do chaveiro e painéis.

api.dev.eden.lua.vision

A API — /v1/*, /api/auth/* e /api/health (respondendo {"ok":true}).

convidados.eden.lua.vision

Redireciona (307) para dev.eden.lua.vision/chaveiro/[n] — mesmo backend.

lua.vision

Site institucional — termos e privacidade.

01

Páginas do app

Fluxo do chaveiro NFC

  • rota/chaveiro/[numero]Validação — lê o #k do fragmento e chama POST /chaveiro/abrir.
  • rota/chaveiro/gravarEstação de gravação (Web NFC, Chrome Android) — exige sessão de dono com passkey.
  • rota/chaveirosPainel admin dos chaveiros: liberar, mudar dias, CSV.

Navegação principal

  • rota/Home — atividades.
  • rota/painelIndicadores.
  • rota/painel/estimativasEstimado × real.
  • rota/aprovacoesCartões de aprovação pendentes.
  • rota/chatConversa — respostas em streaming (SSE).
  • rota/chat/[conversa]Conversa aberta.
  • rota/catalogoCatálogo de ferramentas.
  • rota/catalogo/[ferramenta]Detalhe da ferramenta.
  • rota/catalogo/funilFunil do catálogo.
  • rota/rotinasRotinas / agentes em execução.
  • rota/rotinas/[id]Rotina aberta.
  • rota/agentesBiblioteca de agentes.
  • rota/agentes/[id]Agente aberto.
  • rota/codigoCódigo.
  • rota/codigo/gitGit da empresa.
  • rota/codigo/padroesPadrões de código aprendidos.
  • rota/integracoesConexões e integrações.
  • rota/integracoes/whatsappPareamento do seu número — "Ligue o seu WhatsApp".
  • rota/trilhaTrilha (auditoria).
  • rota/conhecimentoBase de conhecimento.
  • rota/constituicaoConstituição da organização.
  • rota/descobertaDescoberta.
  • rota/comece-aquiOnboarding.
  • rota/cobrancaCobrança.
  • rota/designPolítica de design.
  • rota/segurancaSegurança.
  • rota/appsApps.
  • rota/apps/[id]App aberto.
  • rota/anjosAnjos.
  • rota/desktopDesktop.

Admin

  • rota/admin/equipeEquipe — membros e convites.
  • rota/admin/ganchosGanchos de evento (webhooks).
  • rota/admin/relatosRelatos da equipe.
  • rota/admin/migracaoMigração assistida.

Conta & sessão

  • rota/entrarLogin — e-mail e senha, link por e-mail, passkey.
  • rota/definir-senhaPágina do link de senha — define a primeira senha ou redefine (30 min, uso único).
  • rota/preferenciasPasskey, senha, avisos, ganchos, variantes.
02

API pública do chaveiro

sem sessão — só o que o chip precisa
  • post/chaveiro/abrirResponde o estado do chaveiro; 404 chaveiro-nao-reconhecido para par inválido, com rate limit (429).corpo{numero, k}
  • post/chaveiro/reservarReserva o chaveiro para um cadastro novo.corpo{numero, k, nome, email, modo: "solo"|"empresa", aceite: true}
  • get/api/healthHealth check — {"ok":true}.
03

API /v1 — sessão autenticada

mutações mandam Idempotency-Key (UUID)

Chaveiros — sessão

  • post/v1/chaveiros/entrarEntra num chaveiro com passkey.corpo{numero, k}
  • post/v1/chaveiros/confirmarConclui o cadastro.corpo{numero}
  • post/v1/chaveiros/vincularVincula o chaveiro à conta.corpo{numero, k, modo: "solo"|"empresa"}
  • post/v1/chaveiros/aprovarAprovações pelo chaveiro (quem tem o chip na mão).corpo{numero, k, approval_id}

Chaveiros — admin (dono)

  • get/v1/chaveiros/adminLista todos os chaveiros.
  • get/v1/chaveiros/admin/csvCSV com links para gravar em lote.
  • patch/v1/chaveiros/admin/configConfigurações globais.corpo{ativacao_em?, dias_gratis?}
  • patch/v1/chaveiros/admin/{n}Muda os dias grátis (null volta ao padrão).corpo{dias_gratis}
  • post/v1/chaveiros/admin/liberarLibera acesso de todos os reservados.corpo{}
  • post/v1/chaveiros/admin/{n}/gravarDevolve o link com #k para gravar no chip.corpo{tipo_chip}
  • post/v1/chaveiros/admin/{n}/conferirConfere o que foi gravado no chip.corpo{link}
  • post/v1/chaveiros/admin/{n}/falhaRegistra falha de gravação.corpo{motivo}
  • post/v1/chaveiros/admin/{n}/ativarAtiva o chaveiro.corpo{}

Atividades & execução

  • get/v1/activitiesLista as atividades do espaço.params?space=&state=
  • post/v1/activitiesCria uma atividade — o Idempotency-Key é obrigatório.corpo{space_id, text, fluxo: "revisao"|"conversa"}
  • get/v1/activities/{id}Detalhe.
  • get/v1/activities/{id}/verdicts · /cost · /evidence · /timeVereditos, custo, evidências e passos.
  • post/v1/activities/{id}/retomarRetoma a execução.corpo{}
  • post/v1/activities/{id}/stopPara a execução (o painel pode mandar {pausar: true}).
  • post/v1/activities/{id}/review:accept · review:answer · review:rejectDecisões da revisão (aceitar, responder, rejeitar).
  • post/v1/activities/{id}/budget:decideDecide o orçamento da atividade.corpo{decisao}
  • post/v1/activities/{id}/divergence:decideResolve divergência.corpo{decisao, …}
  • sse/v1/activities/{id}/eventsStream de eventos (EventSource).
  • get/v1/calibrationCalibração da semana.params?week=
  • get/v1/cost/ledgerLivro de custos.

Aprovações & orçamentos

  • get/v1/approvalsCartões de aprovação.params?estado=abertas…
  • get/v1/approvals/{id}Detalhe + decisões + ação.
  • post/v1/approvals/{id}/decideDecide a aprovação (corpo com a decisão, montado pela UI).
  • post/v1/budgetsNo client, mas 404 na API dev no momento do levantamento — ainda não no ar.
  • post/v1/budgets/{id}:killIdem: presente no client, 404 no dev.

Chat & voz

  • getpost/v1/chat/conversasLista / cria conversa — pode já mandar a primeira mensagem.corpo{primeiro_texto?}
  • getpatch/v1/chat/conversas/{id}Abre (detalhe traz conversation, messages, files, shares, activity) e altera a conversa.
  • post/v1/chat/conversas/{id}/mensagensEnvia mensagem — devolve 202 e a resposta é gerada no stream.corpo{text, anexos?}
  • sse/v1/chat/conversas/{id}/streamEventos turno.iniciado / mensagem.pronta (+ ping) — retoma com Last-Event-ID.
  • get/v1/chat/exemplosSugestões de pergunta para o chat.params?area=
  • post/v1/chat/conversas/{id}/atividadeVira atividade (revisão ou conversa).corpo{mensagem_id?, mode}
  • getpost/v1/chat/conversas/{id}/anexosAnexos da conversa.
  • get/v1/chat/anexos/{id} · /v1/chat/arquivos/{id}Baixa anexo / arquivo.
  • post/v1/chat/conversas/{id}/compartilharCompartilha a conversa (corpo montado pela UI).
  • post/v1/chat/compartilhamentos/{id}/revogarRevoga o compartilhamento.corpo{}
  • getpostpatch/v1/chat/projetosLista, cria e altera projetos.corpo{space_id, name} (criar)
  • getpost/v1/chat/fontesFontes do chat — vira fonte ou nota do conhecimento.corpo{kind: "fonte"|"nota", title, content}
  • post/v1/chat/fontes/{id}/retirarRetira a fonte.corpo{}
  • post/v1/chat/memoria/{id}/esquecerEsquece um item de memória do chat.
  • post/v1/chat/voz/falarFala uma mensagem (TTS).corpo{mensagem_id}
  • post/v1/chat/voz/transcreverTranscreve áudio.corpo{audio}

F6 · F7 · F10

  • get/v1/f6/funilFunil do catálogo.
  • get/v1/f6/funil/delegacoesDelegações do funil.
  • post/v1/f6/funil/delegacoes/{id}/revogarRevoga a delegação.corpo{motivo}
  • getput/v1/f6/politicasPolíticas por espaço.corpo{space_id, politica} (put)
  • post/v1/f6/varrerVarredura do funil.
  • get/v1/f6/custosCustos do funil.params?mes=&formato=csv
  • get/v1/f7/o-que-a-empresa-veVisão da empresa.
  • getpatch/v1/f7/preferenciasMande ao menos um campo.corpo{trilha?, area?, guia_visto?, aviso_aceito?}
  • get/v1/f10/estruturasEstruturas (criadas por conversa, não por POST direto).
  • post/v1/f10/estruturas/conversaCria a estrutura a partir de um texto.corpo{space_id, texto}
  • post/v1/f10/estruturas/{id}/conversa · /rotinaAjusta por conversa ou liga uma rotina.corpo{texto} · {rotina_id}
  • get/v1/f10/linha-base · /v1/f10/pessoasLinha de base e pessoas.
  • getpost/v1/f10/objetivosObjetivos; abrir um chama /{id}/ler.corpo{titulo, space_id, …} (criar)
  • get/v1/f10/indicadores · /v1/f10/estimativasIndicadores e estimativas.params?filtro=empresa|area|pessoa&id=&dias= · ?agrupar=&dias=
  • post/v1/f10/leituras/{id}/decidirDecide a leitura.corpo{decisao: "confirmar"|"devolver", motivo}
  • get/v1/indicadores/qualidadeQualidade dos indicadores.params?dias=

F11 — WhatsApp

  • get/v1/f11/whatsappStatus do WhatsApp do Eden — números, vínculos, fila, grupos, admin e config.
  • post/v1/f11/whatsapp/pessoalInicia o pareamento do seu número (sem corpo). Sem vaga livre responde 409 sem-numero-livre — "peça à LUA para liberar mais uma".

Equipe · organizações · times

  • get/v1/equipe/membrosMembros da organização.
  • post/v1/equipe/convitesConvida alguém.corpo{email, name, role: "admin"|"construtor"|"negocio"|"dev"|"aprovador"|"auditor"}
  • post/v1/equipe/membros/{id}/senhaAdmin redefine a senha de um membro (opcionalmente já definindo uma).corpo{senha} opcional
  • getpost/v1/equipe/relatosRelatos da equipe.corpo{rota, o_que_tentou, o_que_aconteceu} · ?estado=
  • patch/v1/equipe/relatos/{id}Muda o estado do relato.
  • get/v1/orgs/{org}/spacesEspaços da organização.
  • getput/v1/orgs/{org}/constitutionConstituição; /constitution/versions traz versões.
  • getput/v1/orgs/{org}/approval-limitsLimites de aprovação.
  • get/v1/timesTimes.
  • post/v1/spaces/{id}/times/dev/ativarAtiva o time de dev do espaço.corpo{}
  • get/v1/meSessão atual — usuário, orgs (com papel) e default_org.
  • patch/v1/me/preferencesMande ao menos um campo.corpo{appearance?, density?}
  • post/v1/me/organizacao-pessoalCria a organização pessoal.corpo{}

Integrações & conexões

  • get/v1/connectorsConectores disponíveis.
  • get/v1/connectionsConexões ativas.
  • post/v1/connections/oauth:startInicia OAuth — devolve authorize_url.corpo{provider: "google"|"microsoft"|"slack", capabilities: []}
  • get/v1/connections/{id}/read · /sends · /trailLeituras, envios e trilha da conexão.
  • post/v1/connections/{id}/sendsPede um envio pela conexão.
  • post/v1/connections/{id}/revokeRevoga a conexão.corpo{}
  • post/v1/integration-actions/{id}/sendReenvia uma ação de integração.corpo{}
  • post/v1/channels/slack/link-codeVincula Slack — gera o código.corpo{}
  • get/v1/channels/slack/linksLinks do Slack.

Ganchos & webhooks

  • get/v1/hooks/catalogoCatálogo de eventos.
  • getput/v1/hooks/politicaPolítica de ganchos da organização.
  • getpost/v1/hooks/webhooksLista / cria webhook (retorna o segredo).corpo{nome, url, eventos?, escopo: "pessoa"|"organizacao"}
  • post/v1/hooks/webhooks/{id}/desligarDesliga o webhook.corpo{}
  • get/v1/hooks/webhooks/{id}/entregasEntregas do webhook.
  • post/v1/hooks/entregas/{id}/reentregarReentrega um evento.corpo{}

Código

  • get/v1/code/projectsProjetos de código.
  • post/v1/code/projects/{id}/aprenderAprende com um projeto.corpo{}
  • get/v1/code/padroes-aprendidosPadrões aprendidos.params?project_id=
  • post/v1/code/padroes-aprendidos/{id}/aceitar · /descartarDecide o padrão (409 se já decidido).corpo{}

Avisos · memória · busca

  • get/v1/avisos/config · /v1/avisos/preferenciasCanais e preferências — push (chave VAPID) e WhatsApp (disponivel/motivo).
  • post/v1/avisos/pushAssina push; /push/encerrar encerra.
  • getpost/v1/eu/memoriaMemória pessoal — lista e adiciona fatos.corpo{fato, categoria}
  • patchdel/v1/eu/memoria/{id}Corrige (PATCH {fato, categoria}) ou apaga um fato; /esquecer marca como esquecido.
  • del/v1/eu/memoria?confirmo=apagar-tudoApaga toda a memória pessoal.
  • get/v1/busca · /v1/busca/fontesBusca e fontes.

Outros

  • get/v1/lua/limitesLimites do Eden.
  • get/v1/audit/verifyVerificação da trilha.
  • getpost/v1/anjosAnjos; /{id}/execucoes traz execuções, /{id}/{acao} controla (pausar, rodar…).corpo{project_id, tipo: "revisar_prs"|"atualizar_dependencias"|"vigiar_seguranca"} (criar)
04

Autenticação — Better Auth

cookies de sessão · /api/auth/*

Core

  • post/api/auth/sign-in/emailEntra com senha — devolve sessão (cookie) e abre o app.corpo{email, password, callbackURL?}
  • post/api/auth/sign-up/emailCria a conta.corpo{name, email, password}
  • post/api/auth/sign-in/magic-linkLink mágico de entrada (10 min, uso único). Responde {"status":true} para qualquer e-mail (anti-enumeração).corpo{email, callbackURL?}
  • post/api/auth/request-password-resetO "Esqueci / definir minha senha" — link de uso único (30 min) que abre /definir-senha. Serve para a primeira senha e para redefinir.corpo{email, redirectTo}
  • post/api/auth/reset-passwordGrava a senha nova a partir do token do link.corpo{newPassword, token}
  • post/api/auth/change-passwordTroca de senha logado — a UI fica em /preferencias. Exige a senha atual.corpo{currentPassword, newPassword, revokeOtherSessions?}
  • get/api/auth/list-accountsContas vinculadas à pessoa.
  • post/api/auth/sign-out · /update-user · /update-sessionEncerra a sessão e atualiza dados/sessão.
  • post/api/auth/change-email · /verify-emailTroca e verifica o e-mail.
  • post/api/auth/revoke-session · /revoke-sessions · /revoke-other-sessions · /delete-userRevoga sessões e exclui a conta. /get-session (GET) lê a sessão.

Passkey (WebAuthn)

  • post/api/auth/passkey/generate-register-options → verify-registration → registerCadastro de passkey — cria no aparelho (Face ID / Touch ID).
  • post/api/auth/passkey/generate-authenticate-options → verify-authentication → authenticateEntrada com passkey.
  • getpost/api/auth/passkey/list-user-passkeys · /delete-passkey · /update-passkeyGestão das passkeys da conta.
05

Notas de levantamento

Fonte: bundles do client (Next.js · Turbopack) de dev.eden.lua.vision, validação real na API (os erros listam campos obrigatórios e enums) e uma captura de tráfego real do app (09/10, 11:49–11:55).
Convenções: {campo?} = opcional · {campo: "a"|"b"} = valores aceitos · {} = corpo vazio aceito. Métodos explícitos vêm do client; onde o corpo aparece como "montado pela UI", não há schema fixo.
Headers: confirmado no tráfego real do app — x-eden-org (id da organização) em toda chamada e Idempotency-Key (UUID) nas mutações (obrigatório em POST /v1/activities). O CORS libera content-type, idempotency-key, x-eden-org, last-event-id, x-request-id — o last-event-id é para retomar os streams SSE.
Ainda não no ar (dev): /v1/budgets (GET e POST) e /v1/budgets/{id}:kill respondem 404 — estão no client, mas fora da API no momento do levantamento. /api/auth/forget-password também não existe: o caminho real é request-password-reset.
Chaveiro: o segredo k vive no fragmento do link (#k=…) e nunca chega ao servidor por URL — a API pública só expõe abrir e reservar, com rate limit.
Escopo: documento informal de navegação do código — sem tokens, senhas ou dados sensíveis. Corpos conferidos em 09/10/2026.