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).