Tres tipos de inmueble (kind): property, venta; rental, alquiler; complex, complejo residencial. La lectura es gratuita y abierta a cualquier clave; crear, editar y eliminar requieren el ámbito objects:write y tampoco se cobran.
Lista
curl "https://developers.grem.capital/api/v1/objects?kind=property&city=Berlin&limit=20" \
-H "Authorization: Bearer gsk_live_xxx"
GET /objects:
| Parámetro | Descripción |
|---|---|
kind | obligatorio: property, rental o complex; no distingue mayúsculas |
city, country | filtros por coincidencia exacta |
priceMin, priceMax | precio en dólares estadounidenses (según el precio normalizado) |
areaMin, areaMax | superficie, m² |
rooms | habitaciones (venta y alquiler); admite decimales |
type, residentialType | categoría: códigos de los diccionarios (venta y alquiler) |
page | página, desde 1; un valor menor cuenta como 1 |
limit | por página, 20 por defecto, 1-50; un valor fuera se ajusta al rango |
sort | newest (por defecto) u oldest |
scope | solo claves de agencia: por defecto, los inmuebles de la agencia; catalog, el catálogo público |
Respuesta: data, los inmuebles; paginate, currentPage, totalPages, totalCount.
limit y page fuera del rango se ajustan a él, no se rechazan. Otros valores no válidos de un parámetro conocido (un valor de enumeración desconocido, un page no entero, texto en lugar de un número) se rechazan con 400 validation indicando el campo.
Un inmueble
GET /objects/{kind}/{id}: un inmueble con la misma forma. Id desconocido, 404. Una clave de agencia puede añadir scope=catalog para obtener la vista pública.
Forma de un inmueble
| Campo | Descripción |
|---|---|
id, kind, name, slug | identidad |
status | en un inmueble ajeno, active o sold |
type | categoría, código |
price, currency | precio; el complejo tiene price: { from, to, currency } |
constructionYear | año de construcción, un entero o null |
address | dirección completa, con calle y coordenadas |
nativeAreaUnit | la unidad en que se introdujo el inmueble (para mostrar); las superficies llegan como { "value": 50, "unit": "m2" } |
photos | fotos: id, isMain, mimetype, variants, ready |
processingStatus | ready, processing o failed: si las fotos están listas |
promoted | el inmueble está promocionado |
author | el agente o la agencia del inmueble |
Las categorías y otros atributos son códigos; las etiquetas traducidas están en los diccionarios. El complejo tiene además apartmentPlans (planos) y progress (avance de obra).
ready: false en una foto significa que las variantes con marca de agua aún se están generando. Muestre un marcador de posición y vuelva a leer el inmueble más tarde; no guarde en caché una imagen sin terminar.
Qué ve: cualquier inmueble, la ficha pública, como en el sitio; sus inmuebles, la vista completa del propietario. Nadie recibe los contactos del propietario, datos del vendedor de importaciones, notas de moderación ni originales sin marca de agua.
Crear, editar, eliminar
| Acción | Solicitud | Respuesta |
|---|---|---|
| Crear | POST /objects/{kind} | 201 con el inmueble |
| Editar | PUT /objects/{kind}/{id} | el inmueble; solo el propietario, si no 404 |
| Eliminar | DELETE /objects/{kind}/{id} | un borrador se elimina definitivamente, un inmueble publicado se archiva; un inmueble con un contrato de comisión vigente: 409 conflict |
curl -X POST https://developers.grem.capital/api/v1/objects/property \
-H "Authorization: Bearer gsk_live_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9a1d2c3b-4e5f-4a6b-8c7d-0e1f2a3b4c5d" \
-d '{
"name": "Piso de 2 habitaciones, Torstraße 12",
"type": "Residential",
"address": { "country": "Germany", "city": "Berlin", "street": "Torstraße", "streetNumber": "12" },
"price": 320000, "currency": "EUR",
"spaceAll": 64, "rooms": 2, "floor": 3, "buildingFloor": 5,
"photos": ["https://example.com/1.jpg"],
"publish": false
}'
publish: false(por defecto), un borrador, fuera del catálogo;publish: true, publicado. Para publicar,propertyyrentalnecesitan al menos 1 foto,complex2.- No todos los roles de cuenta pueden crear todos los tipos, igual que en el panel.
- Los campos desconocidos se ignoran. Tome los códigos de categoría de los diccionarios. Los códigos de
condition,conditionTypeyamenities(en camelCase, comoneedsRenovation,fridge) figuran en el propio esquema de escritura (las tablas de abajo y/openapi.json);GET /dictionariesno los traduce. - Superficies: un número en m² o
{ "value": 700, "unit": "ft2" }. PUTsinphotosconserva las fotos existentes.Idempotency-Keyal crear evita un duplicado al repetir.
Fotos
photos es un array; cada elemento es:
- una dirección pública
https://...: GREM descarga la imagen por sí mismo; - el id de un archivo subido con
POST /uploads(Archivos).
Una dirección que no se puede descargar se omite y se indica en warnings de la respuesta. Con strictPhotos: true, esa solicitud falla con 422.
Campos de venta
Obligatorios: name, type, address, price.
| Campo | Descripción |
|---|---|
type | Residential, Commercial, Industrial o Land plot |
residentialType, commercialType, industrialType | subtipo: un código o un array de códigos |
marketSegment | primary (obra nueva) o secondary |
description | descripción, hasta 5000 caracteres |
address | country, city (obligatorio), district, region, street, streetNumber, postalCode, location |
price, currency | precio; moneda UAH, USD, EUR, AZN, GBP, AED, CNY, TRY, GEL |
constructionYear | año, de 1700 a 2100 |
spaceAll, spaceLiving, spaceKitchen, effectiveArea, auxiliaryArea, landPlotArea | superficies |
rooms, bedrooms, numberOfBathrooms, balconies, numberWindows, unitsCount | cantidades |
floor, buildingFloor, ceilingHeight | planta, plantas, altura de techo |
condition | needsRenovation, partialRenovation, renovated, designer, shellCore, newFromDeveloper |
buildingType | newBuilding, secondary, stalinka, khrushchevka, brezhnevka, czech, gostinka, prerevolutionary, townhouseRow, detached, other |
wallMaterialType, constructionTech, kitchenType | material de los muros, tecnología constructiva, tipo de cocina |
amenities, buildingAmenities | equipamiento de la vivienda y del edificio: arrays de códigos |
utilitySystem, heating, windowView, balcony, parking | suministros, calefacción, vistas, balcón, aparcamiento |
safety | shelterNearby, powerBackup, autonomousHeating, waterReserve, starlink, gasAvailable, internetAvailable, elevatorWorks (sí/no) |
accessibility | ramp, groundLevelEntrance, wideDoors, disabledParking, wheelchairElevator (sí/no) |
programs | eOselya, eVidnovlennya, mortgageEligible, installment |
monthRentalRate, annualIncome, annualYield, paybackPeriod, propertyTax, insuranceCost, managementFee, repairsReserve | cifras de inversión |
commission | comisión para agentes: payer, type, value |
tour | tour 3D: kind, url |
complexId | el complejo al que pertenece la vivienda |
photos, video | medios |
publish, strictPhotos | ver arriba |
Campos de alquiler
Obligatorios: name, type (Residential, Commercial, Industrial), address, price. La mayoría de campos son como en venta; los propios del alquiler:
| Campo | Descripción |
|---|---|
rentalType | long, larga estancia; short, por días |
price, dayPrice, deposit | renta, precio por día, fianza |
totalArea, totalFloors, bathrooms | superficie, plantas, baños |
minRentTime, minTermMonths | plazo mínimo |
availableFrom | disponible desde |
checkIn, checkOut | hora de entrada y salida: from, to — hora del día (15 = 15:00) |
withChildren, withPets | se admiten niños; mascotas: yes, no, with someone |
furniture, furnitureList | mobiliario |
conditionType | estado: los mismos valores que condition en venta |
onsiteAmenities, internalFeature | equipamiento |
utilitiesIncluded, utilitiesCost | suministros |
checkInPay, onlinePay, bankTransfer, reportingDocuments | formas de pago y documentos |
Campos del complejo
Obligatorios: name, address.
| Campo | Descripción |
|---|---|
description, descriptionPresentation, descriptionSocial | descripciones |
price | from, to, currency |
space | superficies de las viviendas: from, to |
apartType | tipos de vivienda |
class | economy, comfort, comfortPlus, business, premium, elite |
stage | planning, excavation, construction, finishing, commissioned, delivered |
completionQuarter | trimestre de finalización |
queues | fases: name, stage, completionQuarter |
sectionsNumber, floors, apartmentsNumber, parkingSpaces | cantidades |
installment, installmentTerms | pago a plazos: downPaymentPct, termMonths, interestRate |
infrastructure | infraestructura: un array de códigos |
territoryDescription, parkingDescription, infrastructureDescription | descripciones |
apartmentPlans | planos: apartType, area, price, description, photos |
progress | avance de obra: title, date, description, photos |
El esquema completo de cada tipo con todos los valores: componentes ObjectWriteProperty, ObjectWriteRental, ObjectWriteComplex en /openapi.json. Se generan a partir de las mismas comprobaciones que ejecuta el servidor.
Clave de agencia
| Solicitud | Qué hace |
|---|---|
PATCH /objects/{kind}/{id}/agency | pasar un inmueble a la agencia o devolverlo a personal: cuerpo {"targetAgencyId": "<id>"} o {"targetAgencyId": null}; sin el campo, a la agencia de la clave |
PATCH /objects/{kind}/{id}/assignee | asignar un agente: {"assignTo": "<user id>"} |
Con una clave personal, ambas responden 403. Un inmueble no puede pasar directamente de una agencia a otra (409 conflict): primero páselo a personal. Asignar un agente a un inmueble personal, o a alguien que no es miembro activo de la agencia, también da 409 conflict. Permisos: a la agencia, el autor del inmueble; de vuelta a personal, un gestor, el propietario de la agencia o el autor; asignar a cualquiera, de gestor hacia arriba; un agente, solo a sí mismo.
Eventos
object.created, object.updated, object.published, object.deleted: ver Webhooks.
Artículos relacionados
- Diccionarios: códigos de categorías y atributos.
- Archivos: subir fotos.
- Materiales del anuncio: página de aterrizaje y PDF de un inmueble.