# Buscar Propiedad por Código

Permite obtener la información completa de una propiedad específica a partir de su código único. La respuesta incluye datos generales, ubicación, valores económicos, características, propietarios, imágenes, videos y códigos de portales inmobiliarios.

<p class="callout info">**¿Para qué sirve este servicio?**  
Úsalo cuando ya conoces el código del inmueble y necesitas consultar toda su información detallada. Es ideal para mostrar la ficha completa de una propiedad en tu sitio web, sincronizar datos de un inmueble puntual o verificar la información registrada en el sistema.</p>

---

#### **1. El Endpoint (La dirección web)**

Apunta tu sistema a la siguiente dirección. Recuerda reemplazar <span style="color: rgb(241, 196, 15);">**{{instancia}}**</span> por la dirección web completa que utilizas para ingresar a tu plataforma, y <span style="color: rgb(241, 196, 15);">**{{code}}**</span> por el código numérico del inmueble que deseas consultar.

```http
GET https://{{instancia}}/service/v2/public/properties/{{code}}
```

<p class="callout info">**¿Qué debes colocar en {{instancia}}?**  
Es muy sencillo: corresponde a la **dirección web principal** que utilizas a diario para ingresar a tu plataforma (incluyendo la terminación `.nuby.app` o `.arrendasoft.co`).  
Por ejemplo, si para entrar a tu sistema escribes `inmobiliaria.nuby.app` o `inmobiliaria.arrendasoft.co` en tu navegador, esa será exactamente tu instancia. Solo asegúrate de no incluir el "https://" ni barras diagonales ("/") al final.</p>

#### **2. La Petición (¿Qué debes enviarnos?)**

Este servicio requiere autenticación mediante un Token JWT. Construye la URL con el código de la propiedad como parte de la ruta e incluye los encabezados requeridos:

<table border="1" id="bkmrk-m%C3%A9todo-get-content-t" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 20%;"></col><col style="width: 80%;"></col></colgroup><tbody><tr><td>**Método**</td><td>GET</td></tr><tr><td>**Content-Type**</td><td>application/json</td></tr><tr><td>**Authorization**</td><td>**Bearer token**, Token obtenido al consumir el servicio **Login**.</td></tr></tbody></table>

<p class="callout danger">**Autenticación requerida**  
Este servicio requiere un Token de autenticación válido. Debes incluir el encabezado `Authorization: Bearer TU_TOKEN` en cada petición. El token se obtiene consumiendo el servicio de **Login**. Adicionalmente, el cliente OAuth debe contar con el scope `read` para poder consumir este endpoint.</p>

**Parámetro de ruta:**

<table border="1" id="bkmrk-par%C3%A1metro-tipo-reque" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 10%;"></col><col style="width: 10%;"></col><col style="width: 58%;"></col></colgroup><thead><tr><th>Parámetro</th><th>Tipo</th><th>Requerido</th><th>Descripción</th></tr></thead><tbody><tr><td>**code**</td><td>integer</td><td>Sí</td><td>Código numérico único del inmueble que se desea consultar. Debe ser un número entero positivo.</td></tr></tbody></table>

**Ejemplos de peticiones:**

```http
GET https://{{instancia}}/service/v2/public/properties/137
```

```http
GET https://{{instancia}}/service/v2/public/properties/2045
```

#### **3. La Respuesta (¿Qué te entregaremos?)**

El sistema te devolverá un **objeto JSON** con toda la información de la propiedad solicitada. Si el código no corresponde a ningún inmueble registrado, se devolverá un arreglo vacío `[]`.

<p class="callout info">**Respuesta como objeto, no como lista**  
A diferencia del servicio **Listar Propiedades** que devuelve un arreglo de objetos `[{...}, {...}]`, este servicio devuelve directamente un único objeto `{...}` con la información del inmueble consultado.</p>

La respuesta exitosa se verá similar a esta:

