Propiedades / Listar Características por Clase de Inmueble
Permite obtener unala lista de elementos, donde cada elemento contiene la información de cada característicacaracterísticas que puede tener una propiedad, filtradofiltrada por una clase de inmueble.inmueble específica. Cada elemento de la respuesta contiene la información detallada de una característica perteneciente a la clase indicada. Este servicio es ideal cuando ya conoces la clase de inmueble y solo necesitas las características aplicables a ese tipo.
Endpoint:¿Para qué sirve este servicio? https://
Úsalo cuando necesites construir un formulario dinámico para un tipo de inmueble en particular (por ejemplo, solo las características de "Casa" o de "Apartamento"). Si prefieres obtener todas las características de todas las clases de una sola vez, utiliza el endpoint de Listar Características. Para conocer los identificadores válidos de clases de inmueble, consulta el servicio de Listar Clases de Inmueble.
1. El Endpoint (La dirección web)
Apunta tu sistema a la siguiente dirección. Recuerda reemplazar {{instancia}}.arrendasoft.co/ por la dirección web completa que utilizas para ingresar a tu plataforma, y {{id}} por el identificador numérico de la clase de inmueble que deseas consultar.
GET https://{{instancia}}/service/v2/public/masters/properties/features/property-class/{{id}}
¿Qué debes colocar en {{instancia}}:? Hace
Es referenciamuy sencillo: corresponde a la instanciadirecció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 cadano inmobiliaria.incluir el "https://" ni barras diagonales ("/") al final.
2. La Petición (¿Qué debes enviarnos?)
Este servicio no requiere cuerpo en la petición. Solo necesitas enviar los encabezados correctos y el parámetro de ruta:
| Método | GET |
| Content-Type | application/json |
| Authorization | Bearer |
Parámetro de ruta:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| Sí | Identificador único de la clase de |
¿Aún no tienes tu Token de acceso?
Para consumir este servicio necesitas un Token vigente. Consulta el servicio de Login para aprender cómo obtenerlo.
3. La Respuesta (¿Qué te entregaremos?)
ListaSi tu Token es válido y el id de elementos,la dondeclase cadade elementoinmueble contienees correcto, el sistema te devolverá una lista con las características asociadas a esa clase. Por ejemplo, para la informaciónclase de"Casa" cada(id ), una= de1249lasla características.respuesta se verá similar a esta:
[
{
"id": "1",
"descripcion": "Nº De Habitaciones",
"tipo_campo": "numeric",
"opciones_valores": null,
"opciones_descripciones": null,
"orden": "1",
"grupo": "Características del Inmueble",
"clase_inmueble_id": "1249",
"clase_inmueble": "Casa"
},
{
"id": "31",
"descripcion": "Red de gas",
"tipo_campo": "select",
"opciones_valores": "si,no",
"opciones_descripciones": "Si,No",
"orden": "5",
"grupo": "Características del Inmueble",
"clase_inmueble_id": "1249",
"clase_inmueble": "Casa"
},
{
"id": "22",
"descripcion": "Balcón",
"tipo_campo": "checkbox",
"opciones_valores": null,
"opciones_descripciones": null,
"orden": "10",
"grupo": "Características del Inmueble",
"clase_inmueble_id": "1249",
"clase_inmueble": "Casa"
},
{
"id": "38",
"descripcion": "Parqueadero",
"tipo_campo": "select",
"opciones_valores": "propio,visitantes",
"opciones_descripciones": "Propio,Visitantes",
"orden": "12",
"grupo": "Características del Inmueble",
"clase_inmueble_id": "1249",
"clase_inmueble": "Casa"
}
]
Nota: Las características disponibles y sus grupos dependen de la configuración de cada instancia. La lista se devuelve ordenada por grupo, luego por orden dentro del grupo, y finalmente por descripción alfabéticamente. La estructura de la respuesta es idéntica a la del servicio de Listar Características, pero filtrada a la clase de inmueble indicada.
Tabla con la descripción de cada campo del JSONJSON:
| Clave | Descripción |
|---|---|
id |
Identificador único de la característica (tipo texto). |
descripcion |
|
tipo_campo |
Tipo de campo que define cómo se captura la información. Valores posibles: numeric (checkbox select (lista desplegable con opciones predefinidas), entre otros. |
opciones_valores |
Valores tipo_campo es select. Será null o vacío para otros tipos de campo. |
opciones_descripciones |
Descripciones legibles de las opciones_valores. Por ejemplo, si opciones_valores es "propio,visitantes", las descripciones serán "Propio,Visitantes". |
orden |
|
grupo |
|
clase_inmueble_id |
Identificador de la clase de inmueble a la que está asociada esta característica. Coincidirá con el id enviado en la URL. |
clase_inmueble |
4. Seguridad y Posibles Errores
¡Tu pase tiene fecha de caducidad!
Por medidas de seguridad, el token que te entregamos solo dura 1 hora. Una vez transcurrido ese tiempo, el pase expirará y el sistema te bloqueará el acceso devolviéndote un error 401. Cuando esto ocurra, tu sistema simplemente debe volver a consumir el servicio de Login para pedir un pase nuevo y continuar trabajando.
Así se ve el error que te devolverá el sistema cuando tu token se haya vencido o intentes usar un pase inválido:
{
"statusCode": 401,
"error": {
"type": "SERVER_ERROR",
"description": "JWT Token expired."
}
}
Si envías un id vacío o no numérico, el sistema te devolverá un error de validación:
{
"error": "El ID de la clase del inmueble no puede estar vacío y debe ser de tipo numérico"
}
Otros posibles errores:
| Código HTTP | Descripción |
|---|---|
| 400 | Token no enviado, formato incorrecto, o el parámetro id está vacío o no es numérico. |
| 401 | Token expirado o inválido. Solicita uno nuevo a través del servicio de Login. |
5. Ejemplos de integración
Aquí tienes ejemplos de código listos para que tus desarrolladores los adapten a tu plataforma. En estos ejemplos se consulta la clase "Casa" con id = 1249:
cURL
curl -X GET "https://{{instancia}}/service/v2/public/masters/properties/features/property-class/1249" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI"
PHP
<?php
$instance = 'tu_instancia'; // Reemplaza con tu instancia real
$token = 'TU_TOKEN_AQUI'; // Token obtenido del servicio de Login
$claseInmuebleId = 1249; // ID de la clase de inmueble (ej. Casa)
$url = "https://{$instance}/service/v2/public/masters/properties/features/property-class/{$claseInmuebleId}";
$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) {
$caracteristicas = json_decode($response, true);
echo "Características de la clase de inmueble (ID {$claseInmuebleId}):\n";
foreach ($caracteristicas as $car) {
echo " {$car['descripcion']} (tipo: {$car['tipo_campo']})\n";
}
} else {
echo "Error al consultar las características.\n";
echo $response . "\n";
}
}
curl_close($ch);
?>
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 de Login
clase_inmueble_id = 1249 # ID de la clase de inmueble (ej. Casa)
# 2. Prepara la dirección y los encabezados
url = f"https://{instancia}/service/v2/public/masters/properties/features/property-class/{clase_inmueble_id}"
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:
caracteristicas = response.json()
print(f"Características de la clase de inmueble (ID {clase_inmueble_id}):")
for car in caracteristicas:
print(f" {car['descripcion']} (tipo: {car['tipo_campo']})")
else:
print("Error al consultar las características.")
print(f"Detalle del error: {response.text}")
except Exception as e:
print(f"Ocurrió un error de conexión: {e}")
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 de Login
const claseInmuebleId = 1249; // ID de la clase de inmueble (ej. Casa)
// 2. Prepara la dirección
const url = `https://${instancia}/service/v2/public/masters/properties/features/property-class/${claseInmuebleId}`;
// 3. Función para consultar las características por clase de inmueble
async function consultarCaracteristicasPorClase() {
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 caracteristicas = await response.json();
console.log(`Características de la clase de inmueble (ID ${claseInmuebleId}):`);
caracteristicas.forEach(car => {
console.log(` ${car.descripcion} (tipo: ${car.tipo_campo})`);
});
} else {
console.log('Error al consultar las características.');
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
consultarCaracteristicasPorClase();
Power Query M (Excel / Power BI)
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 de Login
claseInmuebleId = "1249", // ID de la clase de inmueble (ej. Casa)
// 2. Prepara la dirección de la petición
url = "https://" & instancia & "/service/v2/public/masters/properties/features/property-class/" & claseInmuebleId,
// 3. Envía la petición GET con el token de autenticación
response = Web.Contents(url, [
Headers = [
#"Content-Type" = "application/json",
#"Authorization" = "Bearer " & token
]
]),
// 4. Decodifica la respuesta JSON y conviértela en tabla
jsonResponse = Json.Document(response),
tabla = Table.FromList(jsonResponse, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expandido = Table.ExpandRecordColumn(tabla, "Column1",
{"id", "descripcion", "tipo_campo", "opciones_valores", "opciones_descripciones", "orden", "grupo", "clase_inmueble_id", "clase_inmueble"},
{"ID", "Descripcion", "TipoCampo", "OpcionesValores", "OpcionesDescripciones", "Orden", "Grupo", "ClaseInmuebleID", "ClaseInmueble"})
in
expandido