Три типа объектов (kind): property - продажа, rental - аренда, complex - жилой комплекс. Чтение бесплатное и доступно любому ключу; создание, изменение и удаление требуют области objects:write и тоже не тарифицируются.
Список
curl "https://developers.grem.capital/api/v1/objects?kind=property&city=Berlin&limit=20" \
-H "Authorization: Bearer gsk_live_xxx"
GET /objects:
| Параметр | Описание |
|---|---|
kind | обязательный: property, rental или complex; регистр не важен |
city, country | фильтр по точному совпадению |
priceMin, priceMax | цена, в долларах США (по нормализованной цене) |
areaMin, areaMax | площадь, м² |
rooms | комнат (property и rental); может быть дробным |
type, residentialType | категория - коды из справочников (property и rental) |
page | страница, с 1; меньшее значение считается 1 |
limit | на страницу, по умолчанию 20, 1-50; значение вне диапазона приводится к нему |
sort | newest (по умолчанию) или oldest |
scope | только ключ агентства: по умолчанию видны объекты агентства, catalog - публичный каталог |
Ответ: data - массив объектов, paginate - currentPage, totalPages, totalCount.
limit и page вне диапазона приводятся к нему, а не отклоняются. Другие недопустимые значения известного параметра (неизвестное значение перечисления, нецелый page, текст вместо числа) отклоняются с 400 validation и названием поля.
Один объект
GET /objects/{kind}/{id} - объект в той же форме. Неизвестный id - 404. Ключ агентства может добавить scope=catalog, чтобы получить публичный вид.
Форма объекта
| Поле | Описание |
|---|---|
id, kind, name, slug | идентификация |
status | для чужого объекта - active или sold |
type | категория - код |
price, currency | цена; у complex - price: { from, to, currency } |
constructionYear | год постройки, целое число или null |
address | полный адрес, с улицей и координатами |
nativeAreaUnit | единица площади, в которой объект заведен (для показа); площади отдаются как { "value": 50, "unit": "m2" } |
photos | фото: id, isMain, mimetype, variants, ready |
processingStatus | ready, processing или failed - готовы ли фото |
promoted | объект продвигается |
author | агент или агентство объявления |
Категории и другие атрибуты - коды; подписи на языках - в справочниках. У complex есть еще apartmentPlans (планировки) и progress (ход строительства).
ready: false у фото означает, что варианты с водяным знаком еще генерируются. Показывайте заглушку и перечитайте объект позже - не кэшируйте незавершенное изображение.
Что видно: любой объект - публичная карточка, как на сайте; ваши объекты - полный вид владельца. Никому не отдаются контакты владельца, данные продавца из импорта, заметки модерации и оригиналы фото без водяного знака.
Создать, изменить, удалить
| Действие | Запрос | Ответ |
|---|---|---|
| Создать | POST /objects/{kind} | 201 с объектом |
| Изменить | PUT /objects/{kind}/{id} | объект; только владелец, иначе 404 |
| Удалить | DELETE /objects/{kind}/{id} | черновик удаляется навсегда, опубликованный объект снимается в архив; объект с действующим договором о комиссии - 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": "2-room flat, 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(по умолчанию) - черновик, не виден в каталоге;publish: true- публикация. Для публикации нужно не меньше 1 фото уpropertyиrental, 2 - уcomplex.- Создавать объект определенного типа может не каждая роль аккаунта - как в кабинете.
- Неизвестные поля игнорируются. Коды категорий берите из справочников. Коды
condition,conditionTypeиamenities(в camelCase, напримерneedsRenovation,fridge) перечислены в самой схеме записи (таблицы ниже и/openapi.json) -GET /dictionariesих не расшифровывает. - Площади: число в м² или
{ "value": 700, "unit": "ft2" }. PUTбезphotosоставляет существующие фото.Idempotency-Keyпри создании защищает от дубля при повторе.
Фото
photos - массив, каждый элемент:
- публичный адрес
https://...- GREM сам загрузит изображение; - id файла, загруженного через
POST /uploads(Файлы).
Адрес, который не удалось загрузить, пропускается и попадает в warnings ответа. С strictPhotos: true такой запрос вместо этого завершается 422.
Поля для property
Обязательные: name, type, address, price.
| Поле | Описание |
|---|---|
type | Residential, Commercial, Industrial или Land plot |
residentialType, commercialType, industrialType | подтип - код или массив кодов |
marketSegment | primary (новостройка) или secondary |
description | описание, до 5000 символов |
address | country, city (обязательные), district, region, street, streetNumber, postalCode, location |
price, currency | цена; валюта UAH, USD, EUR, AZN, GBP, AED, CNY, TRY, GEL |
constructionYear | год, 1700-2100 |
spaceAll, spaceLiving, spaceKitchen, effectiveArea, auxiliaryArea, landPlotArea | площади |
rooms, bedrooms, numberOfBathrooms, balconies, numberWindows, unitsCount | количества |
floor, buildingFloor, ceilingHeight | этаж, этажей, высота потолков |
condition | needsRenovation, partialRenovation, renovated, designer, shellCore, newFromDeveloper |
buildingType | newBuilding, secondary, stalinka, khrushchevka, brezhnevka, czech, gostinka, prerevolutionary, townhouseRow, detached, other |
wallMaterialType, constructionTech, kitchenType | материал стен, технология, тип кухни |
amenities, buildingAmenities | удобства в квартире и в доме - массивы кодов |
utilitySystem, heating, windowView, balcony, parking | коммуникации, отопление, вид, балкон, паркинг |
safety | shelterNearby, powerBackup, autonomousHeating, waterReserve, starlink, gasAvailable, internetAvailable, elevatorWorks (да/нет) |
accessibility | ramp, groundLevelEntrance, wideDoors, disabledParking, wheelchairElevator (да/нет) |
programs | eOselya, eVidnovlennya, mortgageEligible, installment |
monthRentalRate, annualIncome, annualYield, paybackPeriod, propertyTax, insuranceCost, managementFee, repairsReserve | инвестиционные показатели |
commission | комиссия для агентов: payer, type, value |
tour | 3D-тур: kind, url |
complexId | ЖК, к которому относится квартира |
photos, video | медиа |
publish, strictPhotos | см. выше |
Поля для rental
Обязательные: name, type (Residential, Commercial, Industrial), address, price. Большинство полей - как у property; собственные поля аренды:
| Поле | Описание |
|---|---|
rentalType | long - долгосрочная, short - посуточная |
price, dayPrice, deposit | ставка, ставка за сутки, залог |
totalArea, totalFloors, bathrooms | площадь, этажей, ванных |
minRentTime, minTermMonths | минимальный срок |
availableFrom | свободна с даты |
checkIn, checkOut | время заезда и выезда: from, to — час дня (15 = 15:00) |
withChildren, withPets | с детьми; с животными: yes, no, with someone |
furniture, furnitureList | мебель |
conditionType | состояние - те же значения, что condition у property |
onsiteAmenities, internalFeature | удобства |
utilitiesIncluded, utilitiesCost | коммунальные |
checkInPay, onlinePay, bankTransfer, reportingDocuments | способы оплаты и документы |
Поля для complex
Обязательные: name, address.
| Поле | Описание |
|---|---|
description, descriptionPresentation, descriptionSocial | описания |
price | from, to, currency |
space | площади квартир: from, to |
apartType | типы квартир |
class | economy, comfort, comfortPlus, business, premium, elite |
stage | planning, excavation, construction, finishing, commissioned, delivered |
completionQuarter | квартал сдачи |
queues | очереди: name, stage, completionQuarter |
sectionsNumber, floors, apartmentsNumber, parkingSpaces | количества |
installment, installmentTerms | рассрочка: downPaymentPct, termMonths, interestRate |
infrastructure | инфраструктура - массив кодов |
territoryDescription, parkingDescription, infrastructureDescription | описания |
apartmentPlans | планировки: apartType, area, price, description, photos |
progress | ход строительства: title, date, description, photos |
Полная схема каждого типа со всеми значениями - компоненты ObjectWriteProperty, ObjectWriteRental, ObjectWriteComplex в /openapi.json. Они сгенерированы из тех же проверок, что выполняет сервер.
Ключ агентства
| Запрос | Что делает |
|---|---|
PATCH /objects/{kind}/{id}/agency | перенести объект в агентство или вернуть в личные: тело {"targetAgencyId": "<id>"} или {"targetAgencyId": null}; без поля - в агентство ключа |
PATCH /objects/{kind}/{id}/assignee | назначить ответственного агента: {"assignTo": "<id пользователя>"} |
Личным ключом оба запроса дают 403. Перенести объект из одного агентства в другое напрямую нельзя (409 conflict) - сначала в личные. Назначить агента на личный объект или на того, кто не является активным участником агентства, тоже нельзя - 409 conflict. Права: перенести в агентство - автор объекта; вернуть в личные - менеджер, владелец агентства или автор; назначить любого - менеджер и выше, агент - только себя.
События
object.created, object.updated, object.published, object.deleted - см. Вебхуки.
Связанные статьи
- Справочники - коды категорий и атрибутов.
- Файлы - загрузка фото.
- Материалы объявления - сайт и PDF для объекта.