FAQ: Zabun Api

Guidelines

Algemeen

Waar vind ik de mapping van json naar scherm?

Mapping van velden

Welk endpoint moet ik gebruiken?

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

Waar vind ik dan de swagger?

url
Nieuwe https://gateway-cmsapi.v2.zabun.be/swagger/index.html
Oude https://public.api-cms.zabun.be/swagger/ui/index

Welke waardes heb ik nodig ?

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.

Hoe kan ik de verbinding met de zabun api/server testen?

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" 

Wat is curl, en wat moet ik ermee ?

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.

Hoe doe ik dan curl op windows?

  1. Installeer Visual Studio Code
  2. Voeg de REST Client extensie toe
  3. Maak een bestand aan met de extensie .crl
  4. Druk op F1 en kies voor commando: REST Client: Send Request
  5. Resultaat : Status code 200
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

Wat zijn HTTP statuscodes dan ?

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:

Authenticatie

API Key

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.

Hoe sorteer, filter en doe ik aan paging?

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:

Hoe specifieke of alle talen op halen?

Accept-Language is een header parameter

Panden

Hoe synchroniseer ik mijn panden?

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

Een alternatieve manier van panden ophalen

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

Alle data van een pand ophalen

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:

1. Via de parameter ´?extended=true´

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







2. De id van de gemeente opvragen via een ander endpoint

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   ''

Pand markeren als ONLINE

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

Wat zijn documenten en waarom wil ik ze niet op mijn website?

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.

Hoe werken indelingen in de API

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 éne count = 2 en de andere count = 3 heeft. In totaal zijn er 5 slaapkamers in het pand.

Hoe maak ik een nieuw 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\"
        }
    }
}"

Hoe haal ik foto's bij panden op?

Dit kan via endpoint je krijgt een url die je kan ofwel linken of downloaden.

[
  {
    "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": {}
  }
]

Hoe kan ik weten hoe lang een pand een bepaalde transactie(te koop, te huur, ...) heeft?

Onder endpoind 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.

Accounts

Hoe zoek ik mijn accounts op?

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   ''

Contacten

Hoe zoek ik mijn contacten op?

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   ''

Hoe maak ik een nieuw contact

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 }'

Hoe maak ik een contact die ook kandidaat is bij een pand

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.

Hoe maak ik een nieuw contact + bijhorende zoekfiche

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,
   } 
}'

Zoekfiches

Hoe zoek ik mijn zoekfiches ?

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   ''

Hoe kan ik een gemeente toevoegen aan een zoekfiche verzoek ?

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 belgie, 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

Het verschil tussen hoofdtypes en types

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 één specifieke grond type_id in te vullen in de "types" lijst, zodat enkel die éne 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
   } 
}'

Keuzelijsten

Alle keuzelijsten hebben hun eigen endpoints, maar je kan ook alle keuzelijsten voor een sectie ophalen via de /option_items endpoint

Voorbeeld:

Met deze endpoint kan u het aantal requests naar de API verminderen.

Extra Velden

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

Stap 1: Ophalen van extra velden

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'



Stap 1 bis: Ophalen van dropdown opties.

Er zijn drie mogelijkheden om de optie lijst op te halen van een extra veld met type "DROPDOWNLIST"

  1. Je kan de /extra_field endpoint extenden om de lijst als extra data binnen te krijgen. Dit zorgt ervoor dat de request mogelijks wat langer duurt
curl --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.

  1. Via volgende endpoint kan je de dropdown opties apart ophalen per extra veld
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'



  1. Je kan ook via alle dropdown opties ophalen voor alle extra velden. Het resultaat is dezelfde als hierboven. Je moet zelf de dropdown opties groeperen op basis van de extra_field variabele.

Stap 3. Ophalen van de extra veld waardes die ingevuld zijn bij het object

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

Stap 4. Invullen of aanpassen van een extra veld waarde

  1. Dit kan via de PUT .../extra_field_values endpoints bij de respectievelijke controllers. De belangrijke velden in de body zijn extra_field_autoid en value_xxxx.
curl --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 één van deze wilt gebruiken, neem contact op met de support zodat uw gevraagde waarde kan afgecheckt worden, of gebruik het op eigen risico.

  1. Je kan ook via de extra_field controller een waarde invullen voor een extra veld van eender welk object Bij deze endpoint moet u wel de object_key_autoid variabele invullen met de id van het pand, de contact of het account. De validatie controleert of deze bestaat
curl --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
}'

Korte vragen met bondige antwoorden

Q: Ik krijg een validatie error met als melding "Error converting value xxxx to type 'System.Int64[]'.

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)

Q: Grondoppervlakte, bewoonbare oppervlakte, kadastraal inkomen

A: op te vragen via url:

Q: Bouwtechnische informatie

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

Q: WETTELIJKE INFO

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

Q: Via de API krijg ik EPC Certificate 1 terug, hoe weet ik welke waarde voor welke Label staat of staat dit er los van?

A: dit veld is gemapped met dit veld

De referentie van het epc document is te vinden in volgende variabele

Q: Waardes van overstromingsgevoeligheid

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.

Q: Omgevingsvergunning voor stedenbouwkundige handelingen

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.

Q: Verkooprecht, Handhaving

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

Q: Omgevingsvergunning voor het verkavelen van gronden

Zou dit dan gaan om verkavelingsvergunning? Hoe kan ik hier dan aan via de API?"

A:

is gemapped met

Q: Waar vind ik mijn vertegenwoordigers, en heb ik rechten tot accounts nodig ?

A Omtrent accounts/gebruikers: ze moeten /api/v1/person gebruiken voor de vertegenwoordigers. Rechten tot accounts is dus niet nodig

Q: Wat zijn de mogelijk waardes van overstromingsgevoeligheid ?

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 .

Q: Waar vind ik verkoopsrecht, verkavelingsvergunning, gerechterlijke of bestuurlijk maatregel

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

Q: Ik heb bv. 15 records in zabun maar zie er maar bv. 5 in api response?

kijk of je page parameter start met index 0. Zie 'Hoe sorteer, filter en doe ik aan paging?'