Saltar al contenido principal

Usuarios

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


El 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

Crea un nuevo usuario bajo tu cliente de API.

Cuerpo de la solicitud

CampoTipoRequeridoDescripción
external_user_idstringTu ID de usuario interno (máx 100 caracteres). No incluyas el prefijo "external:" — ese prefijo solo se usa en los parámetros de ruta.
namestringNoNombre de visualización
emailstringNoDirección de correo electrónico
phonestringNoNúmero de teléfono en formato E.164, ej. "+5511999990000"
languagestringNo"en" | "pt" | "es" — por defecto "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"
}'

Respuesta (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"
}
}

Errores:

CódigoHTTPCuándo
CONFLICT409Ya existe un usuario con este external_user_id
VALIDATION_ERROR400Formato de correo electrónico inválido

GET /v1/users/:user_id

Recupera un usuario por UUID de Ozzie o por external:{external_user_id}.

# Por UUID de 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"

Respuesta (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

Devuelve el perfil del lado del canal para un usuario, incluyendo la etapa de onboarding y las preferencias del plan.

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

Respuesta (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_intakeEl usuario aún no ha enviado un intake financiero
personalityIntake completado; quiz de personalidad aún no realizado
planPersonalidad puntuada; plan aún no generado
activeOnboarding completo — el usuario está completamente activo

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

Avanza la etapa de onboarding del usuario de plan a active. No se requiere cuerpo de solicitud. El endpoint es idempotente — llamarlo cuando el usuario ya está active devuelve la misma respuesta sin error.

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

Respuesta (200 OK):

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

Errores:

CódigoHTTPCuándo
NOT_FOUND404El usuario no existe
VALIDATION_ERROR400El usuario no está en la etapa plan (y tampoco está ya en active)