```json
{
    "codigo": "137",
    "titulo": "Apartamento amplio con vista al parque central",
    "clase_id": "1247",
    "clase_inmueble": "Apartamento",
    "tipo_servicio_id": "arriendo",
    "tipo_servicio": "Arriendo",
    "estrato": "1258",
    "estrato_texto": "Cuatro",
    "fecha_consignacion": "2024-04-26",
    "asesor_id": "5",
    "asesor": "María López Ramírez",
    "pais_id": "1",
    "pais": "COLOMBIA",
    "departamento_id": "5",
    "departamento": "Antioquia",
    "municipio_id": "1",
    "municipio": "Medellin",
    "barrio_id": "3",
    "barrio": "Los Rosales",
    "direccion": "CALLE 45 # 32 - 18",
    "coordenadas": "6.24830000000000:-75.56120000000000",
    "valor_arriendo1": "1600000",
    "valor_arriendo2": "0",
    "valor_venta1": "0",
    "valor_venta2": "0",
    "valor_administracion": "250000",
    "avaluo_catastral": "185000000",
    "impuesto_predial": "1250000.00",
    "area": "75.00",
    "observaciones": "Inmueble ubicado en zona residencial tranquila, cerca de centros comerciales y transporte público.",
    "propiedad_destacada": "No",
    "llaves_en": "oficina",
    "llaves_otro": null,
    "paga_cuota_sost": "propietario",
    "folio_matricula": "001-123456",
    "referencia_catastral": "05001010203040",
    "edificio_unidad": "urbanizacion",
    "estado": "1",
    "estado_texto": "Activa",
    "cantidad_images": "3",
    "cantidad_videos": "1",
    "fecha_creacion": "2024-04-26 10:30:00",
    "ultima_fecha_modificacion": "2024-05-15 14:22:00",
    "caracteristicas": [
        {
            "id": "1",
            "descripcion": "Nº De Habitaciones",
            "tipo_campo": "numeric",
            "orden": "1",
            "grupo": "Características del inmueble",
            "valor": "4"
        },
        {
            "id": "2",
            "descripcion": "Nº De Baños",
            "tipo_campo": "numeric",
            "orden": "2",
            "grupo": "Características del inmueble",
            "valor": "3"
        },
        {
            "id": "5",
            "descripcion": "Nº De Piso",
            "tipo_campo": "numeric",
            "orden": "3",
            "grupo": "Características del inmueble",
            "valor": "1"
        },
        {
            "id": "4",
            "descripcion": "Antigüedad del Inmueble",
            "tipo_campo": "numeric",
            "orden": "5",
            "grupo": "Características del Inmueble",
            "valor": "3"
        },
        {
            "id": "14",
            "descripcion": "Cocina Integral",
            "tipo_campo": "checkbox",
            "orden": "5",
            "grupo": "Características Internas",
            "valor": "1"
        },
        {
            "id": "34",
            "descripcion": "Sala",
            "tipo_campo": "checkbox",
            "orden": "6",
            "grupo": "Características del Inmueble",
            "valor": "1"
        },
        {
            "id": "31",
            "descripcion": "Red de gas",
            "tipo_campo": "select",
            "orden": "5",
            "grupo": "Características del Inmueble",
            "valor": "si",
            "valor_texto": "Si"
        },
        {
            "id": "63",
            "descripcion": "Garaje",
            "tipo_campo": "checkbox",
            "orden": "10",
            "grupo": "Características Internas",
            "valor": "1"
        }
    ],
    "propietarios": [
        {
            "id": "272",
            "documento": "1020304050",
            "nombres": "ANA MARÍA",
            "apellidos": "PÉREZ RODRÍGUEZ"
        }
    ],
    "imagenes": [
        {
            "posicion": "1",
            "size": "19201080",
            "img": "img/fotos/1920x1080_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6.jpeg",
            "imagen": "https://mi-inmobiliaria.nuby.app/img/fotos/1920x1080_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6.jpeg"
        },
        {
            "posicion": "2",
            "size": "19201080",
            "img": "img/fotos/1920x1080_f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3.jpeg",
            "imagen": "https://mi-inmobiliaria.nuby.app/img/fotos/1920x1080_f6e5d4c3b2a1f6e5d4c3b2a1f6e5d4c3.jpeg"
        },
        {
            "posicion": "3",
            "size": "19201080",
            "img": "img/fotos/1920x1080_b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8.jpeg",
            "imagen": "https://mi-inmobiliaria.nuby.app/img/fotos/1920x1080_b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8.jpeg"
        }
    ],
    "videos": [
        {
            "url": "dQw4w9WgXcQ",
            "tipo": "youtube",
            "descripcion": null,
            "posicion": "1"
        }
    ],
    "codigos_portales": [
        {
            "nombre_portal": "metrocuadrado",
            "id_portal": "MC-98765",
            "tipo_servicio": "arriendo"
        }
    ]
}
```

