Pular para o conteúdo principal

Usuários

URL Base: https://channel.ozzieapp.com/v1


O objeto User

{
"object": "user",
"data": {
"id": "ozz_usr_01HX9KZMR4P5JQNBVT7YCW3DE",
"external_user_id": "usr_8821",
"name": "Maria Santos",
"email": "maria@example.com",
"language": "en",
"created_at": "2026-05-15T14:30:00Z"
}
}

POST /v1/users

Cria um novo usuário sob seu cliente de API.

Corpo da requisição

CampoTipoObrigatórioDescrição
external_user_idstringSimSeu ID de usuário interno (máx 100 caracteres). Não inclua o prefixo "external:" — esse prefixo é usado apenas em parâmetros de caminho.
namestringNãoNome de exibição
emailstringNãoEndereço de e-mail
phonestringNãoNúmero de telefone no formato E.164, ex.: "+5511999990000"
languagestringNão"en" | "pt" | "es" — padrão "en"
curl -X POST https://channel.ozzieapp.com/v1/users \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"external_user_id": "usr_8821",
"name": "Maria Santos",
"email": "maria@example.com",
"language": "en"
}'

Resposta (201 Created):

{
"object": "user",
"data": {
"id": "ozz_usr_01HX9KZMR4P5JQNBVT7YCW3DE",
"external_user_id": "usr_8821",
"name": "Maria Santos",
"email": "maria@example.com",
"language": "en",
"created_at": "2026-05-15T14:30:00Z"
}
}

Erros:

CódigoHTTPQuando
CONFLICT409Já existe um usuário com este external_user_id
VALIDATION_ERROR400Formato de e-mail inválido

GET /v1/users/:user_id

Recupera um usuário pelo UUID Ozzie ou por external:{external_user_id}.

# Por UUID Ozzie
curl https://channel.ozzieapp.com/v1/users/ozz_usr_01HX9KZMR4P5JQNBVT7YCW3DE \
-H "Authorization: Bearer YOUR_TOKEN"

# Por external_user_id
curl "https://channel.ozzieapp.com/v1/users/external:usr_8821" \
-H "Authorization: Bearer YOUR_TOKEN"

Resposta (200 OK):

{
"object": "user",
"data": {
"id": "ozz_usr_01HX9KZMR4P5JQNBVT7YCW3DE",
"external_user_id": "usr_8821",
"name": "Maria Santos",
"email": "maria@example.com",
"language": "en",
"created_at": "2026-05-15T14:30:00Z"
}
}

GET /v1/users/:user_id/profile

Retorna o perfil do canal para um usuário, incluindo o estágio de onboarding e as preferências de plano.

curl https://channel.ozzieapp.com/v1/users/external:usr_8821/profile \
-H "Authorization: Bearer YOUR_TOKEN"

Resposta (200 OK):

{
"object": "channel_user_profile",
"data": {
"core_user_id": "ozz_usr_01HX9KZMR4P5JQNBVT7YCW3DE",
"external_user_id": "usr_8821",
"onboarding_stage": "financial_intake",
"plan_speed": "moderate",
"created_at": "2026-05-16T14:30:00Z"
}
}

Valores de onboarding_stage:

ValorSignificado
financial_intakeO usuário ainda não enviou um intake financeiro
personalityIntake concluído; quiz de personalidade ainda não realizado
planPersonalidade pontuada; plano ainda não gerado
activeOnboarding concluído — usuário totalmente ativo

PATCH /v1/users/:user_id/onboarding/complete

Avança o estágio de onboarding do usuário de plan para active. Nenhum corpo de requisição é necessário. O endpoint é idempotente — chamá-lo quando o usuário já está active retorna a mesma resposta sem erro.

curl -X PATCH https://channel.ozzieapp.com/v1/users/external:usr_8821/onboarding/complete \
-H "Authorization: Bearer YOUR_TOKEN"

Resposta (200 OK):

{
"object": "onboarding_complete",
"data": {
"onboarding_stage": "active"
}
}

Erros:

CódigoHTTPQuando
NOT_FOUND404Usuário não existe
VALIDATION_ERROR400O usuário não está no estágio plan (e ainda não está active)