Pular para conteúdo

API: Onboarding

Visao Geral

Controle do fluxo de onboarding para novos administradores. Permite verificar se o usuario ja completou a configuracao inicial, marcar como concluido ou dispensar o wizard.

Os endpoints sao autenticados e operam sobre o usuario logado (sem parametros de ID).

Endpoints

GET /api/onboarding/status

Retorna o status atual do onboarding do usuario, incluindo indicadores de progresso.

Response (200 OK):

{
  "isAdmin": true,
  "hasAgents": false,
  "hasInstances": false,
  "hasConnectedInstance": false,
  "onboardingCompleted": false,
  "onboardingDismissed": false
}

Campos:

Campo Tipo Descricao
isAdmin bool Se o usuario tem role Admin
hasAgents bool Se o tenant possui pelo menos um agente
hasInstances bool Se o tenant possui pelo menos uma instancia
hasConnectedInstance bool Se existe uma instancia com status Connected
onboardingCompleted bool Se o usuario completou o onboarding
onboardingDismissed bool Se o usuario dispensou o onboarding

Comportamento: - Se onboardingCompleted ou onboardingDismissed for true, retorna early sem consultar agentes/instancias (otimizacao) - Usa AsNoTracking() para leitura (sem tracking de entidade) - Usa IgnoreQueryFilters() para buscar o usuario (bypassa filtro de tenant na tabela User)


POST /api/onboarding/complete

Marca o onboarding do usuario como concluido.

Request: Sem body.

Response (200 OK): Sem body.

Comportamento: - Define User.OnboardingCompleted = true via metodo de dominio CompleteOnboarding() - Usado tanto ao finalizar o wizard quanto ao pular ("Skip")


POST /api/onboarding/dismiss

Dispensa o onboarding do usuario (oculta checklist no dashboard).

Request: Sem body.

Response (200 OK): Sem body.

Comportamento: - Define User.OnboardingDismissed = true via metodo de dominio DismissOnboarding() - Usado pelo botao "Ocultar checklist" no dashboard


Erros Comuns

Status Codigo Descricao
401 UNAUTHORIZED Token JWT ausente ou invalido
404 USER_NOT_FOUND Usuario autenticado nao encontrado no banco

Fluxo de Onboarding

Login (Admin) → MainLayout verifica status
                    ├── OnboardingCompleted/Dismissed → Dashboard normal
                    ├── !HasAgents → Redireciona para /onboarding (wizard)
                    └── HasAgents → Dashboard com SetupChecklist

Wizard /onboarding:
    Passo 0: Boas-vindas
    Passo 1: Criar agente (POST /api/agents)
    Passo 2: Criar instancia (POST /api/instances)
    Passo 3: Conectar WhatsApp (POST /api/instances/{id}/connect + polling GET /status)
    Passo 4: Sucesso → POST /api/onboarding/complete

Dashboard:
    SetupChecklist exibe progresso (HasAgents, HasInstances, HasConnectedInstance)
    Auto-complete quando todos os 3 criterios sao atendidos
    Botao "Ocultar" → POST /api/onboarding/dismiss

Cache (Frontend)

O frontend usa LocalStorage com a chave onboardingChecked para evitar chamadas repetidas ao endpoint de status. O cache e limpo no logout (AuthService.LogoutAsync).