Cuando el código no corresponde a ningún inmueble, la respuesta será:

```json
[]
```

##### **Campos principales de la propiedad**

Esta tabla enumera las claves presentes en el JSON de la propiedad y proporciona una descripción de cada una:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-co" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**codigo**</td><td>Código único del inmueble en el sistema.</td></tr><tr><td>**titulo**</td><td>Título del anuncio del inmueble.</td></tr><tr><td>**clase\_id**</td><td>Identificador de la clase de inmueble. Corresponde al `id` del servicio **Listar Clases de Inmueble**.</td></tr><tr><td>**clase\_inmueble**</td><td>Nombre de la clase de inmueble (por ejemplo: "Apartamento", "Casa", "Finca").</td></tr><tr><td>**tipo\_servicio\_id**</td><td>Identificador del tipo de servicio. Valores posibles: `"arriendo"`, `"venta"`, `"venta y arriendo"`.</td></tr><tr><td>**tipo\_servicio**</td><td>Nombre descriptivo del tipo de servicio (por ejemplo: "Arriendo", "Venta").</td></tr><tr><td>**estrato**</td><td>Identificador del estrato socioeconómico del inmueble.</td></tr><tr><td>**estrato\_texto**</td><td>Texto descriptivo del estrato (por ejemplo: "Cuatro", "Tres").</td></tr><tr><td>**fecha\_consignacion**</td><td>Fecha en que el inmueble fue captado/consignado para su gestión. Formato: `YYYY-MM-DD`.</td></tr><tr><td>**asesor\_id**</td><td>Identificador del asesor asignado al inmueble. Cadena vacía si no tiene asesor asignado.</td></tr><tr><td>**asesor**</td><td>Nombre completo del asesor asignado.</td></tr><tr><td>**pais\_id**</td><td>Identificador del país donde se ubica el inmueble.</td></tr><tr><td>**pais**</td><td>Nombre del país.</td></tr><tr><td>**departamento\_id**</td><td>Identificador del departamento/estado/provincia.</td></tr><tr><td>**departamento**</td><td>Nombre del departamento.</td></tr><tr><td>**municipio\_id**</td><td>Identificador del municipio/ciudad.</td></tr><tr><td>**municipio**</td><td>Nombre del municipio.</td></tr><tr><td>**barrio\_id**</td><td>Identificador del barrio. Puede ser `null` si no se ha asignado barrio.</td></tr><tr><td>**barrio**</td><td>Nombre del barrio.</td></tr><tr><td>**direccion**</td><td>Dirección física del inmueble.</td></tr><tr><td>**coordenadas**</td><td>Coordenadas geográficas del inmueble en formato `latitud:longitud`.</td></tr><tr><td>**valor\_arriendo1**</td><td>Valor principal de arriendo (canon mensual).</td></tr><tr><td>**valor\_arriendo2**</td><td>Valor secundario de arriendo. `0` si no aplica.</td></tr><tr><td>**valor\_venta1**</td><td>Valor principal de venta.</td></tr><tr><td>**valor\_venta2**</td><td>Valor secundario de venta. `0` si no aplica.</td></tr><tr><td>**valor\_administracion**</td><td>Valor de la cuota de administración.</td></tr><tr><td>**avaluo\_catastral**</td><td>Avalúo catastral del inmueble.</td></tr><tr><td>**impuesto\_predial**</td><td>Valor del impuesto predial.</td></tr><tr><td>**area**</td><td>Área del inmueble en metros cuadrados.</td></tr><tr><td>**observaciones**</td><td>Observaciones o descripción adicional del inmueble. Puede ser `null`.</td></tr><tr><td>**propiedad\_destacada**</td><td>Indica si la propiedad está marcada como destacada. Valores: `"Si"` o `"No"`.</td></tr><tr><td>**llaves\_en**</td><td>Lugar donde se encuentran las llaves del inmueble (por ejemplo: "oficina").</td></tr><tr><td>**llaves\_otro**</td><td>Ubicación alternativa de las llaves, si aplica. Puede ser `null`.</td></tr><tr><td>**paga\_cuota\_sost**</td><td>Quién paga la cuota de sostenimiento (por ejemplo: "propietario"). Puede ser `null`.</td></tr><tr><td>**folio\_matricula**</td><td>Número de folio de matrícula inmobiliaria. Puede ser `null`.</td></tr><tr><td>**referencia\_catastral**</td><td>Referencia catastral del inmueble. Puede ser `null`.</td></tr><tr><td>**edificio\_unidad**</td><td>Tipo de agrupamiento del inmueble (por ejemplo: "urbanizacion", "edificio", "conjunto").</td></tr><tr><td>**estado**</td><td>Identificador numérico del estado del inmueble. Valores: `0` (Arrendada), `1` (Activa), `2` (Inactiva), `3` (Vendida).</td></tr><tr><td>**estado\_texto**</td><td>Texto descriptivo del estado (por ejemplo: "Activa", "Arrendada").</td></tr><tr><td>**cantidad\_images**</td><td>Cantidad de imágenes asociadas al inmueble.</td></tr><tr><td>**cantidad\_videos**</td><td>Cantidad de videos asociados al inmueble.</td></tr><tr><td>**fecha\_creacion**</td><td>Fecha y hora de creación del registro en el sistema. Formato: `YYYY-MM-DD HH:MM:SS`.</td></tr><tr><td>**ultima\_fecha\_modificacion**</td><td>Fecha y hora de la última modificación del registro. Formato: `YYYY-MM-DD HH:MM:SS`.</td></tr><tr><td>**caracteristicas**</td><td>Lista de características del inmueble (ver tabla detallada abajo).</td></tr><tr><td>**propietarios**</td><td>Lista de propietarios del inmueble (ver tabla detallada abajo).</td></tr><tr><td>**imagenes**</td><td>Lista de imágenes del inmueble (ver tabla detallada abajo).</td></tr><tr><td>**videos**</td><td>Lista de videos del inmueble (ver tabla detallada abajo).</td></tr><tr><td>**codigos\_portales**</td><td>Lista de códigos de publicación en portales inmobiliarios externos (ver tabla detallada abajo).</td></tr></tbody></table>

