Skip to main content

List All Projects

Returns all projects with their relationships including estado, ubicacion, torres, and zonas sociales.

Response Fields

success
boolean
Indicates if the request was successful
data
array
Array of project objects
{
  "success": true,
  "data": [
    {
      "id_proyecto": 1,
      "nombre": "Torre del Sol",
      "descripcion": "Proyecto residencial de lujo",
      "fecha_inicio": "2024-01-15",
      "fecha_finalizacion": "2025-12-31",
      "presupuesto_inicial": "5000000000.00",
      "presupuesto_final": "5500000000.00",
      "metros_construidos": "15000.00",
      "cantidad_locales": 10,
      "cantidad_apartamentos": 120,
      "cantidad_parqueaderos_vehiculo": 150,
      "cantidad_parqueaderos_moto": 80,
      "estrato": 5,
      "numero_pisos": 20,
      "numero_torres": 2,
      "porcentaje_cuota_inicial_min": "30.00",
      "valor_min_separacion": "5000000.00",
      "plazo_cuota_inicial_meses": 12,
      "id_estado": 1,
      "id_ubicacion": 1,
      "estado_proyecto": {
        "id_estado": 1,
        "nombre": "En Construcción"
      },
      "ubicacion": {
        "id_ubicacion": 1,
        "direccion": "Calle 123 #45-67",
        "ciudad": {
          "nombre": "Bogotá"
        }
      },
      "torres": [],
      "zonasSociales": []
    }
  ]
}

Get Single Project

Retrieve detailed information about a specific project including all relationships.

Path Parameters

id
integer
required
The unique identifier of the project

Response

Returns project with expanded relationships: estado_proyecto, ubicacion (with nested city/department/country), torres (with pisos), zonasSociales, politicasPrecios, and politicasComisiones.
{
  "success": true,
  "data": {
    "id_proyecto": 1,
    "nombre": "Torre del Sol",
    "estado_proyecto": { "nombre": "En Construcción" },
    "ubicacion": {
      "direccion": "Calle 123 #45-67",
      "ciudad": {
        "nombre": "Bogotá",
        "departamento": {
          "nombre": "Cundinamarca",
          "pais": { "nombre": "Colombia" }
        }
      }
    },
    "torres": [
      {
        "id_torre": 1,
        "nombre_torre": "Torre A",
        "pisos": []
      }
    ],
    "zonasSociales": [],
    "politicasPrecios": [],
    "politicasComisiones": []
  }
}

Create Project

Create a new construction project.

Request Body

nombre
string
required
Project name (max 150 characters)
descripcion
string
Project description (max 500 characters)
fecha_inicio
date
Project start date
fecha_finalizacion
date
Project end date (must be >= fecha_inicio)
presupuesto_inicial
decimal
Initial budget (min: 0)
presupuesto_final
decimal
Final budget (min: 0)
metros_construidos
decimal
Total square meters to be built (min: 0)
cantidad_locales
integer
Total number of commercial spaces (min: 0)
cantidad_apartamentos
integer
Total number of apartments (min: 0)
cantidad_parqueaderos_vehiculo
integer
Total vehicle parking spaces (min: 0)
cantidad_parqueaderos_moto
integer
Total motorcycle parking spaces (min: 0)
estrato
integer
Socioeconomic stratum (1-6)
numero_pisos
integer
Number of floors (min: 1, max: 32767)
numero_torres
integer
Number of towers (min: 1, max: 32767)
porcentaje_cuota_inicial_min
decimal
Minimum down payment percentage (0-100)
valor_min_separacion
decimal
Minimum reservation amount (min: 0)
plazo_cuota_inicial_meses
integer
Down payment term in months (min: 1, max: 32767)
id_estado
integer
required
Project status ID (must exist in estados table)
id_ubicacion
integer
required
Location ID (must exist in ubicaciones table)
{
  "nombre": "Torre del Sol",
  "descripcion": "Proyecto residencial de lujo",
  "fecha_inicio": "2024-01-15",
  "fecha_finalizacion": "2025-12-31",
  "presupuesto_inicial": 5000000000.00,
  "cantidad_apartamentos": 120,
  "estrato": 5,
  "numero_pisos": 20,
  "numero_torres": 2,
  "porcentaje_cuota_inicial_min": 30.00,
  "valor_min_separacion": 5000000.00,
  "plazo_cuota_inicial_meses": 12,
  "id_estado": 1,
  "id_ubicacion": 1
}
{
  "success": true,
  "message": "Proyecto creado exitosamente",
  "data": {
    "id_proyecto": 1,
    "nombre": "Torre del Sol",
    "estado_proyecto": { "nombre": "En Construcción" },
    "ubicacion": { "direccion": "Calle 123 #45-67" }
  }
}

