Skip to main content

List All Towers

Returns all towers with their relationships including proyecto, estado, pisos, and apartamentos.

Response Fields

success
boolean
Indicates if the request was successful
data
array
Array of tower objects
{
  "success": true,
  "data": [
    {
      "id_torre": 1,
      "nombre_torre": "Torre A",
      "numero_pisos": 20,
      "id_proyecto": 1,
      "id_estado": 1,
      "proyecto": {
        "id_proyecto": 1,
        "nombre": "Torre del Sol"
      },
      "estado": {
        "id_estado": 1,
        "nombre": "En Construcción"
      },
      "pisos": [],
      "apartamentos": []
    }
  ]
}

Get Single Tower

Retrieve detailed information about a specific tower with all relationships.

Path Parameters

id
integer
required
The unique identifier of the tower

Response

Returns tower with expanded relationships: proyecto (with ubicacion.ciudad), estado, pisos, and apartamentos (with tipoApartamento and estadoInmueble).
{
  "success": true,
  "data": {
    "id_torre": 1,
    "nombre_torre": "Torre A",
    "numero_pisos": 20,
    "proyecto": {
      "id_proyecto": 1,
      "nombre": "Torre del Sol",
      "ubicacion": {
        "ciudad": {
          "nombre": "Bogotá"
        }
      }
    },
    "estado": {
      "nombre": "En Construcción"
    },
    "pisos": [],
    "apartamentos": []
  }
}

Create Tower

Create a new tower within a project.

Request Body

nombre_torre
string
required
Tower name (max 50 characters)
numero_pisos
integer
Number of floors (min: 1, max: 32767)
id_proyecto
integer
required
Project ID (must exist in proyectos table)
id_estado
integer
required
Status ID (must exist in estados table)
{
  "nombre_torre": "Torre A",
  "numero_pisos": 20,
  "id_proyecto": 1,
  "id_estado": 1
}
{
  "success": true,
  "message": "Torre creada exitosamente",
  "data": {
    "id_torre": 1,
    "nombre_torre": "Torre A",
    "numero_pisos": 20,
    "id_proyecto": 1,
    "id_estado": 1,
    "proyecto": {
      "nombre": "Torre del Sol"
    },
    "estado": {
      "nombre": "En Construcción"
    }
  }
}

Update Tower

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

Path Parameters

id
integer
required
The unique identifier of the tower to update

Request Body

Same as Create Tower endpoint.
{
  "success": true,
  "message": "Torre actualizada exitosamente",
  "data": {
    "id_torre": 1,
    "nombre_torre": "Torre A - Actualizada"
  }
}

Delete Tower

Delete a tower. Cannot delete if the tower has associated pisos or apartamentos.

Path Parameters

id
integer
required
The unique identifier of the tower to delete
{
  "success": true,
  "message": "Torre eliminada exitosamente"
}
{
  "success": false,
  "message": "No se puede eliminar la torre porque tiene 5 piso(s) y 50 apartamento(s) asociado(s)"
}

Get Towers by Project

Also available at: /api/proyectos/{id_proyecto}/torres
Retrieve all towers within a specific project.

Path Parameters

id_proyecto
integer
required
The project ID to filter by
{
  "success": true,
  "data": [
    {
      "id_torre": 1,
      "nombre_torre": "Torre A",
      "numero_pisos": 20,
      "estado": { "nombre": "En Construcción" },
      "pisos": [],
      "apartamentos": []
    },
    {
      "id_torre": 2,
      "nombre_torre": "Torre B",
      "numero_pisos": 18,
      "estado": { "nombre": "En Construcción" },
      "pisos": [],
      "apartamentos": []
    }
  ]
}

Get Towers by Status

Retrieve all towers filtered by status.

Path Parameters

id_estado
integer
required
The status ID to filter by

Search Towers

Search towers by name (case-insensitive).

Query Parameters

termino
string
required
Search term (min 1 character)
{
  "success": true,
  "data": [
    {
      "id_torre": 1,
      "nombre_torre": "Torre A",
      "proyecto": { "nombre": "Torre del Sol" },
      "estado": { "nombre": "En Construcción" }
    }
  ]
}

Get Tower Summary

Get a comprehensive summary of a tower with aggregated statistics.

Path Parameters

id
integer
required
The tower ID
{
  "success": true,
  "data": {
    "id_torre": 1,
    "nombre_torre": "Torre A",
    "numero_pisos": 20,
    "proyecto": "Torre del Sol",
    "estado": "En Construcción",
    "pisos_registrados": 20,
    "total_apartamentos": 80,
    "apartamentos_por_estado": [
      {
        "estado": "Disponible",
        "cantidad": 45
      },
      {
        "estado": "Vendido",
        "cantidad": 25
      },
      {
        "estado": "Reservado",
        "cantidad": 10
      }
    ]
  }
}

Get Tower Statistics by Project

Get statistics for all towers in a specific project.

Path Parameters

id_proyecto
integer
required
The project ID
{
  "success": true,
  "data": {
    "total_torres": 2,
    "torres": [
      {
        "id_torre": 1,
        "nombre_torre": "Torre A",
        "numero_pisos": 20,
        "estado": "En Construcción",
        "pisos_registrados": 20,
        "total_apartamentos": 80
      },
      {
        "id_torre": 2,
        "nombre_torre": "Torre B",
        "numero_pisos": 18,
        "estado": "En Construcción",
        "pisos_registrados": 18,
        "total_apartamentos": 72
      }
    ]
  }
}

Nested Resources

Towers serve as parent resources for:
  • GET /api/torres/{id_torre}/apartamentos - Get all apartments in a tower
  • GET /api/torres/{id_torre}/locales - Get all commercial spaces in a tower
  • GET /api/torres/{id_torre}/pisos - Get all floors in a tower

Model Structure

Database Table: torres

FieldTypeNullableDescription
id_torreIntegerNoPrimary key
nombre_torreString(50)NoTower name
numero_pisosIntegerYesNumber of floors
nivel_inicio_primaIntegerYesFloor where premium pricing starts
id_proyectoIntegerNoForeign key to proyectos
id_estadoIntegerNoForeign key to estados

Relationships

  • BelongsTo: proyecto (Proyecto)
  • BelongsTo: estado (Estado)
  • HasMany: pisos (PisoTorre)
  • HasMany: apartamentos (Apartamento)
  • HasMany: locales (Local)

Build docs developers (and LLMs) love