##### **Características**

Cada elemento dentro de la lista `caracteristicas` contiene la información de una característica del inmueble y su valor asignado:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-id" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**id**</td><td>Identificador de la característica. Corresponde al `id` del servicio **Listar Características**.</td></tr><tr><td>**descripcion**</td><td>Nombre descriptivo de la característica (por ejemplo: "Nº De Habitaciones").</td></tr><tr><td>**tipo\_campo**</td><td>Tipo de campo: `numeric`, `checkbox`, `select`, entre otros.</td></tr><tr><td>**orden**</td><td>Posición de la característica dentro de su grupo.</td></tr><tr><td>**grupo**</td><td>Grupo al que pertenece la característica.</td></tr><tr><td>**valor**</td><td>Valor asignado a la característica para esta propiedad. Para `numeric`: un número. Para `checkbox`: `"1"` (marcado). Para `select`: el valor técnico de la opción seleccionada.</td></tr><tr><td>**valor\_texto**</td><td>Descripción legible del valor seleccionado. Solo presente cuando `tipo_campo` es `select` (por ejemplo: valor `"si"` → valor\_texto `"Si"`).</td></tr></tbody></table>

##### **Propietarios**

Cada elemento dentro de la lista `propietarios` contiene la información de un propietario del inmueble:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-id-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**id**</td><td>Identificador del propietario (tercero) en el sistema.</td></tr><tr><td>**documento**</td><td>Número de documento de identificación del propietario.</td></tr><tr><td>**nombres**</td><td>Nombres del propietario.</td></tr><tr><td>**apellidos**</td><td>Apellidos del propietario.</td></tr></tbody></table>

##### **Imágenes**

Cada elemento dentro de la lista `imagenes` contiene la información de una fotografía del inmueble:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-po" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**posicion**</td><td>Posición de ordenamiento de la imagen (1 = principal).</td></tr><tr><td>**size**</td><td>Resolución de la imagen (por ejemplo: "19201080").</td></tr><tr><td>**img**</td><td>Ruta relativa de la imagen en el servidor.</td></tr><tr><td>**imagen**</td><td>URL completa de la imagen, lista para consumir directamente.</td></tr></tbody></table>

##### **Videos**

