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_xxxxxxxxxxxxxxxxxxxxRegistro de usuario
http
POST /api/auth/register
Content-Type: application/jsonBody:
json
{
"firstName": "Carlos",
"lastName": "Mendoza",
"email": "carlos@inmobiliaria.mx",
"password": "SecurePass123!",
"phone": "+52 55 1234 5678",
"role": "agency_admin"
}Roles disponibles:
| Rol | Descripción |
|---|---|
agency_admin | Administrador de agencia inmobiliaria |
agent | Agente inmobiliario (normalmente creado por la agencia) |
broker | Broker independiente |
developer | Desarrollador inmobiliario |
comprador | Usuario 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/jsonBody:
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/jsonBody (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/redirectRedirige al usuario a la pantalla de autorización de Google. Después del callback, recibirás el token en:
http
GET /api/auth/google/callbackRecuperació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!"
}