Trois types de biens (kind) : property - à vendre, rental - à louer, complex - résidence (programme immobilier). La lecture est gratuite et ouverte à toute clé ; la création, la modification et la suppression demandent le scope objects:write et ne sont pas facturées non plus.
Liste
curl "https://developers.grem.capital/api/v1/objects?kind=property&city=Berlin&limit=20" \
-H "Authorization: Bearer gsk_live_xxx"
GET /objects :
| Paramètre | Description |
|---|---|
kind | obligatoire : property, rental ou complex ; la casse n'a pas d'importance |
city, country | filtres à correspondance exacte |
priceMin, priceMax | prix, en dollars américains (selon le prix normalisé) |
areaMin, areaMax | surface, m² |
rooms | pièces (property et rental) ; peut être fractionnaire |
type, residentialType | catégorie - codes issus des dictionnaires (property et rental) |
page | page, à partir de 1 ; une valeur inférieure est traitée comme 1 |
limit | éléments par page, 20 par défaut, 1-50 ; une valeur hors plage est ramenée dans la plage |
sort | newest (par défaut) ou oldest |
scope | clés d'agence uniquement : par défaut, les biens de l'agence ; catalog - le catalogue public |
Réponse : data - les biens, paginate - currentPage, totalPages, totalCount.
limit et page hors plage sont ramenés dans la plage, pas refusés. Les autres valeurs invalides d'un paramètre connu (une valeur d'enum inconnue, un page non entier, du texte au lieu d'un nombre) sont refusées avec 400 validation qui nomme le champ.
Un bien
GET /objects/{kind}/{id} - un bien, dans le même format. Identifiant inconnu - 404. Une clé d'agence peut ajouter scope=catalog pour obtenir la vue publique.
Format d'un bien
| Champ | Description |
|---|---|
id, kind, name, slug | identité |
status | pour le bien d'un tiers - active ou sold |
type | catégorie - code |
price, currency | prix ; une résidence a price: { from, to, currency } |
constructionYear | année de construction, un entier ou null |
address | adresse complète, avec la rue et les coordonnées |
nativeAreaUnit | l'unité dans laquelle le bien a été saisi (pour l'affichage) ; les surfaces sont renvoyées sous la forme { "value": 50, "unit": "m2" } |
photos | photos : id, isMain, mimetype, variants, ready |
processingStatus | ready, processing ou failed - indique si les photos sont prêtes |
promoted | le bien est mis en avant |
author | l'agent ou l'agence du bien |
Les catégories et les autres attributs sont des codes ; leurs libellés traduits se trouvent dans les dictionnaires. Une résidence a aussi apartmentPlans (plans des logements) et progress (avancement des travaux).
ready: false sur une photo signifie que les variantes avec filigrane sont encore en cours de génération. Affichez un espace réservé et relisez le bien plus tard - ne mettez pas en cache une image inachevée.
Ce que vous voyez : pour n'importe quel bien, la fiche publique, comme sur le site ; pour vos biens, la vue complète du propriétaire. Personne ne reçoit les coordonnées du propriétaire, les données du vendeur issues des imports, les notes de modération ni les originaux sans filigrane.
Créer, modifier, supprimer
| Action | Requête | Réponse |
|---|---|---|
| Créer | POST /objects/{kind} | 201 avec le bien |
| Modifier | PUT /objects/{kind}/{id} | le bien ; propriétaire uniquement, sinon 404 |
| Supprimer | DELETE /objects/{kind}/{id} | un brouillon est supprimé définitivement, un bien publié est archivé ; un bien avec un contrat de commission actif - 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(par défaut) - un brouillon, absent du catalogue ;publish: true- publié. La publication demande au moins 1 photo pourpropertyetrental, 2 pourcomplex.- Tous les rôles de compte ne peuvent pas créer tous les types de biens - comme dans l'espace personnel.
- Les champs inconnus sont ignorés. Prenez les codes de catégorie dans les dictionnaires. Les codes de
condition,conditionTypeetamenities(en camelCase, commeneedsRenovation,fridge) sont listés dans le schéma d'écriture lui-même (les tableaux ci-dessous et/openapi.json) -GET /dictionariesne les décode pas. - Surfaces : un nombre en m² ou
{ "value": 700, "unit": "ft2" }. - Un
PUTsansphotosconserve les photos existantes. Idempotency-Keyà la création évite un doublon en cas de nouvelle tentative.
Photos
photos est un tableau ; chaque élément est :
- une adresse publique
https://...- GREM télécharge l'image lui-même ; - l'identifiant d'un fichier envoyé avec
POST /uploads(Fichiers).
Une adresse impossible à télécharger est ignorée et signalée dans les warnings de la réponse. Avec strictPhotos: true, une telle requête échoue avec 422 à la place.
Champs d'un bien à vendre
Obligatoires : name, type, address, price.
| Champ | Description |
|---|---|
type | Residential, Commercial, Industrial ou Land plot |
residentialType, commercialType, industrialType | sous-type - un code ou un tableau de codes |
marketSegment | primary (neuf) ou secondary |
description | description, jusqu'à 5000 caractères |
address | country, city (obligatoire), district, region, street, streetNumber, postalCode, location |
price, currency | prix ; devise UAH, USD, EUR, AZN, GBP, AED, CNY, TRY, GEL |
constructionYear | année, 1700-2100 |
spaceAll, spaceLiving, spaceKitchen, effectiveArea, auxiliaryArea, landPlotArea | surfaces |
rooms, bedrooms, numberOfBathrooms, balconies, numberWindows, unitsCount | nombres |
floor, buildingFloor, ceilingHeight | étage, nombre d'étages, hauteur sous plafond |
condition | needsRenovation, partialRenovation, renovated, designer, shellCore, newFromDeveloper |
buildingType | newBuilding, secondary, stalinka, khrushchevka, brezhnevka, czech, gostinka, prerevolutionary, townhouseRow, detached, other |
wallMaterialType, constructionTech, kitchenType | matériau des murs, technique de construction, type de cuisine |
amenities, buildingAmenities | équipements du logement et de l'immeuble - tableaux de codes |
utilitySystem, heating, windowView, balcony, parking | réseaux, chauffage, vue, balcon, stationnement |
safety | shelterNearby, powerBackup, autonomousHeating, waterReserve, starlink, gasAvailable, internetAvailable, elevatorWorks (oui/non) |
accessibility | ramp, groundLevelEntrance, wideDoors, disabledParking, wheelchairElevator (oui/non) |
programs | eOselya, eVidnovlennya, mortgageEligible, installment |
monthRentalRate, annualIncome, annualYield, paybackPeriod, propertyTax, insuranceCost, managementFee, repairsReserve | indicateurs d'investissement |
commission | commission pour les agents : payer, type, value |
tour | visite 3D : kind, url |
complexId | la résidence à laquelle appartient le logement |
photos, video | médias |
publish, strictPhotos | voir ci-dessus |
Champs d'un bien à louer
Obligatoires : name, type (Residential, Commercial, Industrial), address, price. La plupart des champs sont les mêmes que pour un bien à vendre ; les champs propres à la location :
| Champ | Description |
|---|---|
rentalType | long - longue durée, short - à la journée |
price, dayPrice, deposit | loyer, tarif journalier, dépôt de garantie |
totalArea, totalFloors, bathrooms | surface, nombre d'étages, salles de bain |
minRentTime, minTermMonths | durée minimale |
availableFrom | disponible à partir du |
checkIn, checkOut | heures d'arrivée et de départ : from, to — heures de la journée (15 = 15:00) |
withChildren, withPets | enfants acceptés ; animaux : yes, no, with someone |
furniture, furnitureList | mobilier |
conditionType | état - les mêmes valeurs que condition pour un bien à vendre |
onsiteAmenities, internalFeature | équipements |
utilitiesIncluded, utilitiesCost | charges |
checkInPay, onlinePay, bankTransfer, reportingDocuments | modes de paiement et justificatifs |
Champs d'une résidence
Obligatoires : name, address.
| Champ | Description |
|---|---|
description, descriptionPresentation, descriptionSocial | descriptions |
price | from, to, currency |
space | surfaces des logements : from, to |
apartType | types de logements |
class | economy, comfort, comfortPlus, business, premium, elite |
stage | planning, excavation, construction, finishing, commissioned, delivered |
completionQuarter | trimestre de livraison |
queues | tranches : name, stage, completionQuarter |
sectionsNumber, floors, apartmentsNumber, parkingSpaces | nombres |
installment, installmentTerms | paiement échelonné : downPaymentPct, termMonths, interestRate |
infrastructure | infrastructures - un tableau de codes |
territoryDescription, parkingDescription, infrastructureDescription | descriptions |
apartmentPlans | plans des logements : apartType, area, price, description, photos |
progress | avancement des travaux : title, date, description, photos |
Le schéma complet de chaque type avec toutes les valeurs : composants ObjectWriteProperty, ObjectWriteRental, ObjectWriteComplex dans /openapi.json. Ils sont générés à partir des mêmes contrôles que ceux exécutés par le serveur.
Clé d'agence
| Requête | Ce qu'elle fait |
|---|---|
PATCH /objects/{kind}/{id}/agency | transférer un bien dans l'agence ou le ramener en personnel : corps {"targetAgencyId": "<id>"} ou {"targetAgencyId": null} ; sans le champ - dans l'agence de la clé |
PATCH /objects/{kind}/{id}/assignee | attribuer un agent : {"assignTo": "<user id>"} |
Avec une clé personnelle, les deux répondent 403. Un bien ne peut pas passer directement d'une agence à une autre (409 conflict) - ramenez-le d'abord en personnel. Attribuer un agent à un bien personnel, ou à quelqu'un qui n'est pas membre actif de l'agence, donne aussi 409 conflict. Droits : vers l'agence - l'auteur du bien ; retour en personnel - un manager, le propriétaire de l'agence ou l'auteur ; attribuer n'importe qui - manager et au-dessus, un agent - uniquement lui-même.
Événements
object.created, object.updated, object.published, object.deleted - voir Webhooks.
Voir aussi
- Dictionnaires - codes des catégories et des attributs.
- Fichiers - envoi de photos.
- Supports pour les biens - page d'atterrissage et PDF d'un bien.