Cada elemento dentro de la lista `videos` contiene la información de un video asociado al inmueble:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-ur" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**url**</td><td>Identificador o URL del video (por ejemplo, el ID de YouTube: `"dQw4w9WgXcQ"`).</td></tr><tr><td>**tipo**</td><td>Plataforma del video (por ejemplo: `"youtube"`).</td></tr><tr><td>**descripcion**</td><td>Descripción del video. Puede ser `null`.</td></tr><tr><td>**posicion**</td><td>Posición de ordenamiento del video.</td></tr></tbody></table>

##### **Códigos de Portales**

Cada elemento dentro de la lista `codigos_portales` contiene la información de publicación del inmueble en un portal inmobiliario externo:

<table border="1" id="bkmrk-clave-descripci%C3%B3n-no" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 22%;"></col><col style="width: 78%;"></col></colgroup><thead><tr><th>**Clave**</th><th>**Descripción**</th></tr></thead><tbody><tr><td>**nombre\_portal**</td><td>Nombre del portal inmobiliario (por ejemplo: "metrocuadrado", "fincaraiz").</td></tr><tr><td>**id\_portal**</td><td>Identificador de la propiedad en el portal externo.</td></tr><tr><td>**tipo\_servicio**</td><td>Tipo de servicio bajo el cual fue publicada la propiedad en ese portal.</td></tr></tbody></table>

#### **4. Seguridad y Posibles Errores**

El sistema realiza validaciones de autenticación, scopes y parámetros de ruta:

Cuando el código es numérico pero no corresponde a ningún inmueble registrado, el sistema **no devuelve un error**. En su lugar, responde con un HTTP `200` y un arreglo vacío:

```json
[]
```

<p class="callout warning">**Importante**  
Asegúrate de validar en tu integración si la respuesta es un arreglo vacío `[]` para manejar correctamente el caso en que la propiedad no exista.</p>

<table border="1" id="bkmrk-c%C3%B3digo-http-descripc" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 12%;"></col><col style="width: 88%;"></col></colgroup><thead><tr><th>Código HTTP</th><th>Descripción</th></tr></thead><tbody><tr><td>**200**</td><td>Respuesta exitosa. Contiene el objeto JSON de la propiedad, o un arreglo vacío `[]` si no se encontró ningún inmueble con ese código.</td></tr><tr><td>**400**</td><td>**Token faltante o inválido.** Posibles causas:  
— No se envió el encabezado `Authorization`. Mensaje: `"JWT Token required."`  
— El encabezado no tiene el formato `Bearer {token}`. Mensaje: `"JWT Token not send."`  
— El token no fue encontrado en el sistema. Mensaje: `"JWT Token not found."`</td></tr><tr><td>**401**</td><td>El token ha expirado. Debes generar uno nuevo consumiendo el servicio de **Login**. Mensaje: `"JWT Token expired."`</td></tr><tr><td>**403**</td><td>El cliente OAuth no tiene el scope necesario para esta operación. Para endpoints GET se requiere el scope `read`. Mensaje: `"Insufficient scope. Required: 'read', granted: '{scope_actual}'."`</td></tr><tr><td>**404**</td><td>La ruta no fue encontrada. Ocurre cuando el valor de `code` no es numérico (por ejemplo: `/properties/abc`).</td></tr></tbody></table>

---

#### **5. Ejemplos de integración**

Aquí tienes ejemplos de código listos para que tus desarrolladores los adapten a tu plataforma:

<details id="bkmrk-curl-%23-consultar-pro"><summary>cURL</summary>

```bash
# Consultar propiedad por código
curl -X GET "https://{{instancia}}/service/v2/public/properties/137" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI"
```

</details><details id="bkmrk-php-%3C%3Fphp-%24instance-"><summary>PHP</summary>

```php
<?php

$instance = 'tu_instancia'; // Reemplaza con tu instancia real
$token = 'TU_TOKEN_AQUI'; // Token obtenido del servicio Login
$code = 137; // Código de la propiedad a consultar

$url = "https://{$instance}/service/v2/public/properties/{$code}";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    "Authorization: Bearer {$token}"
]);

$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
} else {
    echo "Código de estado HTTP: " . $http_code . "\n";

    if ($http_code === 200) {
        $propiedad = json_decode($response, true);

        if (!empty($propiedad)) {
            echo "Propiedad encontrada:\n";
            echo "  Código: {$propiedad['codigo']}\n";
            echo "  Título: {$propiedad['titulo']}\n";
            echo "  Estado: {$propiedad['estado_texto']}\n";
            echo "  Dirección: {$propiedad['direccion']}\n";
            echo "  Imágenes: {$propiedad['cantidad_images']}\n";
        } else {
            echo "No se encontró ninguna propiedad con el código {$code}.\n";
        }
    } else {
        echo "Error al consultar la propiedad.\n";
        echo $response . "\n";
    }
}
curl_close($ch);

?>
```