Update Project

Update an existing project. Validation rules are the same as creation.

Path Parameters

id
integer
required
The unique identifier of the project to update

Request Body

Same as Create Project endpoint.
{
  "success": true,
  "message": "Proyecto actualizado exitosamente",
  "data": {
    "id_proyecto": 1,
    "nombre": "Torre del Sol - Actualizado"
  }
}

Delete Project

Delete a project. Cannot delete if the project has associated towers.

Path Parameters

id
integer
required
The unique identifier of the project to delete
{
  "success": true,
  "message": "Proyecto eliminado exitosamente"
}
{
  "success": false,
  "message": "No se puede eliminar el proyecto porque tiene torres asociadas"
}

Get Projects by Status

Retrieve all projects filtered by status.

Path Parameters

id_estado
integer
required
The status ID to filter by

Get Projects by City

Retrieve all projects in a specific city.

Path Parameters

id_ciudad
integer
required
The city ID to filter by

Search Projects

Search projects by name (case-insensitive).

Query Parameters

termino
string
required
Search term (min 2 characters)
{
  "success": true,
  "data": [
    {
      "id_proyecto": 1,
      "nombre": "Torre del Sol",
      "estado_proyecto": { "nombre": "En Construcción" }
    }
  ]
}

Get Project Summary

Get a comprehensive summary of a project with aggregated statistics.

Path Parameters

id
integer
required
The project ID
{
  "success": true,
  "data": {
    "id_proyecto": 1,
    "nombre": "Torre del Sol",
    "descripcion": "Proyecto residencial de lujo",
    "estado": "En Construcción",
    "ubicacion": "Calle 123 #45-67, Bogotá",
    "fecha_inicio": "2024-01-15",
    "fecha_finalizacion": "2025-12-31",
    "presupuesto_inicial": "5000000000.00",
    "presupuesto_final": "5500000000.00",
    "metros_construidos": "15000.00",
    "estrato": 5,
    "inventario": {
      "locales": 10,
      "apartamentos": 120,
      "parqueaderos_vehiculo": 150,
      "parqueaderos_moto": 80
    },
    "estructura": {
      "numero_torres": 2,
      "torres_registradas": 2,
      "numero_pisos": 20,
      "zonas_sociales": 5
    },
    "financiacion": {
      "porcentaje_cuota_inicial_min": "30.00",
      "valor_min_separacion": "5000000.00",
      "plazo_cuota_inicial_meses": 12
    }
  }
}

Get Project Statistics

Get global statistics across all projects.
{
  "success": true,
  "data": {
    "total_proyectos": 25,
    "proyectos_por_estado": [
      {
        "estado": "En Construcción",
        "total": 10
      },
      {
        "estado": "Planificación",
        "total": 8
      },
      {
        "estado": "Completado",
        "total": 7
      }
    ],
    "presupuesto_total": "125000000000.00",
    "metros_totales_construidos": "375000.00",
    "total_apartamentos": 3000,
    "total_locales": 250
  }
}

Nested Resources

Projects serve as the parent resource for many nested endpoints:
  • GET /api/proyectos/{id_proyecto}/torres - Get all towers in a project
  • GET /api/proyectos/{id_proyecto}/apartamentos - Get all apartments in a project
  • GET /api/proyectos/{id_proyecto}/locales - Get all commercial spaces in a project
  • GET /api/proyectos/{id_proyecto}/zonas-sociales - Get all social areas in a project
  • GET /api/proyectos/{id_proyecto}/politicas-comision - Get commission policies for a project
  • GET /api/proyectos/{id_proyecto}/politicas-precio - Get pricing policies for a project
  • GET /api/proyectos/{id_proyecto}/apartamentos/estadisticas - Get apartment statistics
  • GET /api/proyectos/{id_proyecto}/apartamentos/disponibles - Get available apartments
  • GET /api/proyectos/{id_proyecto}/locales/estadisticas - Get commercial space statistics
  • GET /api/proyectos/{id_proyecto}/locales/disponibles - Get available commercial spaces

Build docs developers (and LLMs) love