Skip to content

Autenticación

La API usa Bearer Tokens (JWT) para autenticar las peticiones protegidas. Obtén tu token con POST /api/auth/login e inclúyelo en el header Authorization de cada solicitud.

Authorization: Bearer oat_xxxxxxxxxxxxxxxxxxxx

Registro de usuario

http
POST /api/auth/register
Content-Type: application/json

Body:

json
{
  "firstName": "Carlos",
  "lastName": "Mendoza",
  "email": "carlos@inmobiliaria.mx",
  "password": "SecurePass123!",
  "phone": "+52 55 1234 5678",
  "role": "agency_admin"
}

Roles disponibles:

RolDescripción
agency_adminAdministrador de agencia inmobiliaria
agentAgente inmobiliario (normalmente creado por la agencia)
brokerBroker independiente
developerDesarrollador inmobiliario
compradorUsuario comprador / cliente final

Respuesta 201:

json
{
  "status": "success",
  "data": {
    "token": "oat_xxxxxxxxxxxxxxxxxxxx",
    "user": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "firstName": "Carlos",
      "lastName": "Mendoza",
      "email": "carlos@inmobiliaria.mx",
      "role": "agency_admin",
      "status": "active"
    }
  }
}

Login

http
POST /api/auth/login
Content-Type: application/json

Body:

json
{
  "email": "carlos@inmobiliaria.mx",
  "password": "SecurePass123!"
}

Respuesta 200:

json
{
  "status": "success",
  "data": {
    "token": "oat_xxxxxxxxxxxxxxxxxxxx",
    "user": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "firstName": "Carlos",
      "lastName": "Mendoza",
      "email": "carlos@inmobiliaria.mx",
      "role": "agency_admin"
    }
  }
}

Obtener perfil del usuario autenticado

http
GET /api/auth/me
Authorization: Bearer {token}

Respuesta 200:

json
{
  "status": "success",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "firstName": "Carlos",
    "lastName": "Mendoza",
    "email": "carlos@inmobiliaria.mx",
    "role": "agency_admin",
    "phone": "+52 55 1234 5678",
    "createdAt": "2026-05-13T10:00:00.000Z"
  }
}

Actualizar perfil

http
PUT /api/auth/profile
Authorization: Bearer {token}
Content-Type: application/json

Body (todos los campos son opcionales):

json
{
  "firstName": "Carlos",
  "lastName": "Mendoza López",
  "phone": "+52 55 9999 0000",
  "companyName": "Inmobiliaria Centro MX"
}

Logout

http
POST /api/auth/logout
Authorization: Bearer {token}

Respuesta 200:

json
{
  "status": "success",
  "message": "Logged out successfully"
}

Verificación de email

Después del registro, el usuario recibe un correo con un enlace de verificación. También puedes reenviar el correo:

http
POST /api/auth/resend-verification
Content-Type: application/json

{
  "email": "carlos@inmobiliaria.mx"
}

OAuth — Login con Google

http
GET /api/auth/google/redirect

Redirige al usuario a la pantalla de autorización de Google. Después del callback, recibirás el token en:

http
GET /api/auth/google/callback

Recuperación de contraseña

Solicitar reset:

http
POST /api/auth/forgot-password
Content-Type: application/json

{
  "email": "carlos@inmobiliaria.mx"
}

Confirmar nuevo password:

http
POST /api/auth/reset-password
Content-Type: application/json

{
  "token": "reset_token_del_correo",
  "password": "NuevoPass456!"
}

HAVI API · Documentación Oficial