</details><details id="bkmrk-python-import-reques"><summary>Python</summary>

```python
import requests

# 1. Configura tus datos de acceso
instancia = 'mi-inmobiliaria.nuby.app' # Reemplaza con tu dirección web completa
token = 'TU_TOKEN_AQUI' # Token obtenido del servicio Login
codigo = 137 # Código de la propiedad a consultar

# 2. Prepara la dirección de la petición
url = f"https://{instancia}/service/v2/public/properties/{codigo}"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {token}"
}

# 3. Envía la petición GET y procesa la respuesta
try:
    response = requests.get(url, headers=headers)

    print(f"Código de estado HTTP: {response.status_code}")

    if response.status_code == 200:
        propiedad = response.json()

        if propiedad:
            print(f"Propiedad encontrada:")
            print(f"  Código: {propiedad['codigo']}")
            print(f"  Título: {propiedad['titulo']}")
            print(f"  Estado: {propiedad['estado_texto']}")
            print(f"  Dirección: {propiedad['direccion']}")
            print(f"  Características: {len(propiedad['caracteristicas'])}")
        else:
            print(f"No se encontró ninguna propiedad con el código {codigo}.")
    else:
        print("Error al consultar la propiedad.")
        print(f"Detalle del error: {response.text}")

except Exception as e:
    print(f"Ocurrió un error de conexión: {e}")

```

</details><details id="bkmrk-javascript-%2F%2F-1.-con"><summary>JavaScript</summary>

```javascript
// 1. Configura tus datos de acceso
const instancia = 'mi-inmobiliaria.nuby.app'; // Reemplaza con tu dirección web completa
const token = 'TU_TOKEN_AQUI'; // Token obtenido del servicio Login
const codigo = 137; // Código de la propiedad a consultar

// 2. Prepara la dirección de la petición
const url = `https://${instancia}/service/v2/public/properties/${codigo}`;

// 3. Función para consultar la propiedad
async function consultarPropiedad() {
    try {
        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${token}`
            }
        });

        console.log(`Código de estado HTTP: ${response.status}`);

        if (response.ok) {
            const propiedad = await response.json();

            if (propiedad && !Array.isArray(propiedad)) {
                console.log(`Propiedad encontrada:`);
                console.log(`  Código: ${propiedad.codigo}`);
                console.log(`  Título: ${propiedad.titulo}`);
                console.log(`  Estado: ${propiedad.estado_texto}`);
                console.log(`  Dirección: ${propiedad.direccion}`);
                console.log(`  Imágenes: ${propiedad.cantidad_images}`);
            } else {
                console.log(`No se encontró ninguna propiedad con el código ${codigo}.`);
            }
        } else {
            console.log('Error al consultar la propiedad.');
            const errorData = await response.text();
            console.log(`Detalle del error: ${errorData}`);
        }
    } catch (error) {
        console.error(`Ocurrió un error de conexión: ${error}`);
    }
}

// 4. Ejecutamos la función
consultarPropiedad();

```

</details><details id="bkmrk-power-query-m-%28excel"><summary>Power Query M (Excel / Power BI)</summary>

```powerquery
let
    // 1. Configura tus datos de acceso
    instancia = "mi-inmobiliaria.nuby.app", // Reemplaza con tu dirección web completa
    token = "TU_TOKEN_AQUI", // Token obtenido del servicio Login
    codigo = "137", // Código de la propiedad a consultar

    // 2. Prepara la dirección de la petición
    url = "https://" & instancia & "/service/v2/public/properties/" & codigo,

    // 3. Envía la petición GET
    response = Web.Contents(url, [
        Headers = [
            #"Content-Type" = "application/json",
            #"Authorization" = "Bearer " & token
        ]
    ]),

    // 4. Decodifica la respuesta JSON y conviértela en registro
    jsonResponse = Json.Document(response),
    resultado = Record.ToTable(jsonResponse),
    expandido = Table.Pivot(resultado, List.Distinct(resultado[Name]), "Name", "Value")
in
    expandido
```

</details>