url | |
---|---|
Nieuwe | https://gateway-cmsapi.v2.zabun.be |
Oude | https://public.api-cms.zabun.be |
In de nabije toekomst wordt de api op het oude platform offline gehaald. Als u nog niet bent overgeschakeld naar het nieuwe, gelieve dit dan in orde te brengen. Er zijn geen verschillen in de basis werking van de API tussen het nieuwe en het oude, behalve de URL
url | |
---|---|
Nieuwe | https://gateway-cmsapi.v2.zabun.be/swagger/index.html |
Oude | https://public.api-cms.zabun.be/swagger/ui/index |
Header name | Waarde |
---|---|
api_key | opvragen via support |
client_id | opvragen via support |
server_id | opvragen via support |
X-CLIENT-ID | De ID van je bedrijf, als je hoovert over je username in zabun rechtboven, kan je deze terug vinden. |
X-USER-ID | De ID van je user |
Tip: Alles is case sensitve. Als een header met een hoofdletter is, moet je deze ook zo invullen. Anders kunnen er errors ontstaan.
Vervang in onderstaande curl, de #...# waardes door die hierboven.
curl -X GET 'https://gateway-cmsapi.v2.zabun.be/auth/v1/heartbeat' \
--header 'Accept: text/plain' \
--header 'api_key: #api_key#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id#'' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'X-USER-ID: #X-USER-ID#'
Dit is het antwoord dat je dient te krijgen
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json
Expires: -1
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
Request-Context: appId=cid-v1:863e6ef5-006b-4414-af65-e59561f372b2
Access-Control-Expose-Headers: Request-Context
X-Powered-By: ASP.NET
Date: Tue, 23 Jan 2024 06:55:23 GMT
Connection: close
Content-Length: 15
"V1 xx/xx/xxxx"
Het curl
commando is een veelgebruikte opdrachtregel-tool in Unix en Unix-achtige besturingssystemen voor het overbrengen van gegevens met URL-syntaxis. Het ondersteunt diverse protocollen zoals HTTP, HTTPS, FTP en SFTP, waardoor het breed inzetbaar is voor het downloaden of verzenden van bestanden van en naar servers. Daarnaast wordt curl
vaak gebruikt in scripting en programmeren om API-aanvragen te doen en om met webdiensten te communiceren.
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Tue, 23 Jan 2024 06:50:26 GMT
Connection: close
Content-Length: 10967
HTTP-statuscodes zijn gestandaardiseerde nummers die door een webserver worden teruggegeven om de status van een verzoek aan te geven, zoals of het succesvol was, een fout bevatte, of verdere actie vereist. Ze zijn onderverdeeld in vijf categorieën, die elk een specifieke klasse van antwoorden vertegenwoordigen: informatief (1xx), succes (2xx), omleiding (3xx), cliëntfout (4xx) en serverfout (5xx). De vijf bekendste HTTP-statuscodes zijn:
Via drie extra api key headers: client_id, server_id en api_key, kan men direct requests uitvoeren zonder de Oauth endpoints te gebruiken. API Key gegevens worden geactiveerd en uitgegeven door de support aan externe partners of webbouwers die een synchronisatie via de API willen opzetten.
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_Key: #api_key#' \
Belangrijk: Met de API key headers kan je geen OAuth endpoints aanroepen. Bijgevolg, als je een OAuth Bearer token probeert in te vullen in de Authentication header, zal je altijd een 403 authentication failed krijgen. Deze authenticatie krijgt voorrang op de API Key authenticatie. U mag dus geen authentication header toevoegen.
basis opstelling voor alle search endpoints:
{
"paging": {
"page": 0,
"size": 100
},
"filtering": {
"full_text": "xxxx"
},
"sorting": {
"sort": "MOST_RECENT",
"order": "ASC"
}
}
Paging:
Het page veld onder paging die bv. meegestuurd wordt in search start met index 0. als je dus 21 items met size 10 hebt dan zie je op:
Filtering:
Sorting:
Accept-Language is een header parameter
Volgende endpoint wordt voorgesteld als u de panden wilt ophalen die geactiveerd worden in Zabun voor de api media .
curl --location 'https://gateway-cmsapi.v2.zabun.be/api/v1/property/media-sync/14' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_Key: #api_key#' \
De 14 in de URL staat voor media met ID "14", dat "Website via API" noemt in Zabun. De vertegenwoordiger zal deze media gebruiken om aan te duiden welke panden online mogen op de website die u zal connecteren met de API.
Via deze endpoint worden enkel panden opgehaald die zijn ingesteld als publiek (= groen huisje, status actief, niet verwijderd en niet in het archief) en geactiveerd voor de media binnen de opgegeven start en eventueel (geplande) einddatum
Deze endpoint zal ook automatisch panden deactiveren voor de media als de publicatie van het pand buiten de ingestelde datums valt, of het pand niet meer ingesteld is als publiek (= een rood huisje of status inactief, verwijderd of gearchiveerd)
Panden die u terug krijgt in de verkregen lijst, mogen online weergegeven worden. Panden die voorheen in de lijst voorkwamen, maar bij de laatste request niet meer, moeten offline gehaald worden.
U kan zelf nog filters toevoegen aan deze request, om bijvoorbeeld panden te verkrijgen met een bepaalde transactie type, pand type, stad ... zie hiervoor de swagger. De filters moeten worden toegevoegd aan de uri als query-parameters
Als u echter alle panden wil ophalen of met uw eigen filters en zonder gebruik te maken van een media, dan kan de standaard search endpoint gebruikt worden.
curl --location --request POST 'https://https://gateway-cmsapi.v2.zabun.be/api/v1/property/search' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
Hier vult u zelf de filters in, te vinden op de swagger, in de body van de request. Dit is een verschil met de GET endpoint hierboven sinds dat deze een POST is. Onthoud: hier kan u dus ook panden terug krijgen die eventueel niet online mogen weergegeven worden op de website, als u niet de correcte filters gebruikt. Daarom stellen we voor om de media-sync endpoint, hierboven, te gebruiken als u de vertegenwoordiger vanuit Zabun de controle wil geven over de beschikbare panden.
always_show_all_children: zal altijd alle kind objecten in de lijst stoppen ongeacht de filtering. deze kinderen tellen niet mee tot het aantal panden en ook niet tot de paging size limiet.
Indien u de sync request wil nabootsen met deze search endpoint, moet u ten minste volgende filters meegeven
public: true,
active_media_ids: [#media_id#], //Dit zal 14 zijn
Bovenstaande endpoints halen een lijst van panden op met een beperkte collectie van data(=variabelen). Als u echter alle data van een pand wilt, moet u dit pand rechtstreeks opvragen
curl --location --request GET'https://gateway-cmsapi.v2.zabun.be/api/v1/property/#PAND ID#
' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
Als je wil dat de geo informatie uitgebreid wordt terug gegeven kan dat op 2 manieren:
curl --location --request GET'https://gateway-cmsapi.v2.zabun.be/api/v1/property/#PAND ID#?extended=true
' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
Speciale velden van een pand
publish = deze vlag bepaalt of het pand online (true) of offline (false) is, deze vlag gebruikt de onderstaande velden om dat te bepalen
status_id = 1 = actief, 2 = inactief
curl --location --request GET'https://gateway-cmsapi.v2.zabun.be/api/v1/geo/cities/#CITY ID#
' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
Wanneer u een pand synchroniseert en online brengt op uw website, is het interessant om dit door te geven aan de CMS Api. Deze gegevens worden gebruikt om aan de vertegenwoordiger te tonen dat het pand succesvol is gesynchroniseerd en online staat, waarbij een link naar het pand op de website wordt toegevoegd aan Zabun.
curl -X POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/property/#PAND_ID#/media/14/start-stop' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
-d '{ "start_media": true}'
U kan ook aangeven wanneer een pand op uw website wordt bijgewerkt, of offline gehaald van de website, via deze endpoint. Deze drie JSON body's zijn mogelijke waarden die u kan gebruiken. U kan ze niet door elkaar gebruiken
{"start_media": true} => "Het pand is aangemaakt op de website en online te bezichtigen
{"update_media": true} => "Het pand is bijgewerkt
{"stop_media": true} => "Het pand is offline gehaald en niet meer te vinden op de website
In Zabun is het mogelijk om een categorie te kiezen bij het activeren van een pand voor de geselecteerde media. Om een categorie beschikbaar te maken voor de panden voor uw media, moet u deze aanmaken via de API voordat ze geselecteerd kunnen worden op Zabun. Hieronder staan de verschillende stappen beschreven.
GET /api/v1/media/14/categories
.curl --location --request GET 'https://gateway-cmsapi.v2.zabun.be/api/v1/media/14/categories' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
id
. Dit is de 'category_id'. Deze variabele wordt gebruikt om de categorie te koppelen aan het pand.curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/media/14/categories' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data '{
"name": {
"NL": "Mijn nieuwe categorie",
"FR": "Ma nouvelle catégorie"
}
}'
Voorbeeld antwoord
{
"name": {
"nl": "Mijn nieuwe categorie",
"fr": "Ma nouvelle catégorie"
},
"id": 2,
"media_id": 14,
"bedrijf_id": ####
}
DELETE /api/v1/media/14/categories/{category_id}
. Category_id vindt u in de antwoorden van de GET list of POST new in variabele "ID".
Gelieve op te passen met het verwijderen van categorieën. Dit heeft een direct resultaat en invloed op de panden in uw media syncscurl --location --request DELETE 'https://gateway-cmsapi.v2.zabun.be/api/v1/media/14/categories/2' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
U krijgt een 200 OK met body "true" als antwoord indien het verwijderen is gelukt
active_category_id
, een lijst van intger ids = de category ids, wordt gegeven in de response van endpoint POST /api/v1/property/media-sync/14
= "media sync", indien er minstens 1 categorie geselecteerd is.
Je kan de variabele voor de panden ook terug vinden in endpoint GET /api/v1/media/{media_id}/properties
Dit kan via endpoint http://api-cms.zabun.be/api/v1/property/{ID}/photos je krijgt een url die je kan ofwel linken of downloaden. Standaard zitten foto's ook bij de GET Property endpoint
[
{
"property_id": 3708136,
"type_id": 0,
"url": "https://files.zabun.be/upload/2791/images/3746002791000001817.jpg",
"autoid": "3746002791000000977",
"file_autoid": "3746002791000001817",
"url_thumbnail": "https://files.zabun.be/upload/2791/images/3746002791000001817_tn.jpg",
"reference": "3746001033000012505.jpg",
"file_size": 508010,
"index": 1,
"creation": "2024-04-08T13:21:12+02:00",
"creation_person_id": 18454,
"changed": "2024-04-08T13:21:12+02:00",
"changed_person_id": 18454,
"company_id": 2791,
"comment": {}
}
]
####Wat zijn de filters? Bij het syncen van foto's en bestanden is het mogelijk om een filter toe te passen op hun type. De volgende drie regels worden vaak toegepast.
####Hoe pas ik de filters toe op mijn website?
Automatisch Via de GET property endpoint geeft u de media_id mee als query_parameter. Hierbij worden de filters, die hierboven zijn beschreven, automatisch toegepast op de foto en bestand lijsten die u meekrijgt in de pand data. Indien u geen media_id meegeeft, dan wordt er geen filter toegepast en krijgt u alle foto's en bestanden terug, ongeacht hun type (dus ook zonder type). De aparte endpoints om foto's en bestanden op te halen van een pand, worden nooit automatisch gefilterd. Bijvoorbeeld: /api/v1/property/?media_id=14.
Manueel
null
. U kan ook zelf kiezen welke type_ids u toe laat of uitfiltert. De namen van de types vindt u onder
Documenten zijn realtime gegenereerde bestanden op basis van een vooringestelde template. Deze bestanden kunnen affiches zijn met pand data, maar kunnen ook statistieken van contacten en hun gegevens zijn, zoals maand rapporten. Documenten zijn dus vooral voor intern gebruik bedoeld, en worden best niet zomaar op de website aangeboden. Het is uiteraard mogelijk om een document te genereren in Zabun, en deze op te laden naar de bestanden van een pand, om ze dan via /files op te halen.
Als er toch documenten (en de generatie ervan) willen getoond worden op de website, dan zal u voor permissie moeten vragen aan Zabun. Deze zijn namelijk niet standaard inbegrepen in het webbouwer profiel.
Om de beschikbare indelingen te verkrijgen, kan men de endpoint '/property/layouts' oproepen. Deze data bevindt zich ook in '/property/options_items' onder "layouts".
Het resultaat is een lijst van IDs met benamingen en andere data over de indelingen die het bedrijf heeft. Hieronder zitten standaard indelingen, zoals slaapkamer: ID = 1 en badkamer: ID = 5, en ook custom indelingen met hun eigen ID.
Foto toont een voorbeeld van woonkamer, met ID = 7
Deze IDs moeten gekoppeld worden met de layout_id die men vindt in de pand data onder "layouts".
Pand data via endpoint /property/
In deze foto gaat het dus over een woonkamer, doordat layout_id gelijk is aan 7
Andere data die men vindt over een indeling van een pand is opp., verdiep, aantal, sortering en commentaar in alle actieve talen als ze iets ingevuld hebben.
Om het aantal indelingen te tellen, moet men de volgende som doen: Tel alle "counts" op van de items in de indeling lijst die voor een layout_id voorkomen. Het is namelijk mogelijk dat een bepaalde layout meerdere keren voorkomt in de layouts lijst, sinds men in Zabun dezelfde indelingen kan opslitsen in meerdere regels, om zo een onderscheid te maken tussen elkaar.
Een voorbeeld: Men maakt een regel voor slaapkamer aan met als commentaar "gelijksvloer" en vult het aantal "2" in. Men maakt nog een regel voor slaapkamer aan met als commentaar "bovenverdiep" en vult het aantal "3" in. Het resultaat is een "layouts" lijst met 2 items. Beide items hebben "layout_id" = 1, waarvan de ene count = 2 en de andere count = 3 heeft. In totaal zijn er 5 slaapkamers in het pand.
curl --location "https://gateway-cmsapi.v2.zabun.be/api/v1/property" \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header "Content-Type: application/json" \
--data "{
\"office_autoid\": 0,
\"transaction_id\": 1,
\"type_id\": 26,
\"status_id\": 1,
\"show\": 1,
\"mandate_type_id\": 1,
\"mandate_start\": \"2024-05-03T09:39:48.423Z\",
\"price\": 250000,
\"responsible_salesrep_person_id\": #X-USER-ID#,
\"address\": {
\"city_geo_id\": 1001082,
\"number\": \"180\",
\"country_geo_id\": 23,
\"street_translated\": {
\"nl\":\"vijfseweg\"
}
}
}"
Onder endpoint http://api-cms.zabun.be/api/v1/property/{ID} heb je een veld history_transaction.
hier kan je zien wanneer een pand naar deze transactie is veranderd. de onderste in de lijst is de laatste aangepaste transactie en op datum kan je zien hoelang het pand al deze transactie heeft.
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/account/search' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact/search' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--d '{"last_name": "CROUGHS",
"title_id": 1,
"status_id": 1,
"responsible_salesrep_person_id": 18911 }'
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contactmessage' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--d '{
"contact": {
"email": "[email protected]",
"first_name": "Ben",
"last_name": "Croughs",
"marketing_opt_in": false,
"mailing_opt_in": false,
"phone": "496999632",
"phone_cc": "32",
"language": "NL",
"question": "Kopen"
},
"message": {
"text": "Kopen",
"property_id": 3309172,
"info": [
"info1",
"info2",
"info3"
]
}
}'
deze endpoint zal ook een standaard zoekfiche maken aan de hand van het pand.
Om de vraag of het bericht toe te voegen aan de taak (=het contactformulier), gebruikt u variabele message.text. contact.question heeft dezelfde functionaliteit als message.text en wordt momenteel gebruikt als back-up indien message.text leeg is. contact.question kan echter in de toekomst verdwijnen, dus opteer om message.text.
message.info kan gebruikt worden om extra informatie of vragen toe te voegen. Dit is handig voor als uw keuze opties (=checkboxes) toevoegt aan uw contactformulier. Deze worden na de vraag in de taak gezet in volgende formaat: Vraag + "Vraagt info over:" + elke item in message.info, gesplitst met een ','
Voorbeeld: contact.question = "Dit veld is onnodig", message.text = "Ik wil graag een huis kopen", message.info: ["Ik wil A weten", "Ik wil B zien"] Resultaat beschrijving taak (contactformulier) = Ik wil graag een huis kopen. Vraagt info over: Ik wil A weten, Ik wil B zien
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contactrequest' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--d '{
"contact": {
"last_name": "CROUGHS1",
"title": 1,
},
"request": {
"price": {
"min" : 250000,
"max" : 750000
},
"sales_rep": 18911,
}
}'
Bij het updaten van de vertegenwoordiger van een taak moet u opletten voor de nieuwe task_autoid
. Er wordt namelijk een nieuwe taak met een nieuwe task_autoid
gegenereerd, waarbij de oude taak met de meegegeven task_autoid
in de patch URL verwijderd wordt. Dit is uitzonderlijke logica die enkel bij taken en voor veld responsible_salesrep_person_id
uitgevoerd wordt. Andere velden patchen verandert de task_autoid
niet.
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/request/search' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--data-raw ''
om een zoekfiche aan te maken, kan je een lijst van cityids meegeven, als je een postcode hebt, dan zal je deze moeten vertalen naar cityids, dat kan je door eerst onderstaande request te doen, country_geo_ids = id van België, vast = 23, en dan kan je in zipcode een lijst van postcode zetten
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be//api/v1/geo/cities/search' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'Client_ID: #client_id#' \
--header 'Server_ID: #server_id# \
--header 'API_Key: #api_key#' \
--header 'Content-Type: application/json' \
--data-raw '{ filtering: {
"zip_codes": [ 3800, 3840 ],
"country_geo_ids": [23],
},
"paging": {
"page": 0,
"size": 10
},
"sorting": {
"order": "ASC"
},
}'
en dan via onderstaande call kan je de fiche zelf aanmaken
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contactrequest' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--d '{
"contact": {
"last_name": "CROUGHS1",
"title": 1,
},
"request": {
"price": {
"min" : 250000,
"max" : 750000
},
"sales_rep": 18911,
"cities": [
#city-ids#
],
}
}'
dan heb je een lijst van gemeenten en deelgemeenten, die moet je dan doorgeven aan de contactrequest api functie
Zoekfiches werken op basis van pand types. Als een hoofdtype wordt aangeduid in Zabun, dan worden alle types onder die hoofdtypes opgeslagen in het zoekfiche. Dezelfde logica wordt toegepast op het aanmaken van een zoekfiche via de API.
Bij het aanmaken van een zoekfiche kan je een lijst van pand hoofdtypes "headtypes" en/of pand types "types" doorgeven. Indien je een hoofdtype id invult in de headtypes lijst, dan worden automatisch alle types van die hoofdtype toegevoegd aan de zoekfiche. Als je een type id invult in de types lijst, dan wordt enkel die ene type toegevoegd aan de zoekfiche. Terwijl wordt ook de hoofdtype zichtbaar in de zoekfiche in Zabun, omdat je een type onder deze hoofdtype hebt gekozen. De hoofdtype zelf wordt niet opgeslagen in de zoekfiche.
Dit betekent dat, als je maar 1 of meerdere types van een hoofdtype wilt toevoegen aan een zoekfiche, maar ze niet allemaal, dat je dan al de nodige type_ids moet toevoegen aan "types", zonder de headtype_id toe te voegen aan "headtypes". Je laat dan "headtypes" leeg.
Je kan uiteraard mengelen door bijvoorbeeld de headtype_id van Huis toe te voegen aan de headtypes lijst voor alle huis types toe tevoegen, en dan een specifieke grond type_id in te vullen in de "types" lijst, zodat enkel die ene grond type wordt toegevoegd aan de zoekfiches i.p.v. ze allemaal.
curl --location --request POST 'https://gateway-cmsapi.v2.zabun.be/api/v1/contactrequest' \
--header 'Content-Type: application/json' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--d '{
"contact": {
"last_name": "CROUGHS1",
"title": 1,
},
"request": {
"price": {
"min" : 250000,
"max" : 750000
},
"sales_rep": 18911,
"cities": [
#city-ids#
],
"headtypes": [3], //House = alle types onder hoofdtype Huis
"types": [19] //Landbouwgrond. Hoofdtype grond zal zichtbaar zijn in de zoekfiche, met enkel landbouwgrond aangevinkt
}
}'
Alle keuzelijsten hebben hun eigen endpoints, maar je kan ook alle keuzelijsten voor een sectie ophalen via de /option_items endpoint
Met deze endpoint kan u het aantal requests naar de API verminderen.
Het ophalen en invullen van extra velden op pand, contact of account niveau kan op verschillende manieren. Hieronder een stappenplan met een contact dropdown extra veld als voorbeeld
De /extra_fields
endpoints halen de mogelijke extra velden op voor hun respectievelijke object: /property/extra_fields
, /contact/extra_fields
, /account/extra_fields
of /extra_fields
voor ze allemaal.
curl --location 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact/extra_fields' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
Er zijn drie mogelijkheden om de optie lijst op te halen van een extra veld met type "DROPDOWNLIST"
/extra_field
endpoint extenden om de lijst als extra data binnen te krijgen. Dit zorgt ervoor dat de request mogelijks wat langer duurtcurl --location 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact/extra_fields?extended=true' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
haalt dan alle extra velden op met hun dropdown opties.
curl --location 'https://gateway-cmsapi.v2.zabun.be/api/v1/extra_fields/3523002791000000004/dropdowns \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
extra_field
variabele.Dit kan via de /extra_field_values
endpoints bij de respectievelijke controllers
curl --location 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact/3709002791000000010/extra_field_values 'Het grote nummer is hier een contact_autoid
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
Voor de waarde op te halen, gebruik je ofwel de respectievelijke "value_xxxx", of kan je de generieke value
variabele gebruiken.
In het voorbeeld is de type
"DROPDOWNLIST" en kan je value_ddl
gebruiken, maar ook value
die dezelfde waarde heeft
Hieronder een lijst van de koppeling tussen type en waarde
PUT .../extra_field_values
endpoints bij de respectievelijke controllers.
De belangrijke velden in de body zijn extra_field_autoid
en value_xxxx
.value_lang_string
in (geen value_string
, deze wordt nog niet ondersteund)value_number
invalue_ddl
incurl --location --request PUT 'https://gateway-cmsapi.v2.zabun.be/api/v1/contact/3709002791000000010/extra_field_value' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
--data '{
"extra_field_autoid": 3523002791000000004,
"value_ddl": 5
}'
U hoeft geen object_key_autoid
in te vullen. Indien u dit toch wilt doen, moet u zorgen dat deze gelijk is aan de ID die u gebruikt in de URL van de endpoint. In het voorbeeld moet object_key_autoid
= 3709002791000000010
Op dit moment kan je de generieke value
+ type
variabele niet gebruiken om de waarde in te vullen, je moet de specifieke gebruiken.
Volgende waarden werken maar zijn nog niet uitvoerig getest. Indien u een van deze wilt gebruiken, neem contact op met de support zodat uw gevraagde waarde kan afgecheckt worden, of gebruik het op eigen risico.
value_date
invalue_ddl
invalue_string
inobject_key_autoid
variabele invullen met de id van het pand, de contact of het account. De validatie controleert of deze bestaatcurl --location --request PUT 'https://gateway-cmsapi.v2.zabun.be/api/v1/extra_field/extra_field_value' \
--header 'X-CLIENT-ID: #X-CLIENT-ID#' \
--header 'client_id: #client_id#' \
--header 'server_id: #server_id# \
--header 'api_key: #api_key#' \
--header 'Content-Type: application/json'
--data '{
"extra_field_autoid": 3523002791000000004,
"object_key_autoid": 3709002791000000010,
"value_ddl": 5
}'
A: U stuurt een waarde, zoals een id, als apart door terwijl de variabele/filter een lijst verwacht. Zet het ID tussen []. Bijvoorbeeld office_autoids => "office_autoids:" [xxxxxxxxxx] (foutief: "office_autoids:" xxxxxxxxx)
Te vinden onder de tab technisch in Zabun. Waar via de API?
A: op te vragen via url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/xxxxxx
Technicals, technical_dropdowns en evaluation lijsten zijn ook terug te vinden onder
EPC Label Alle gewenste EPC info kan ik vinden via de API, behalve de label. Op Zabun zie ik wel een label staan.
A:
op te vragen via url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/xxxxxx
Indien de vertegenwoordiger manueel een label heeft gekozen voor het pand, dan bevat variabele custom_epc_label deze label als pure tekst. (Bijvoorbeeld A, A+, A plus, D, E, ...)
Indien bovenstaande veld leeg is, dan werd de label berekend. U zal zelf een label moeten berekenen voor uw website op basis van de waarde die te vinden is in variabele epc_value
A: dit veld is gemapped met dit veld
De referentie van het epc document is te vinden in volgende variabele
A: De gewone epc en epb zijn voor volledige huizen of uw eigen appartement, de _shared versies zijn voor het gehele gebouw bij een appartement of andere properties waar er gedeelde layout is.
Alle epc velden worden gebruikt voor de epb waarden, behalve de referentie. Dit komt omdat deze andere regels heeft qua formaat die niet samen kan geprogrammeerd worden met het epc referentie veld. De aparte regels voor de waarde en de label van de epb is wel geprogrammeerd in de epc velden.
A:
de tekst kan je opvragen via url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/flooding_sensitivities
in dit geval betekend 3 niet overstromingsgevoelig.
de tekst kan je opvragen via url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/flooding_zones
in dit geval betekend 3 niet van toepassing.
Zou dit hetzelfde zijn als Dagvaarding voor stedenbouwkundige overtreding? Hoe kan ik hier dan via de API juist aan?
A:
is gemapped met
om te weten wat de id betekend kan je dit opvragen via url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/town_planning_violations
in dit geval betekend 0 Geen rechterlijke herstelmaatregel of bestuurlijke maatregel opgelegd.
Kan dit precies ook niet in Zabun terugvinden. Onder wat kan ik dit moest dit toch ergens staan, terugvinden via de API?
A:
deze is gemaped met
deze is gemaped met
om te weten wat deze id betekend kan je dit opvragen via de url: https://gateway-cmsapi.v2.zabun.be/api/v1/property/building_licenses
in dit geval betekend 1 bouw vergund
Zou dit dan gaan om verkavelingsvergunning? Hoe kan ik hier dan aan via de API?"
A:
is gemapped met
A Omtrent accounts/gebruikers: ze moeten /api/v1/person
gebruiken voor de vertegenwoordigers. Rechten tot accounts is dus niet nodig
A op pand niveau bestaat flooding_building_score (g score)
en flooding_parcel_score (p score)
. Deze geven de effectieve waarde terug, A, B, C, D of 0 voor onbekend .
A
Voorkooprecht
presale_right_ynu
(string, optional):
Recht van voorkoop
= ['YES', 'NO', 'UNKNOWN']
Verkavelingsvergunning
allocation_license_ynu
(string, optional):
Verkavelingsvergunning
= ['YES', 'NO', 'UNKNOWN']
Tip: Alle _ynu velden zijn variabelen met als waarde "Ja", "Nee", of "Onbekend", in het engels
Gerechtelijke en bestuurlijke maatregel
ik neem aan dat hiermee "Dagvaarding voor stedenbouwkundige overtreding" wordt bedoelt
town_planning_violation_id
(integer, optional)
Deze bevat slechts de ID, de mapping kan opgehaald worden onder
/api/v1/property/town_planning_violations
kijk of je page parameter start met index 0. Zie 'Hoe sorteer, filter en doe ik aan paging?'
A: Ja
A: De sales_rep bij zoekfiche is handig voor als je een specifeke vertegenwoordiger hebt die binnenkomende zoekfiches behandeld, of als men met regios werkt. Het is niet verplicht, maar betekent wel dat de zoekfiche in Zabun terecht komt zonder vertegenwoordiger. Die kan uiteraard in Zabun of via de API alsnog ingevuld worden via een update.
A: U hoeft verder niets door te geven om uw implementatie te voltooien. Wij hebben geen extra configuratie nodig. U kan wel het URL formaat van de pand pagina op uw website doorgeven voor de functionaliteit van het oogje in de media grid bij een pand op Zabun. Zorg hier wel voor een url formaat die gebruik maakt van de Zabun Property Ids. Dit is echter niet nodig, sinds u bij het doorgeven van de publicatie status van het pand ook de URL kan doorgeven, volledig in uw eigen formaat.
A: De directe URLs mogen gebruikt worden. Voor foto's hebben wij ook een cache. Hou er rekening mee dat als een foto/bestand niet meer online staat, dit ook direct zichtbaar is op uw website
A: Panden kunnen 'on the fly' opgehaald worden maar we raden dit ten strengste af door volgende redenen
Om enkel projecten op te halen, kan je op twee manieren werken.
"kind": "true"
meegeven om enkel projecten binnen te halen.is_project
= trueOm nieuwbouw panden op te halen, m.a.w. panden met eigenschap "nieuwbouw", moet je zelf in de panden lijst filteren op variabele development
= true.
Nieuwbouw panden kunnen beide gewone panden en projecten zijn. Als u enkel nieuwbouw projecten wil, m.a.w. een pand van type "project" met eigenschap "nieuwbouw", dan doet u een combinatie van bovenstaande opties
development
= trueis_project
= true en development
= true