API - Gestión de Contratos
Visión General
Endpoints para la gestión completa de contratos de arrendamiento, incluyendo creación, firmas digitales y seguimiento del ciclo de vida de los contratos.
GET /contracts/all
Obtener lista de contratos.
Query Parameters
status: Estado del contrato (draft, pending, active, expired, terminated)user_id: Filtrar por usuarioproperty_id: Filtrar por propiedad
Response Success (200)
{
"success": true,
"data": [
{
"id": 1,
"property": {
"id": 25,
"title": "Apartamento Moderno",
"address": "Carrera 15 #67-89"
},
"landlord": {
"id": 100,
"name": "Juan Pérez"
},
"tenant": {
"id": 124,
"name": "María García"
},
"contract_type": "residential",
"status": "active",
"start_date": "2024-03-01",
"end_date": "2025-03-01",
"monthly_rent": 900000,
"deposit": 900000,
"signing_date": "2024-02-20T14:30:00Z",
"contract_hash": "a1b2c3d4e5f6...",
"signatures_completed": true
}
],
"count": 8
}
POST /contract/create
Crear nuevo contrato.
Request
{
"property_id": 25,
"landlord_id": 100,
"tenant_id": 124,
"guarantor_id": null,
"contract_type": "residential",
"start_date": "2024-03-01",
"end_date": "2025-03-01",
"monthly_rent": 900000,
"deposit": 900000,
"payment_day": 5,
"annual_increase": 4.5,
"contract_text": "CONTRATO DE ARRENDAMIENTO...",
"terms_and_conditions": "1. El arrendatario se compromete...",
"special_clauses": "Cláusula especial sobre mascotas..."
}
Response Success (201)
{
"success": true,
"message": "Contrato creado exitosamente",
"data": {
"id": 15,
"contract_hash": "a1b2c3d4e5f6...",
"status": "draft",
"signature_urls": {
"landlord": "https://app.alojaplus.com/sign/landlord/xyz123",
"tenant": "https://app.alojaplus.com/sign/tenant/abc456"
}
}
}
GET /contract/get
Obtener detalles de un contrato específico.
Query Parameters
contract_id: ID del contrato
Response Success (200)
{
"success": true,
"data": {
"id": 15,
"property": {
"id": 25,
"title": "Apartamento Moderno",
"address": "Carrera 15 #67-89",
"city": "Medellín"
},
"landlord": {
"id": 100,
"name": "Juan Pérez",
"email": "juan@email.com",
"phone": "+57 310 123 4567"
},
"tenant": {
"id": 124,
"name": "María García",
"email": "maria@email.com",
"phone": "+57 320 987 6543"
},
"contract_type": "residential",
"status": "active",
"start_date": "2024-03-01",
"end_date": "2025-03-01",
"monthly_rent": 900000,
"deposit": 900000,
"payment_day": 5,
"contract_text": "CONTRATO DE ARRENDAMIENTO...",
"signatures": [
{
"signer_id": 100,
"signer_name": "Juan Pérez",
"signed_at": "2024-02-20T14:30:00Z",
"signature_hash": "hash_landlord"
},
{
"signer_id": 124,
"signer_name": "María García",
"signed_at": "2024-02-20T16:45:00Z",
"signature_hash": "hash_tenant"
}
],
"contract_hash": "a1b2c3d4e5f6...",
"created_at": "2024-02-15T10:00:00Z"
}
}
Firmas Digitales
Proceso de Firma
- Creación: El contrato se crea en estado
draft - Envío: Se envían enlaces únicos por email a cada firmante
- Firma: Los usuarios firman digitalmente usando canvas/touchpad
- Validación: Se genera hash único de seguridad para cada firma
- Activación: El contrato se activa automáticamente cuando todas las partes han firmado
Seguridad de Firmas
- Hash SHA-256 único por firma
- Timestamp de firma
- IP address del firmante
- User agent del navegador
- Validación de integridad del documento
Estados de Contrato
- draft: Borrador - En creación
- pending: Pendiente - Esperando firmas
- active: Activo - Firmado y vigente
- expired: Vencido - Fecha de fin alcanzada
- terminated: Terminado - Finalizado antes de tiempo
Tipos de Contrato
- residential: Residencial - Para vivienda
- commercial: Comercial - Para negocios
Campos Requeridos
Información Básica
- property_id (requerido)
- landlord_id (requerido)
- tenant_id (requerido)
- contract_type (requerido)
- start_date (requerido)
- end_date (requerido)
Información Financiera
- monthly_rent (requerido)
- deposit (requerido)
- payment_day (1-31, default: 1)
- annual_increase (porcentaje, opcional)
Información Legal
- contract_text (requerido)
- terms_and_conditions (requerido)
- special_clauses (opcional)