Skip to main content

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 vigente
  • active: false: Relación terminada o inactiva