Propiedades
Bienvenido al inventario digital de tu inmobiliaria. En esta sección te explicamos cómo conectar tus herramientas externas para gestionar, consultar y mantener sincronizada toda la información de tus inmuebles.
¿Qué puedes hacer en este módulo?
1. Exploración y consulta detallada: Extrae tu catálogo completo utilizando filtros estratégicos (como fechas de creación o actualización) o profundiza en los datos de una propiedad específica. Podrás acceder a sus características precisas, material multimedia (fotografías y videos) y la información de sus propietarios.
2. Gestión segura de estados: ¡No solo puedes leer información, también puedes tomar acción! Mantén tu inventario al día actualizando la disponibilidad de tus inmuebles. Para tu tranquilidad, nuestro sistema cuenta con validaciones inteligentes que protegen tu información y previenen errores accidentales (por ejemplo, bloqueando cambios automáticos si la propiedad ya figura como "Arrendada").
¡Explora las opciones a continuación y sácale el máximo provecho a la gestión automatizada de tu portafolio!
Listar Propiedades
Permite obtener una lista paginada de propiedades registradas en la inmobiliaria, incluyendo información detallada de cada una: datos generales, ubicación, valores económicos, características, propietarios, imágenes, videos y códigos de portales inmobiliarios.
¿Para qué sirve este servicio?
Úsalo para sincronizar el inventario de propiedades con tu sistema externo, alimentar un sitio web, generar reportes o integrar la información de inmuebles con plataformas de terceros. El endpoint soporta paginación y filtros por rangos de fecha para consultas eficientes.
1. El Endpoint (La dirección web)
Apunta tu sistema a la siguiente dirección. Recuerda reemplazar {{instancia}} por la dirección web completa que utilizas para ingresar a tu plataforma.
GET https://{{instancia}}/service/v2/public/properties
¿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.
2. La Petición (¿Qué debes enviarnos?)
Este servicio requiere autenticación mediante un Token JWT. Envía los encabezados requeridos y opcionalmente los parámetros de filtrado en la URL:
| Método | GET |
| Content-Type | application/json |
| Authorization | Bearer token, Token obtenido al consumir el servicio Login. |
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.
Parámetros de consulta (query string):
| Parámetro | Tipo | Requerido | Por defecto | Descripción |
|---|---|---|---|---|
| page | integer | No | 1 | Número de página de resultados que se desea recuperar. |
| limit | integer | No | 10 | Número máximo de propiedades por página. Valor máximo permitido: 50. |
| listing_start_date | string | No | — | Fecha de inicio del rango de consignación del inmueble. Formato: YYYY-MM-DD (ejemplo: 2024-03-01). |
| listing_end_date | string | No | — | Fecha de fin del rango de consignación del inmueble. Formato: YYYY-MM-DD. |
| created_start_date | string | No | — | Fecha de inicio del rango de creación del inmueble en el sistema. Formato: YYYY-MM-DD. |
| created_end_date | string | No | — | Fecha de fin del rango de creación del inmueble en el sistema. Formato: YYYY-MM-DD. |
| last_modified_start_date | string | No | — | Fecha de inicio del rango de última modificación del inmueble. Formato: YYYY-MM-DD. |
| last_modified_end_date | string | No | — | Fecha de fin del rango de última modificación del inmueble. Formato: YYYY-MM-DD. |
Comportamiento de los filtros de fecha
Para los parámetros de tipo fecha que se componen de un rango (por ejemplo listing_start_date y listing_end_date):
— Si envías solo el start_date: se retornarán registros con fecha mayor o igual (>=) a la indicada.
— Si envías solo el end_date: se retornarán registros con fecha menor o igual (<=) a la indicada.
— Si envías ambos: se retornarán registros dentro de ese rango de fechas (BETWEEN).
— La fecha de inicio no puede ser mayor que la fecha de fin; de lo contrario se devolverá un error de validación.
Ejemplos de peticiones:
GET https://{{instancia}}/service/v2/public/properties
GET https://{{instancia}}/service/v2/public/properties?page=1&limit=10
GET https://{{instancia}}/service/v2/public/properties?page=1&limit=10&listing_start_date=2024-03-26
GET https://{{instancia}}/service/v2/public/properties?page=1&limit=10&listing_start_date=2024-03-01&listing_end_date=2024-03-31
GET https://{{instancia}}/service/v2/public/properties?page=2&limit=20&created_start_date=2024-01-01&created_end_date=2024-06-30
3. La Respuesta (¿Qué te entregaremos?)
El sistema te devolverá una lista con las propiedades que coincidan con los filtros aplicados. Cada propiedad incluye datos generales, ubicación, valores económicos, características, propietarios, imágenes, videos y códigos de portales inmobiliarios. La respuesta se verá similar a esta:
[
{
"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": "0",
"avaluo_catastral": "0",
"impuesto_predial": "0.00",
"area": "75.00",
"observaciones": null,
"propiedad_destacada": "No",
"llaves_en": "oficina",
"llaves_otro": null,
"paga_cuota_sost": "propietario",
"folio_matricula": null,
"referencia_catastral": null,
"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": "31",
"descripcion": "Red de gas",
"tipo_campo": "select",
"orden": "5",
"grupo": "Características del Inmueble",
"valor": "si",
"valor_texto": "Si"
},
{
"id": "14",
"descripcion": "Cocina Integral",
"tipo_campo": "checkbox",
"orden": "5",
"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"
}
],
"videos": [
{
"url": "dQw4w9WgXcQ",
"tipo": "youtube",
"descripcion": null,
"posicion": "1"
}
],
"codigos_portales": [
{
"nombre_portal": "metrocuadrado",
"id_portal": "MC-12345",
"tipo_servicio": "arriendo"
}
]
}
]
Campos principales de la propiedad
Esta tabla enumera las claves presentes en el JSON de cada propiedad y proporciona una descripción de cada una:
| Clave | Descripción |
|---|---|
| codigo | Código único del inmueble en el sistema. |
| titulo | Título del anuncio del inmueble. |
| clase_id | Identificador de la clase de inmueble. Corresponde al id del servicio Listar Clases de Inmueble. |
| clase_inmueble | Nombre de la clase de inmueble (por ejemplo: "Apartamento", "Casa", "Finca"). |
| tipo_servicio_id | Identificador del tipo de servicio. Valores posibles: "arriendo", "venta", "venta y arriendo". |
| tipo_servicio | Nombre descriptivo del tipo de servicio (por ejemplo: "Arriendo", "Venta"). |
| estrato | Identificador del estrato socioeconómico del inmueble. |
| estrato_texto | Texto descriptivo del estrato (por ejemplo: "Cuatro", "Tres"). |
| fecha_consignacion | Fecha en que el inmueble fue captado/consignado para su gestión. Formato: YYYY-MM-DD. |
| asesor_id | Identificador del asesor asignado al inmueble. Vacío si no tiene asesor asignado. |
| asesor | Nombre completo del asesor asignado. |
| pais_id | Identificador del país donde se ubica el inmueble. |
| pais | Nombre del país. |
| departamento_id | Identificador del departamento/estado/provincia. |
| departamento | Nombre del departamento. |
| municipio_id | Identificador del municipio/ciudad. |
| municipio | Nombre del municipio. |
| barrio_id | Identificador del barrio. Puede ser null si no se ha asignado barrio. |
| barrio | Nombre del barrio. |
| direccion | Dirección física del inmueble. |
| coordenadas | Coordenadas geográficas del inmueble en formato latitud:longitud. |
| valor_arriendo1 | Valor principal de arriendo (canon mensual). |
| valor_arriendo2 | Valor secundario de arriendo. 0 si no aplica. |
| valor_venta1 | Valor principal de venta. |
| valor_venta2 | Valor secundario de venta. 0 si no aplica. |
| valor_administracion | Valor de la cuota de administración. |
| avaluo_catastral | Avalúo catastral del inmueble. |
| impuesto_predial | Valor del impuesto predial. |
| area | Área del inmueble en metros cuadrados. |
| observaciones | Observaciones o descripción adicional del inmueble. Puede ser null. |
| propiedad_destacada | Indica si la propiedad está marcada como destacada. Valores: "Si" o "No". |
| llaves_en | Lugar donde se encuentran las llaves del inmueble (por ejemplo: "oficina"). |
| llaves_otro | Ubicación alternativa de las llaves, si aplica. Puede ser null. |
| paga_cuota_sost | Quién paga la cuota de sostenimiento (por ejemplo: "propietario"). Puede ser null. |
| folio_matricula | Número de folio de matrícula inmobiliaria. Puede ser null. |
| referencia_catastral | Referencia catastral del inmueble. Puede ser null. |
| edificio_unidad | Tipo de agrupamiento del inmueble (por ejemplo: "urbanizacion", "edificio", "conjunto"). |
| estado | Identificador numérico del estado del inmueble. Valores: 0 (Arrendada), 1 (Activa), 2 (Inactiva), 3 (Vendida). |
| estado_texto | Texto descriptivo del estado (por ejemplo: "Activa", "Arrendada"). |
| cantidad_images | Cantidad de imágenes asociadas al inmueble. |
| cantidad_videos | Cantidad de videos asociados al inmueble. |
| fecha_creacion | Fecha y hora de creación del registro en el sistema. Formato: YYYY-MM-DD HH:MM:SS. |
| ultima_fecha_modificacion | Fecha y hora de la última modificación del registro. Formato: YYYY-MM-DD HH:MM:SS. |
| caracteristicas | Lista de características del inmueble (ver tabla detallada abajo). |
| propietarios | Lista de propietarios del inmueble (ver tabla detallada abajo). |
| imagenes | Lista de imágenes del inmueble (ver tabla detallada abajo). |
| videos | Lista de videos del inmueble (ver tabla detallada abajo). |
| codigos_portales | Lista de códigos de publicación en portales inmobiliarios externos (ver tabla detallada abajo). |
Características
Cada elemento dentro de la lista caracteristicas contiene la información de una característica del inmueble y su valor asignado:
| Clave | Descripción |
|---|---|
| id | Identificador de la característica. Corresponde al id del servicio Listar Características. |
| descripcion | Nombre descriptivo de la característica (por ejemplo: "Nº De Habitaciones"). |
| tipo_campo | Tipo de campo: numeric, checkbox, select, entre otros. |
| orden | Posición de la característica dentro de su grupo. |
| grupo | Grupo al que pertenece la característica. |
| valor | 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. |
| valor_texto | Descripción legible del valor seleccionado. Solo presente cuando tipo_campo es select (por ejemplo: valor "si" → valor_texto "Si"). |
Propietarios
Cada elemento dentro de la lista propietarios contiene la información de un propietario del inmueble:
| Clave | Descripción |
|---|---|
| id | Identificador del propietario (tercero) en el sistema. |
| documento | Número de documento de identificación del propietario. |
| nombres | Nombres del propietario. |
| apellidos | Apellidos del propietario. |
Imágenes
Cada elemento dentro de la lista imagenes contiene la información de una fotografía del inmueble:
| Clave | Descripción |
|---|---|
| posicion | Posición de ordenamiento de la imagen (1 = principal). |
| size | Resolución de la imagen (por ejemplo: "19201080"). |
| img | Ruta relativa de la imagen en el servidor. |
| imagen | URL completa de la imagen, lista para consumir directamente. |
Videos
Cada elemento dentro de la lista videos contiene la información de un video asociado al inmueble:
| Clave | Descripción |
|---|---|
| url | Identificador o URL del video (por ejemplo, el ID de YouTube: "608AV8w6gL0"). |
| tipo | Plataforma del video (por ejemplo: "youtube"). |
| descripcion | Descripción del video. Puede ser null. |
| posicion | Posición de ordenamiento del video. |
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:
| Clave | Descripción |
|---|---|
| nombre_portal | Nombre del portal inmobiliario (por ejemplo: "metrocuadrado", "fincaraiz"). |
| id_portal | Identificador de la propiedad en el portal externo. |
| tipo_servicio | Tipo de servicio bajo el cual fue publicada la propiedad en ese portal. |
4. Seguridad y Posibles Errores
El sistema realiza validaciones de autenticación, scopes y parámetros. Si alguna falla, devolverá un error con su respectivo código HTTP:
| Código HTTP | Descripción |
|---|---|
| 400 | 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."Parámetros inválidos. Posibles causas: — page no es numérico.— limit no es numérico o es mayor a 50.— Las fechas no tienen el formato YYYY-MM-DD.— La fecha de inicio es mayor que la fecha de fin en un rango. |
| 401 | El token ha expirado. Debes generar uno nuevo consumiendo el servicio de Login. Mensaje: "JWT Token expired." |
| 403 | 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}'." |
5. Ejemplos de integración
Aquí tienes ejemplos de código listos para que tus desarrolladores los adapten a tu plataforma:
cURL
# Listar propiedades con paginación
curl -X GET "https://{{instancia}}/service/v2/public/properties?page=1&limit=10" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI"
# Filtrar por rango de fecha de consignación
curl -X GET "https://{{instancia}}/service/v2/public/properties?page=1&limit=10&listing_start_date=2024-03-01&listing_end_date=2024-03-31" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI"
# Filtrar por fecha de creación
curl -X GET "https://{{instancia}}/service/v2/public/properties?page=1&limit=20&created_start_date=2024-01-01" \
-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 Login
// Parámetros de consulta
$page = 1;
$limit = 10;
$listingStartDate = '2024-03-01';
$listingEndDate = '2024-03-31';
$queryParams = http_build_query([
'page' => $page,
'limit' => $limit,
'listing_start_date' => $listingStartDate,
'listing_end_date' => $listingEndDate
]);
$url = "https://{$instance}/service/v2/public/properties?{$queryParams}";
$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) {
$propiedades = json_decode($response, true);
echo "Propiedades encontradas: " . count($propiedades) . "\n";
foreach ($propiedades as $propiedad) {
echo " [{$propiedad['codigo']}] {$propiedad['titulo']} - {$propiedad['estado_texto']}\n";
}
} else {
echo "Error al consultar las propiedades.\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 Login
# 2. Prepara la dirección y los parámetros
url = f"https://{instancia}/service/v2/public/properties"
params = {
"page": 1,
"limit": 10,
"listing_start_date": "2024-03-01",
"listing_end_date": "2024-03-31"
}
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, params=params, headers=headers)
print(f"Código de estado HTTP: {response.status_code}")
if response.status_code == 200:
propiedades = response.json()
print(f"Propiedades encontradas: {len(propiedades)}")
for prop in propiedades:
print(f" [{prop['codigo']}] {prop['titulo']} - {prop['estado_texto']}")
else:
print("Error al consultar las propiedades.")
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 Login
// 2. Prepara la dirección con parámetros
const params = new URLSearchParams({
page: 1,
limit: 10,
listing_start_date: '2024-03-01',
listing_end_date: '2024-03-31'
});
const url = `https://${instancia}/service/v2/public/properties?${params}`;
// 3. Función para consultar las propiedades
async function consultarPropiedades() {
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 propiedades = await response.json();
console.log(`Propiedades encontradas: ${propiedades.length}`);
propiedades.forEach(prop => {
console.log(` [${prop.codigo}] ${prop.titulo} - ${prop.estado_texto}`);
});
} else {
console.log('Error al consultar las propiedades.');
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
consultarPropiedades();
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 Login
// 2. Prepara la dirección de la petición con parámetros
url = "https://" & instancia & "/service/v2/public/properties?page=1&limit=50",
// 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 tabla
jsonResponse = Json.Document(response),
tabla = Table.FromList(jsonResponse, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expandido = Table.ExpandRecordColumn(tabla, "Column1",
{"codigo", "titulo", "clase_inmueble", "tipo_servicio", "estado_texto", "direccion", "municipio", "departamento", "area", "valor_arriendo1", "valor_venta1", "fecha_consignacion"},
{"Codigo", "Titulo", "ClaseInmueble", "TipoServicio", "Estado", "Direccion", "Municipio", "Departamento", "Area", "ValorArriendo", "ValorVenta", "FechaConsignacion"})
in
expandido
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.
¿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.
1. El Endpoint (La dirección web)
Apunta tu sistema a la siguiente dirección. Recuerda reemplazar {{instancia}} por la dirección web completa que utilizas para ingresar a tu plataforma, y {{code}} por el código numérico del inmueble que deseas consultar.
GET https://{{instancia}}/service/v2/public/properties/{{code}}
¿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.
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:
| Método | GET |
| Content-Type | application/json |
| Authorization | Bearer token, Token obtenido al consumir el servicio Login. |
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.
Parámetro de ruta:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| code | integer | Sí | Código numérico único del inmueble que se desea consultar. Debe ser un número entero positivo. |
Ejemplos de peticiones:
GET https://{{instancia}}/service/v2/public/properties/137
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 [].
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.
La respuesta exitosa se verá similar a esta:
{
"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á:
[]
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:
| Clave | Descripción |
|---|---|
| codigo | Código único del inmueble en el sistema. |
| titulo | Título del anuncio del inmueble. |
| clase_id | Identificador de la clase de inmueble. Corresponde al id del servicio Listar Clases de Inmueble. |
| clase_inmueble | Nombre de la clase de inmueble (por ejemplo: "Apartamento", "Casa", "Finca"). |
| tipo_servicio_id | Identificador del tipo de servicio. Valores posibles: "arriendo", "venta", "venta y arriendo". |
| tipo_servicio | Nombre descriptivo del tipo de servicio (por ejemplo: "Arriendo", "Venta"). |
| estrato | Identificador del estrato socioeconómico del inmueble. |
| estrato_texto | Texto descriptivo del estrato (por ejemplo: "Cuatro", "Tres"). |
| fecha_consignacion | Fecha en que el inmueble fue captado/consignado para su gestión. Formato: YYYY-MM-DD. |
| asesor_id | Identificador del asesor asignado al inmueble. Cadena vacía si no tiene asesor asignado. |
| asesor | Nombre completo del asesor asignado. |
| pais_id | Identificador del país donde se ubica el inmueble. |
| pais | Nombre del país. |
| departamento_id | Identificador del departamento/estado/provincia. |
| departamento | Nombre del departamento. |
| municipio_id | Identificador del municipio/ciudad. |
| municipio | Nombre del municipio. |
| barrio_id | Identificador del barrio. Puede ser null si no se ha asignado barrio. |
| barrio | Nombre del barrio. |
| direccion | Dirección física del inmueble. |
| coordenadas | Coordenadas geográficas del inmueble en formato latitud:longitud. |
| valor_arriendo1 | Valor principal de arriendo (canon mensual). |
| valor_arriendo2 | Valor secundario de arriendo. 0 si no aplica. |
| valor_venta1 | Valor principal de venta. |
| valor_venta2 | Valor secundario de venta. 0 si no aplica. |
| valor_administracion | Valor de la cuota de administración. |
| avaluo_catastral | Avalúo catastral del inmueble. |
| impuesto_predial | Valor del impuesto predial. |
| area | Área del inmueble en metros cuadrados. |
| observaciones | Observaciones o descripción adicional del inmueble. Puede ser null. |
| propiedad_destacada | Indica si la propiedad está marcada como destacada. Valores: "Si" o "No". |
| llaves_en | Lugar donde se encuentran las llaves del inmueble (por ejemplo: "oficina"). |
| llaves_otro | Ubicación alternativa de las llaves, si aplica. Puede ser null. |
| paga_cuota_sost | Quién paga la cuota de sostenimiento (por ejemplo: "propietario"). Puede ser null. |
| folio_matricula | Número de folio de matrícula inmobiliaria. Puede ser null. |
| referencia_catastral | Referencia catastral del inmueble. Puede ser null. |
| edificio_unidad | Tipo de agrupamiento del inmueble (por ejemplo: "urbanizacion", "edificio", "conjunto"). |
| estado | Identificador numérico del estado del inmueble. Valores: 0 (Arrendada), 1 (Activa), 2 (Inactiva), 3 (Vendida). |
| estado_texto | Texto descriptivo del estado (por ejemplo: "Activa", "Arrendada"). |
| cantidad_images | Cantidad de imágenes asociadas al inmueble. |
| cantidad_videos | Cantidad de videos asociados al inmueble. |
| fecha_creacion | Fecha y hora de creación del registro en el sistema. Formato: YYYY-MM-DD HH:MM:SS. |
| ultima_fecha_modificacion | Fecha y hora de la última modificación del registro. Formato: YYYY-MM-DD HH:MM:SS. |
| caracteristicas | Lista de características del inmueble (ver tabla detallada abajo). |
| propietarios | Lista de propietarios del inmueble (ver tabla detallada abajo). |
| imagenes | Lista de imágenes del inmueble (ver tabla detallada abajo). |
| videos | Lista de videos del inmueble (ver tabla detallada abajo). |
| codigos_portales | Lista de códigos de publicación en portales inmobiliarios externos (ver tabla detallada abajo). |
Características
Cada elemento dentro de la lista caracteristicas contiene la información de una característica del inmueble y su valor asignado:
| Clave | Descripción |
|---|---|
| id | Identificador de la característica. Corresponde al id del servicio Listar Características. |
| descripcion | Nombre descriptivo de la característica (por ejemplo: "Nº De Habitaciones"). |
| tipo_campo | Tipo de campo: numeric, checkbox, select, entre otros. |
| orden | Posición de la característica dentro de su grupo. |
| grupo | Grupo al que pertenece la característica. |
| valor | 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. |
| valor_texto | Descripción legible del valor seleccionado. Solo presente cuando tipo_campo es select (por ejemplo: valor "si" → valor_texto "Si"). |
Propietarios
Cada elemento dentro de la lista propietarios contiene la información de un propietario del inmueble:
| Clave | Descripción |
|---|---|
| id | Identificador del propietario (tercero) en el sistema. |
| documento | Número de documento de identificación del propietario. |
| nombres | Nombres del propietario. |
| apellidos | Apellidos del propietario. |
Imágenes
Cada elemento dentro de la lista imagenes contiene la información de una fotografía del inmueble:
| Clave | Descripción |
|---|---|
| posicion | Posición de ordenamiento de la imagen (1 = principal). |
| size | Resolución de la imagen (por ejemplo: "19201080"). |
| img | Ruta relativa de la imagen en el servidor. |
| imagen | URL completa de la imagen, lista para consumir directamente. |
Videos
Cada elemento dentro de la lista videos contiene la información de un video asociado al inmueble:
| Clave | Descripción |
|---|---|
| url | Identificador o URL del video (por ejemplo, el ID de YouTube: "dQw4w9WgXcQ"). |
| tipo | Plataforma del video (por ejemplo: "youtube"). |
| descripcion | Descripción del video. Puede ser null. |
| posicion | Posición de ordenamiento del video. |
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:
| Clave | Descripción |
|---|---|
| nombre_portal | Nombre del portal inmobiliario (por ejemplo: "metrocuadrado", "fincaraiz"). |
| id_portal | Identificador de la propiedad en el portal externo. |
| tipo_servicio | Tipo de servicio bajo el cual fue publicada la propiedad en ese portal. |
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:
[]
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.
| Código HTTP | Descripción |
|---|---|
| 200 | 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. |
| 400 | 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." |
| 401 | El token ha expirado. Debes generar uno nuevo consumiendo el servicio de Login. Mensaje: "JWT Token expired." |
| 403 | 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}'." |
| 404 | La ruta no fue encontrada. Ocurre cuando el valor de code no es numérico (por ejemplo: /properties/abc). |
5. Ejemplos de integración
Aquí tienes ejemplos de código listos para que tus desarrolladores los adapten a tu plataforma:
cURL
# 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"
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);
?>
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}")
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();
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 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
Actualizar Estado de la Propiedad
Permite actualizar el estado de una propiedad específica a partir de su código único. Este servicio es útil para cambiar el estado de un inmueble entre los estados permitidos por el sistema.
¿Para qué sirve este servicio?
Úsalo cuando necesites cambiar el estado de un inmueble desde tu sistema externo, por ejemplo: marcar una propiedad como inactiva cuando se retira del mercado, reactivarla cuando vuelve a estar disponible, o registrar que fue vendida.
1. El Endpoint (La dirección web)
Apunta tu sistema a la siguiente dirección. Recuerda reemplazar {{instancia}} por la dirección web completa que utilizas para ingresar a tu plataforma, y {{code}} por el código numérico del inmueble cuyo estado deseas actualizar.
PATCH https://{{instancia}}/service/v2/public/properties/{{code}}/status
¿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.
2. La Petición (¿Qué debes enviarnos?)
Debes enviar una petición PATCH con el nuevo estado en el cuerpo de la solicitud en formato JSON:
| Método | PATCH |
| Content-Type | application/json |
| Authorization | Bearer token, Token obtenido al consumir el servicio Login. |
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 update para poder consumir este endpoint.
Parámetro de ruta:
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| code | integer | Sí | Código numérico único del inmueble cuyo estado se desea actualizar. |
Cuerpo de la petición (Body):
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| status | integer | Sí | Nuevo estado que se desea asignar a la propiedad. Los valores válidos son:1 = Activa2 = Inactiva3 = Vendida |
Restricción importante sobre el estado "Arrendada" (0)
Aunque el estado 0 (Arrendada) existe en el sistema, no es posible asignar este estado a través de la API. El estado "Arrendada" se gestiona internamente por el sistema cuando se registra un contrato de arrendamiento asociado al inmueble.
Estados válidos del sistema
| ID | Estado | Descripción |
|---|---|---|
| 0 | Arrendada | El inmueble tiene un contrato de arrendamiento vigente. No se puede asignar vía API. |
| 1 | Activa | El inmueble está disponible en el mercado para arriendo o venta. |
| 2 | Inactiva | El inmueble fue retirado temporalmente del mercado. |
| 3 | Vendida | El inmueble fue vendido. |
Reglas de transición de estado
El sistema solo permite cambiar el estado de una propiedad cuando su estado actual es Activa (1) o Inactiva (2). Las transiciones posibles son:
| Estado actual | Puede cambiar a |
|---|---|
| Activa (1) | 2 (Inactiva) o 3 (Vendida) |
| Inactiva (2) | 1 (Activa) o 3 (Vendida) |
| Arrendada (0) | No se permite cambiar el estado vía API. |
| Vendida (3) | No se permite cambiar el estado vía API. |
¿Por qué no se puede modificar el estado de una propiedad "Arrendada" o "Vendida"?
Estos son estados terminales que representan transacciones completadas. El cambio de estos estados se gestiona internamente a través de los procesos de negocio del sistema (por ejemplo, al finalizar un contrato de arrendamiento o reversar una venta).
Ejemplo de petición:
PATCH https://{{instancia}}/service/v2/public/properties/137/status
{
"status": 2
}
3. La Respuesta (¿Qué te entregaremos?)
Si la actualización fue exitosa, el sistema responderá con HTTP 200 y un mensaje de confirmación:
{
"message": "Se actualizo el estado de la propiedad correctamente"
}
| Clave | Descripción |
|---|---|
| message | Mensaje indicando que el estado de la propiedad fue actualizado correctamente. |
4. Seguridad y Posibles Errores
El sistema realiza validaciones de autenticación, scopes y datos de la petición. Si alguna falla, devolverá un error con su respectivo código HTTP:
| Código HTTP | Descripción | Ejemplo de respuesta |
|---|---|---|
| 400 | 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."Parámetros inválidos. El campo status no fue enviado o no es numérico. |
|
| 401 | El token ha expirado. Debes generar uno nuevo consumiendo el servicio de Login. |
|
| 403 | El cliente OAuth no tiene el scope necesario. Para endpoints PATCH se requiere el scope update. |
|
| 404 | No se encontró ninguna propiedad con el código indicado. |
|
| 422 | El valor de status no corresponde a un estado válido del sistema (no es 0, 1, 2 o 3). |
|
| 422 | El estado actual de la propiedad no permite la modificación (por ejemplo: la propiedad está en estado "Arrendada" o "Vendida"). |
|
| 500 | Error interno del servidor. No se pudo ejecutar la actualización en la base de datos. |
|
5. Ejemplos de integración
Aquí tienes ejemplos de código listos para que tus desarrolladores los adapten a tu plataforma:
cURL
# Cambiar estado de propiedad 137 a Inactiva (2)
curl -X PATCH "https://{{instancia}}/service/v2/public/properties/137/status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI" \
-d '{"status": 2}'
# Cambiar estado de propiedad 2045 a Vendida (3)
curl -X PATCH "https://{{instancia}}/service/v2/public/properties/2045/status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI" \
-d '{"status": 3}'
# Reactivar propiedad 890 (de Inactiva a Activa)
curl -X PATCH "https://{{instancia}}/service/v2/public/properties/890/status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_TOKEN_AQUI" \
-d '{"status": 1}'
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
$nuevoEstado = 2; // 1 = Activa, 2 = Inactiva, 3 = Vendida
$url = "https://{$instance}/service/v2/public/properties/{$code}/status";
$body = json_encode([
'status' => $nuevoEstado
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
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";
$data = json_decode($response, true);
if ($http_code === 200) {
echo "Éxito: " . $data['message'] . "\n";
} else {
echo "Error: " . ($data['error'] ?? 'Error desconocido') . "\n";
}
}
curl_close($ch);
?>
Python
import requests
import json
# 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
nuevo_estado = 2 # 1 = Activa, 2 = Inactiva, 3 = Vendida
# 2. Prepara la dirección y el cuerpo de la petición
url = f"https://{instancia}/service/v2/public/properties/{codigo}/status"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {token}"
}
body = {
"status": nuevo_estado
}
# 3. Envía la petición PATCH y procesa la respuesta
try:
response = requests.patch(url, headers=headers, json=body)
print(f"Código de estado HTTP: {response.status_code}")
data = response.json()
if response.status_code == 200:
print(f"Éxito: {data['message']}")
else:
error_msg = data.get('error', 'Error desconocido')
print(f"Error: {error_msg}")
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 Login
const codigo = 137; // Código de la propiedad
const nuevoEstado = 2; // 1 = Activa, 2 = Inactiva, 3 = Vendida
// 2. Prepara la dirección de la petición
const url = `https://${instancia}/service/v2/public/properties/${codigo}/status`;
// 3. Función para actualizar el estado
async function actualizarEstadoPropiedad() {
try {
const response = await fetch(url, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
status: nuevoEstado
})
});
console.log(`Código de estado HTTP: ${response.status}`);
const data = await response.json();
if (response.ok) {
console.log(`Éxito: ${data.message}`);
} else {
console.log(`Error: ${data.error || 'Error desconocido'}`);
}
} catch (error) {
console.error(`Ocurrió un error de conexión: ${error}`);
}
}
// 4. Ejecutamos la función
actualizarEstadoPropiedad();
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 Login
codigo = "137", // Código de la propiedad
nuevoEstado = 2, // 1 = Activa, 2 = Inactiva, 3 = Vendida
// 2. Prepara la dirección y el cuerpo de la petición
url = "https://" & instancia & "/service/v2/public/properties/" & codigo & "/status",
body = Json.FromValue([status = nuevoEstado]),
// 3. Envía la petición PATCH
response = Web.Contents(url, [
Headers = [
#"Content-Type" = "application/json",
#"Authorization" = "Bearer " & token
],
Content = body
]),
// 4. Decodifica la respuesta JSON
jsonResponse = Json.Document(response)
in
jsonResponse