API - Relaciones Propiedad-Usuario
Visión General
Endpoints para gestionar las relaciones entre usuarios y propiedades. Define quién es propietario, inquilino, administrador o agente de cada propiedad.
GET /property-relations/all
Obtener todas las relaciones propiedad-usuario.
Response Success (200)
{
"success": true,
"data": [
{
"id": 1,
"property": {
"id": 25,
"title": "Apartamento Moderno",
"city": "Medellín"
},
"user": {
"id": 124,
"name": "María García",
"email": "maria@email.com"
},
"relation_type": "owner",
"start_date": "2024-01-15",
"end_date": null,
"active": true
}
],
"count": 12
}
GET /property-relations/by-user
Obtener relaciones por usuario.
Query Parameters
user_id: ID del usuario
Response Success (200)
{
"success": true,
"data": [
{
"id": 1,
"property_id": 25,
"property_title": "Apartamento Moderno",
"relation_type": "owner",
"start_date": "2024-01-15",
"active": true
}
]
}
POST /property-relation/create
Crear nueva relación propiedad-usuario.
Request
{
"property_id": 25,
"user_id": 124,
"relation_type": "tenant",
"start_date": "2024-03-01",
"end_date": "2025-03-01"
}
Response Success (201)
{
"success": true,
"message": "Relación creada exitosamente",
"data": {
"id": 15,
"property_id": 25,
"user_id": 124,
"relation_type": "tenant"
}
}
PUT /property-relation/edit
Editar relación existente.
Request
{
"relation_id": 15,
"end_date": "2025-06-01",
"active": true
}
Response Success (200)
{
"success": true,
"message": "Relación actualizada exitosamente"
}
DELETE /property-relation/delete
Eliminar relación.
Request
{
"relation_id": 15
}
Response Success (200)
{
"success": true,
"message": "Relación eliminada exitosamente"
}
GET /property-relation/stats
Obtener estadísticas de relaciones.
Response Success (200)
{
"success": true,
"data": {
"total_relations": 45,
"active_relations": 38,
"by_type": {
"owner": 15,
"tenant": 20,
"manager": 8,
"agent": 2
},
"properties_with_multiple_relations": 12,
"users_with_multiple_properties": 8
}
}
GET /property-relation/by-id
Obtener relación por ID.
Query Parameters
relation_id: ID de la relación
Response Success (200)
{
"success": true,
"data": {
"id": 15,
"property": {
"id": 25,
"title": "Apartamento Moderno",
"address": "Carrera 15 #67-89",
"city": "Medellín",
"price": 900000
},
"user": {
"id": 124,
"name": "María García",
"email": "maria@email.com",
"phone": "+57 320 987 6543"
},
"relation_type": "tenant",
"start_date": "2024-03-01",
"end_date": "2025-03-01",
"active": true,
"created_at": "2024-02-15T10:00:00Z"
}
}
Tipos de Relación
owner
- Descripción: Propietario de la propiedad
- Permisos: Control total sobre la propiedad
- Características:
- Puede crear contratos
- Puede modificar información de la propiedad
- Recibe pagos de arriendo
tenant
- Descripción: Inquilino/Arrendatario
- Permisos: Acceso de lectura a información de la propiedad
- Características:
- Puede ver detalles del contrato
- Puede realizar pagos
- Puede solicitar mantenimiento
manager
- Descripción: Administrador de la propiedad
- Permisos: Gestión operativa de la propiedad
- Características:
- Puede gestionar inquilinos
- Puede supervisar mantenimiento
- Puede generar reportes
agent
- Descripción: Agente inmobiliario
- Permisos: Gestión comercial de la propiedad
- Características:
- Puede mostrar la propiedad
- Puede gestionar prospectos
- Puede crear pre-contratos
Validaciones
Reglas de Negocio
- Una propiedad puede tener solo un propietario activo
- Una propiedad puede tener múltiples inquilinos (en diferentes periodos)
- Las fechas de inicio no pueden ser futuras para relaciones activas
- Las fechas de fin deben ser posteriores a las de inicio
- No puede haber solapamiento de inquilinos en la misma propiedad
Campos Requeridos
property_id(requerido)user_id(requerido)relation_type(requerido)start_date(requerido)end_date(opcional, null = indefinido)
Estados
active: true: Relación vigenteactive: false: Relación terminada o inactiva