HAVI Score — Onboarding y Perfiles
Estos endpoints crean y gestionan el perfil financiero de un comprador para calcular su HAVI Score.
Opción A — Onboarding completo en un paso
Crea el perfil completo con toda la información en una sola llamada.
http
POST /api/v1/onboarding/perfil
Content-Type: application/jsonBody:
json
{
"nombre": "Juan Pérez",
"email": "juan@email.com",
"telefono": "+52 55 1234 5678",
"ingresoMensual": 35000,
"gastosMensuales": 15000,
"deudas": 5000,
"empleoEstable": true,
"antiguedadLaboral": 36,
"presupuesto": {
"min": 1500000,
"max": 3000000
},
"tipoPropiedad": ["Departamento", "Casa"],
"ciudadInteres": "Ciudad de México",
"enganche": 300000
}Respuesta 201:
json
{
"status": "success",
"data": {
"perfilId": "uuid-perfil",
"haviScore": 715,
"scoreLabel": "Bueno",
"riskLevel": "moderate",
"creditoEstimado": 2100000,
"mensualidadEstimada": 18500,
"mensaje": "Tu perfil tiene buena capacidad de pago. Puedes calificar para propiedades de hasta $2,100,000 MXN.",
"propiedadesCompatibles": 38
}
}Opción B — Flujo en dos fases
Fase 1 — Crear perfil inicial
http
POST /api/v1/fase1/perfil
Content-Type: application/jsonBody:
json
{
"nombre": "Juan Pérez",
"email": "juan@email.com",
"telefono": "+52 55 1234 5678",
"presupuesto": {
"min": 1500000,
"max": 3000000
},
"ciudadInteres": "Ciudad de México"
}Respuesta 201:
json
{
"status": "success",
"data": {
"perfilId": "uuid-perfil",
"etapa": "fase1_completada",
"mensaje": "Perfil inicial creado. Continúa con la validación financiera."
}
}Fase 2 — Refinar perfil con datos financieros
http
POST /api/v1/fase2/validar/:perfilId
Content-Type: application/jsonBody:
json
{
"ingresoMensual": 35000,
"gastosMensuales": 15000,
"deudas": 5000,
"empleoEstable": true,
"antiguedadLaboral": 36,
"enganche": 300000,
"tipoPropiedad": ["Departamento"]
}Respuesta 200:
json
{
"status": "success",
"data": {
"perfilId": "uuid-perfil",
"haviScore": 715,
"scoreLabel": "Bueno",
"riskLevel": "moderate",
"creditoEstimado": 2100000,
"mensualidadEstimada": 18500,
"etapa": "calificado"
}
}Obtener perfil por ID
http
GET /api/v1/perfil/:perfilIdÚtil para compartir resultados o retomar un perfil existente.
Respuesta 200:
json
{
"status": "success",
"data": {
"perfilId": "uuid-perfil",
"nombre": "Juan Pérez",
"email": "juan@email.com",
"haviScore": 715,
"scoreLabel": "Bueno",
"riskLevel": "moderate",
"creditoEstimado": 2100000,
"etapa": "calificado",
"createdAt": "2026-05-13T10:00:00.000Z"
}
}Verificar si ya existe un perfil
Antes de crear un perfil nuevo, verifica si el email ya tiene uno:
http
POST /api/v1/perfil/verificar
Content-Type: application/json
{
"email": "juan@email.com"
}Respuesta si existe:
json
{
"status": "success",
"exists": true,
"data": {
"perfilId": "uuid-perfil",
"haviScore": 715,
"etapa": "calificado"
}
}Respuesta si no existe:
json
{
"status": "success",
"exists": false
}Reclamar prospecto (para agencias)
Requiere autenticación
Solo agency_admin autenticados.
http
POST /api/v1/prospectos/:perfilId/reclamar
Authorization: Bearer {token}Vincula el perfil del comprador como prospecto de tu agencia.
Listar prospectos de la agencia
http
GET /api/v1/prospectos
Authorization: Bearer {token del agency_admin}