Kolibri Development Kolibri Development
  • AppXchange ⇩
    • Documentation intro 
    • Kolibri core API 
    • Widgets 
    • Swagger
      • Getting started 
      • Swagger 
      • Example: Generating a PHP client 
    • Kolibri VOIP API 
    • Workflows (example flows) 
    • Quick start guides
      • Quick start guides 
      • Quick start guide PHP 
  • Sitelink 
  • Mediapartner 
  • Contact 
  • Webhooks 

Table of Contents

Mediapartnership

Welkom bij de Wiki van de Kolibri Real Estate Connector. In deze Wiki wordt uitgelegd wat het doel is van de Connector is en hoe de Connector gebruikt moet worden. Deze Wiki is bedoeld voor de ontwikkelaars van Media Partners. Hieronder een overzicht van de veelgebruikte begrippen binnen de Connector.

Begin bij de Introductie en volg de Wiki tot aan de implementatie om een goed begrip te krijgen van de Connector.

Mocht je na het lezen van deze Wiki toch nog vragen hebben, neem dan contact op met het ontwikkelteam van Kolibri: development@kolibri.software.

Succes met het ontwikkelen!

Het ontwikkelteam van Kolibri.

De Connector heeft alleen actieve panden. We beschouwen een pand actief als deze:

  • te koop, te huur, ter pacht is,
  • verkocht onder voorbehoud of verhuurd onder voorbehoud is,
  • verkocht is, maar niet langer dan 8 dagen.
  • verhuurd is, maar niet langer dan 8 dagen.
  • ingetrokken is, maar niet langer dan 8 dagen.

Is een pand niet meer actief dan verdwijnt deze automatisch en zal deze ook niet meer gedeeld (kunnen) worden met Media Partners.

Een pand is verkocht op de datum waarop de koopakte bij de makelaar wordt getekend. Maar is er nog een voorbehoudsperiode van toepassing dan geldt dat de einddatum van deze voorbehoudsperiode als ‘datum verkocht’. Een pand zal in dit geval dus 8 dagen na de einddatum van de voorbehoudsperiode automatisch verdwijnen. Het pand wordt in dit geval dus een tijdje als ‘verkocht onder voorbehoud’ aangeleverd en vervolgens (na einddatum voorbehoud) 8 dagen als ‘verkocht’.

Introductie

Media Partners

Een Media Partner is een afnemer van de Connector; en haalt dus gegevens op uit de Connector. Voorbeelden van Media Partners zijn portals, drukkers en nieuwsbrief applicaties.

Content Providers

Een Content Provider levert juist gegevens aan de Connector. Een voorbeeld van een Content Provider is Kolibri. Naast Kolibri zijn er nog andere Content Providers welke (nog) niet interessant zijn voor de Nederlandstalige Media Partners waarvoor deze Wiki is geschreven.

Samengevat leveren Content Providers dus data aan de Connector, en deelt de Connector de data met Media Partners, die de data dus op kunnen halen bij de Connector:

Content

Op dit moment worden twee soorten content onderscheiden: panden (Real Estate Properties) en relaties (Relations). De gegevens van een pand zijn onder te verdelen in 24 categorieën, waaronder de locatie gegevens (LocationInfo), de aanbiedende makelaar, vestiging en de medewerker (Contact), informatie over de voorzieningen (Facilities), maar ook financiele informatie (Financials), kadastrale gegevens (Cadastre) en transactie gegevens (Transactions). Een Relation kent veel minder gegevens en de structuur is veel minder complex. Een Relation bestaat met name uit contact gegevens, zoals telefoonnummers, e-mail adressen en adresgegevens. Er zijn 4 typen Relations: medewerkers (Employee), een vestigingen van de makelaar (Offices), bedrijfsrelaties (Companies) en persoonsrelaties (Persons).

Activeren van een Contract

Als een makelaar (een gebruiker van de software van de Content Provider) een pand wilt delen met een Media Partner via de Connector zal zijn makelaarskantoor eerst een Contract moeten hebben met de betreffende Media Partner. Het verkrijgen van een Contract tussen het makelaarskantoor en een Media Partner is per Media Partner een eenmalige actie. Heeft het makelaarskantoor eenmaal een Contract met een Media Partner dan kan hij naar hartenlust panden delen. Meer informatie over het activeren van contracten vind je hier.

Content delen

Heeft een makelaarskantoor eenmaal Contract met een Media Partner dan kan hij panden en relaties gaan delen (Publish) met de Media Partner.

Dan nog even dit…

De Connector is ontwikkeld in het Engels. De Connector wordt namelijk niet alleen door Nederlandse software leveranciers (Kolibri) gebruikt, maar ook door anderstaligen. Alle veldnamen, keuzeopties, groeperingen etc. hebben dus Engelstalige namen. Helaas is het zo dat enkele typisch Nederlandse begrippen geen goede Engelse vertaling kennen. We hebben ons best gedaan een zo goed mogelijke vertaling te geven, al levert het soms grappige woorden op. Excuus hiervoor!

In de XSD zijn wel alle Nederlandse vertalingen opgenomen. Als er geen vertaling beschikbaar is kun je er van uit gaan dat dit veld niet voor de Nederlandse markt relevant is.

De theorie

In dit onderdeel van de Wiki wordt de theorie van de Connector besproken. Er volgt een uitleg over Contracten, Panden en Relaties; kernbegrippen binnen de Connector. Er volgen definities en sequence diagrammen om alles nader toe te lichten. Na de toelichting van de kernbegrippen worden de ‘instellingen en rechten’ besproken om tot slot het datamodel te behandelen.

Contracten

Voordat een makelaarskantoor panden en/of relaties kan delen met een Media Partner heeft het kantoor dus een Contract nodig. De Connector heeft een interface (API) voor Content Providers waarmee contracten aangevraagd kunnen worden. De beschrijving van de API voor Content Providers valt buiten de scope van deze Wiki. Het is enkel belangrijk om te weten dat een Content Provider dus vanuit de software aan de makelaar de mogelijkheid kan bieden om lijsten van Media Partners op te vragen en voor een geselecteerde Media Partner een verzoek voor een Contract in te dienen. Venum biedt deze mogelijkheid aan haar gebruikers.

Defintie: Contract Een Contract is een overeenkomst tussen een makelaarskantoor en een Media Partij waarbij het makelaarskantoor aangeeft de gegevens van alle of van geselecteerde panden te willen delen met de Media Partner. Het aanvragen van een Contract (door het makelaarskantoor) en het bevestigen van het Contract (door de Media Partner) verloopt via de Connector. En ook het verzoek om een Contract te beëindigen (door het makelaarskantoor) en de bevestiging hiervan (door de Media Partner) verloopt via de Connector.

Auto Accept

Sommige Media Partners willen, voordat ze panden van een makelaarskantoor accepteren, eerst een (papieren) overeenkomst met het makelaarskantoor sluiten. Vaak is dit het geval als het makelaarskantoor per pand moet gaan betalen, of een maandelijks tarief moet gaan betalen. Er zijn echter ook Media Partners die alle panden van alle makelaarskantoren accepteren. Voor deze Media Partners is het hebben van een (papieren) overeenkomst helemaal niet relevant. Ieder verzoek van een makelaarskantoor voor een Contract is direct akkoord. Om het gemakkelijk te maken heeft de Connector hier een functie voor ingebouwd die Contract verzoeken voor een Media Partner met instelling ‘Auto Accept = ja’ direct accepteren. De makelaar krijgt dus gelijk na het indienen van een verzoek voor een Contract gelijk akkoord en kan dus direct panden gaan delen. Voor Media Partners met instelling ‘Auto Accept = nee’ werkt het anders. Deze Media Partners zullen met enige regelmaat bij de Connector Contract verzoeken op moeten vragen. Vervolgens kan de Media Partner het Contract (enkele dagen later) accepteren of weigeren.

Auto Accept = ja

De Media Partner hoeft niets te doen. Verzoeken van een makelaarskantoor voor de activatie van een Contract voor een Media Partner worden direct en volautomatisch geaccepteerd door de Connector.

Auto Accept = nee

De Media Partner haalt zelf met regelmaat (bijvoorbeeld 1x per dag) een lijst op met verzoeken voor activatie van Contracten. Vervolgens accepteert of weigert de Media Partner het verzoek door de API van de Connector aan te roepen.

Panden

Zodra een makelaarskantoor een Contract heeft met de Media Partner kan hij panden delen met de Media Partner. Voor het delen van panden biedt de Connector een API voor de Content Providers. De beschrijving van deze API valt buiten de scope van deze Wiki, maar het is belangrijk om te weten dat het delen dus via de software van de Content Provider gaat; dus vanuit Kolibri.

Manual / Auto publish (available)

Er zijn twee manieren waarop panden gedeeld kunnen worden: handmatig of automatisch. Bij handmatige mode kiest de makelaar per pand in de software er voor dat hij deze wilt delen met de geselecteerde Media Partner. Bij automatische mode hoeft de makelaar helemaal niets te doen; alle panden worden automatisch gedeeld met de Media Partner. Maakt de makelaar dus een nieuw pand aan in het software pakket dan wordt deze direct gedeeld met de Media Partner.

Manual Publish Available
Een makelaar kiest zelf welke mode hij wilt gebruiken. De opties waar de makelaar uit kan kiezen hangt echter af van de instellingen van de Media Partner. Sommige Media Partners ondersteunen de handmatige mode niet (‘Manual Publish Available’ = nee). In dit geval kan de makelaar dus mogelijk enkel de automatische mode activeren.

Auto Publish Available
Of de makelaar kan kiezen voor de automatische mode hangt af van de instelling van de Media Partner. Wordt de automatische mode niet ondersteund (‘Auto Publish Available’ = nee) dan kan de makelaar hier ook niet voor kiezen. In dit geval is dus mogelijk alleen de handmatige mode beschikbaar. Het mag duidelijk zijn dat het delen van panden alleen mogelijk is als minstens 1 van beide modes wordt ondersteund.

In onderstaande afbeelding is te zien dat de makelaar voor de geselecteerde Media Partner kan kiezen voor automatische of handmatige mode.

Panden ophalen

Nu de makelaar panden handmatig dan wel automatisch gedeeld heeft met de Media Partner is het voor de Media Partner zaak om de panden op te halen.

Om te voorkomen dat het proces van ophalen van panden door een Media Partner onnodig lang duurt en er onnodig veel dataverkeer plaats vindt verloopt het ophalen van panden in drie stappen:

  1. Haal de lijst op met Contracten (‘makelaarskantoren’).
  2. Haal een beperkte set van gegevens (pand summaries) op van alle actieve panden, per Contract (‘makelaarskantoor’).
  3. Haal alleen de gegevens op van gewijzigde panden.

Door éérst een lijst op te halen van actieve Contracten hoeft de Media Partner zelf niet bij te houden welke Contracten er actief zijn. Houdt de Media Partner dit wel zelf bij dan kan stap 1 worden overgeslagen. Door vervolgens per Contract enkel een beperkte set van gegevens van de actieve panden op te halen kan de Media Partner op basis van de datum waarop het pand voor het laatst is gewijzigd bepalen of zijn versie van de pandgegevens overeenkomen met de meest recente pandgegevens. Heeft de Media Partner is zijn database een pand met een oude wijzigingsdatum dan is het dus zaak om de meest recente gegevens van het betreffende pand op te halen. Dit gebeurt in stap 3.

Bovenstaande 3 stappen kan de Media Partner een aantal keren (max. 2x) per dag doorlopen.

Actieve panden

De Connector heeft alleen actieve panden. We beschouwen een pand actief als deze:

  • te koop, te huur, ter pacht is,
  • verkocht onder voorbehoud of verhuurd onder voorbehoud is,
  • verkocht is, maar niet langer dan 8 dagen.
  • verhuurd is, maar niet langer dan 8 dagen.
  • ingetrokken is, maar niet langer dan 8 dagen.

Is een pand niet meer actief dan verdwijnt deze automatisch en zal deze ook niet meer gedeeld (kunnen) worden met Media Partners.

Een pand is verkocht op de datum waarop de koopakte bij de makelaar wordt getekend. Maar is er nog een voorbehoudsperiode van toepassing dan geldt dat de einddatum van deze voorbehoudsperiode als ‘datum verkocht’. Een pand zal in dit geval dus 8 dagen na de einddatum van de voorbehoudsperiode automatisch verdwijnen. Het pand wordt in dit geval dus een tijdje als ‘verkocht onder voorbehoud’ aangeleverd en vervolgens (na einddatum voorbehoud) 8 dagen als ‘verkocht’.

Pand gegevens

De gegevens van een pand zijn op te delen in 24 blokken of categorieën. Deze categorieën worden elders in deze Wiki uitvoerig beschreven. Het is echter niet zo dat iedere Media Partner altijd alle gegevens van een pand krijgt; dit hangt namelijk af van de rechten die een Media Partner heeft.

Relaties

Het ophalen van relaties gaat eenvoudig: alle relaties (persoonsrelaties, bedrijfsrelaties maar ook medewerkers en eigen vestigingen) worden gedeeld met de Media Partner waarvoor de makelaar een Contract heeft geactiveerd. Wel moet de Media Partner het recht hebben om relaties van een makelaar via de Connector op te halen.

Instellingen en rechten

Niet alle Media Partners zullen zowel handmatige als automatische mode willen of kunnen ondersteunen. Een Media Partner die kosten doorberekend per pand, bijvoorbeeld een drukker die brochures ontwikkeld, zal kiezen voor de handmatige mode. Het is namelijk erg onwaarschijnlijk dat een makelaar automatisch altijd van al zijn aanbod een brochure wilt laten drukken.

Ook zullen niet alle Media Partners al het aanbod kunnen accepteren. Zo zijn er Portals gespecialiseerd in huuraanbod; zij willen enkel huur panden. En zo zijn er weer andere Portals die enkel bedrijfsmatig aanbod willen.

De status van een publicatie (een pand waarvan de gegevens gedeeld worden met een Media Partner) kunnen zichtbaar zijn in de software van de Content Partner. En het heeft natuurlijk alleen zin om de status te tonen bij de relevante panden. De status van de publicatie naar een Portal met enkel bedrijfsmatige panden zullen zo nooit getoond moeten worden bij een particulier pand.

Om bovenstaande netjes te kunnen faciliteren heeft de Connector een aantal instellingen welke door de beheerder van de Connector per Media Partner worden ingesteld. Het is belangrijk dat deze instellingen juist zijn ingesteld. Vraag als Media Partner daarom altijd naar de instellingen van de Connector, om er zeker van te zijn dat deze juist zijn ingesteld!

Het datamodel

De Connector levert op dit moment Real Estate Properties (panden) en Relations (relaties).

Algemeen

De panden uit de Connector komen van verschillende Content Providers. Dit zijn niet alleen leveranciers van Nederlandstalige software pakketten maar ook Content Providers die software leveren aan makelaars uit Oostenrijk, Italië en Kroatië.

Om de gegevens van de verschillende leveranciers te kunnen ontvangen en zonder verlies aan Media Partners aan te kunnen leveren is de Connector meertalig opgezet en wordt de land en cultuur specifieke informatie van het makelaarskantoor van het pand meegeleverd.

Locatie specifieke gegevens

Bij een pand wordt de cultuur (Culture), de geldeenheid (Currency) en de taal (Language) van het makelaarskantoor meegeleverd.

Aan de hand van de cultuur bepaalt de Media Partner hoe de gegevens geïnterpreteerd moeten worden. Geldt in een bepaalde cultuur bijvoorbeeld dat de breedte van een kamer niet de afstand tussen de muren is maar gemeten vanaf het hart van de muren dan is de opgegeven breedte van een kamer dus volgens deze standaard.

De valuta geeft aan welke valuta er gehanteerd moet worden voor de interpretatie van de prijzen. Prijzen bij een pand zijn dus altijd in één valuta. Indien er op een Portal prijzen van panden in meerdere valuta’s weergegeven moeten worden dan is de Media Partner dus zelf verantwoordelijk voor de correcte omrekening.

Tot slot bepaalt de taal de standaard taal van de makelaar. Teksten, zoals de advertentietekst, kunnen in meerdere talen aangeleverd worden. Per ‘vertaling’ wordt de taal van de betreffende vertaling weergegeven. Is er echter geen taal gespecificeerd dan is dit (volgens de makelaar) de standaard tekst, en deze tekst is dus in de standaard taal van het betreffende makelaarskantoor.

Vertalingen

Zoals hierboven staat beschreven kunnen teksten in meerdere talen worden aangeleverd. Welke dat zijn hangt af van

ID’s

Elk pand, elke relatie en elk makelaarskantoor heeft zijn eigen unieke ID. In de Connector worden hier integers voor gebruikt. Er worden nooit ID’s hergebruikt.

Bij een pand, een relatie en een makelaarskantoor kunnen “foreign ID’s” worden meegegeven. Dit zijn de ID’s waaronder het betreffende pand, relatie of makelaarskantoor bij de betreffende Content Provider. De Connector doet niets met deze “foreign ID’s”, behalve ontvangen van de Content Provider en doorsturen naar de Media Partner. De “foreign ID’s” kunnen gebruikt worden bij het debuggen; de Media Partner en de Content Partner kunnen dan onderling contact hebben over een bepaald pand, een relatie en/of een makelaarskantoor en daarbij naar hetzelfde pand, relatie of kantoor verwijzen door gebruik te maken van deze “foreign ID’s”. De ‘Origin’ geeft aan wie de Content Provider is geweest; en ‘VM’ staat hier voor Kolibri (voorheen Venum).

Bij communicatie met de Connector gebruikt de Media Partner dus nooit foreign ID’s.

Datums

Datums en tijden die door de Connector worden aangeleverd zijn altijd in UTC. Dit geldt dus ook voor datums. Een ‘einddatum voorbehoud’ is op een bepaald moment in tijd. Dit is één moment, waar je ook maar in de wereld bent. Vandaar dat bij een datum ook de tijd geleverd wordt.

Het datamodel van een Real Estate Property

De gegevens van een Real Estate Property zijn gegroepeerd in 24 verschillende blokken. Afhankelijk van de rechten van een Media Partner wordt een blok wel of niet aangeleverd, of worden enkele nodes wel of niet aangeleverd. Hieronder een schematisch overzicht van een Real Estate Property met daaronder per blok een korte toelichting.

AreaTotals

Deze node bevat oppervlakte informatie over de verschillende delen van het object, waaronder van kelderruimte, woonkamer en opslagruimten. De ‘gebruiksoppervlakte Wonen‘ (“Wat is de bewoonbare oppervlakte achter de voordeur van de woning”) is terug te vinden onder de node RealEstateProperty/AreaTotals/EffectiveArea. De ‘woonoppervlakte’ is te vinden onder de node RealEstateProperty/AreaTotals/LivingArea.

Attachments

Deze node bevat informatie over bijlagen bij een object. Hieronder vallen foto’s, video’s, kaarten en ander soortig materiaal.

Elke bijlage (Attachment) heeft twee eigenschappen, welke kunnen veranderen wanneer de bijlage wordt bijgewerkt. Indien één van beide eigenschappen veranderd zijn, dient de bijlage opnieuw opgehaald te worden:

  • Hash
  • ModificationDateTime

Cadastre

De kadastrale gegevens worden beschreven in de node ‘Cadastre’. Deze node wordt meestal niet aangeleverd aan een Media Partner. Informatie over eigen grond erfpacht en recht van opstal is terug te vinden onder CadastrallInformations/CadastralInformation/Ownership/Type.

De node ‘Cadastre’ is mogelijk in zijn geheel niet beschikbaar.

ClimatControl

Deze node bevat informatie over de aanwezige verwarming in het object en toegekende energielabels. Informatie over energielabels is te vinden in de nodes EnergyCertificate/HasEnergyCertificate en EnergyCertificate/EnergyClass. Of er een cv-ketel aanwezig is, is te vinden in de node Heating (HeatingAllocation is type CENTRAL). De leeftijd van de cv-ketel is te vinden in de node Heating/YearOfManufacture, het type cv-ketel in de node Heating/TypeOfBoiler. Of het elektrisch, gas of anderszins gestookte cv betreft, in terig te vinden in de node Heating/EnergySource. De eigenaar van de verwarmingsinstallatie is terug te vinden in Heating/Ownership. Of het een combiketel betreft staat in de node Heating/IsCombiBoiler. Voor meer informatie rond specifieke boilertypes controleer je het type boiler (Heating/TypeOfBoiler) en dan de gewenste eigenschap.

Voor het backwards-compatibel ondersteunen van energielabels hoger dan A++ wordt de ‘energy_class’ tag toegevoegd aan de Tags node in de PropertyInfo node. Voorbeeld:

Construction

Deze node bevat informatie over de periode waarin het object gebouwd is. Daarnaast wordt in de node IsNewState vermeld of het de ‘nieuw’ status heeft. Of een object in aanbouw is, vind je in de node IsUnderConstruction. ConstructionYearFrom bevat het jaartal waarin met de bouw is gestart. ConstructionYearTo bevat het jaar waarin de bouw is afgerond. Deze gegevens kunnen ook ontbreken, maar dan zou de globalere ConstructionPeriod mogelijk nog ingevuld kunnen zijn. Onder de nodes Reconstruction en RenovationYear kun je respectievelijk terugvinden of er renovatie of herbouw heeft plaatsgevonden en wanneer dit is gebeurd.

Informatie over het dak kan teruggevonden worden in de node Roof. Hier is terug te vinden welk type dak het betreft, welke materialen zijn gebruikt (Roof/RoofMaterials), wat de staat van het dak is (Roof/RoofEvaluation) en eventuele opmerkingen (Roof/RoofComments). Indien er dakisolatie aanwezig is, bevat de node IsolationTypes het type ROOF. Voor dubbelglas is er een node Glazing/GlazingType van het type DOUBLE, voor gedeelde glasisolatie bevat Glazing/GlazingType type PARTLY_DOUBLE.

Indien het ecobouw betreft, bevat node IsolationTypes een type ECO_CONSTRUCTION. Hier worden ook andere isolatietypen vermeld. Opmerkingen over isolatie zijn te vinden in node IsolationComment.

Contact

Deze node bevat informatie over de makelaar die bemiddeld in de verhuur/verkoop van het object. Deze informatie bestaat uit bedrijfsinformatie, informatie over het betrokken kantoor en de verantwoordelijke contactpersoon.

Counts

Deze node bevat enkele cijfermatige feiten over het object, zoals het aantal verdiepingen, het aantal aanwezige (slaap)kamers, garages en tuinen. Aantal kamers vind je terug onder de node CountOfRooms, aantal slaapkamers onder de node CountOfBedrooms, aantal badkamers onder de node CountOfBathrooms en het aantal toiletten onder de node CountOfToilettes.

Current

Deze node bevat informatie over de actuele (verhuur) status, verwachte huuropbrengst en de huidige bestemming. Of een object gedeeltelijk is verhuurd, is terug te vinden in de node IsPartiallyRented.

Descriptions

Deze node bevat de advertentietekst en omschrijvingen van de aanwezige verdiepingen. Een omschrijving kan in meerdere talen voorkomen. Daarnaast wordt in de node MultilanguageStringType/Encoding vermeld, wat de encoding van de tekst is (PLAINTEXT of HTML).

Elke omschrijving (Description) is mogelijk beschikbaar in één of meerdere talen. Indien bij een omschrijving geen specifieke taal vermeld is, dan betreft het een omschrijving in de standaard taal. De standaard taal van een pand kan worden opgezocht in de node LocalizationInfo/Language.

Dimensions

Deze node bevat informatie over de afmetingen van het object, zoals de inhoud (RealEstateProperty/Dimensions/Content) en de perceeloppervlakte (RealEstateProperty/Dimensions/Land/Area).

Evaluations

Deze node bevat informatie over beoordelingen van het object, waaronder wat de algemene status van het object is, of het object kindvriendelijk is en of het houden van huisdieren is toegestaan. Of het object beschermd is, vind je in de node IsProtected, of het een monument betreft in HasMonumentalProtection. De kwaliteit van de woning kun je terugvinden in de node ComfortQuality (LUXURY, NORMAL, SIMPLE). Daarnaast is er nog de algemene conditie van de woning in node BuildingCondition.

Of een object geschikt is voor gehandicapten en/of ouderen, is respectievelijk terug te vinden in de nodes ForSpecialTargetAudience en IsQualifiedForSeniors.

Zaken GIW certificaten, certificaat aangepaste woning, bouwkundige keuring, brandveiligheidscertificaat, huisgarantie en politiekeurmerk zijn terug te vinden onder de node Certifications.

Facilities

Deze node bevat informatie over de aanwezige faciliteiten in het object. Er wordt een zeer uitgebreide lijst van mogelijke faciliteiten ondersteund, waaronder:

Airco, Alarm, Attick, BackYard, Balcony, Bathroom, Bedroom, BuildingHasElevator, BuiltInLight, Cable_TV, etc.

Of er een garage aanwezig is, vind je bijvoorbeeld door te controleren op een node Garage. De subnode Garage/Available geeft vervolgens aan of een garage wel of niet beschikbaar is.

Over de keuken kun je informatie vinden onder de nodes Kitchen en KitchenType.

Of er een tuin aanwezig is vind je in de node Garden. Of er een balkon aanwezig is, vind je in de node Balcony. Opmerkingen over een aanwezig balkon zijn te vinden in de subnode Balcony/Comments. Indien schuur aanwezig, dan is er een node StorageRoom aanwezig. Voor opmerkingen over bijgebouwen kijk je naar StorageRoom/Comments.

Zo is er ook informatie te vinden over buitenzonwering (OutdoorAwnings), Fransbalkon (FrenchBalcony), rolluiken (RollerBlinds), zwembad (SwimmingPool) en buitenkraan (WaterConnection).

Financials

Deze node bevat informatie over de prijscondities die gelden voor het object, zowel voor huur als koopobjecten.

Voor koopobjecten geldt, dat de verkoopprijs vermeldt wordt in de node PurchasePrice en de verkoopcondities (kosten koper, vrij op naam, etc.) in de node PurchaseCondition. In de node PriceCode vind je het onderscheid tussen ASKING_PRICE (vraagprijs) en FIXED_PRICE (vaste prijs).

Voor huurobjecten geldt, dat de huurprijs vermeldt wordt in de node RentPrice, waarbij uit de node RentPriceType kan worden afgeleid voor welke periode (maand, jaar, etc.) deze van toepassing is.

Of een woning (deels) gestoffeerd is, is terug te vinden in de node FurnitureType.

Floors

Deze node bevat gedetailleerde informatie over de inrichting van het pand over de verschillende verdiepingen. Per verdieping worden de verschillende ruimtes gespecificeerd en per ruimte de verschillende voorzieningen. Deze uiterst gedetailleerde informatie wordt lang niet door alle makelaars ingevoerd en is voor de meeste Media Partners te gedetailleerd en dus overbodig.

Een zolder is ook een verdieping. In de subnode Floor/AtticFixStair wordt gespecificeerd of er een vaste trap is en hoeveel kamers er zijn. Informatie over aanwezige keukens zijn te vinden onder de subnode Floor/Rooms/Room/KitchenTypes.

Of in de badkamer een toilet aanwezig is, kan afgeleid worden uit Floor/Rooms/Room/BathroomFacilities, indien de verdiepingsinformatie beschikbaar is.

Dakterras is een type kamer. Deze kan worden teruggevonden in Floor/Rooms/Room/Type met de waarde ROOF_TERRACE. Afmetingen worden aangegeven in Floor/Rooms/Room/Dimensions.

Balkon is een type kamer. Deze kan worden teruggevonden in Floor/Rooms/Room/Type met de waarde BALCONY. Oriëntatie wordt aangegeven in Floor/Rooms/Room/Orientation.

De node ‘Floors’ is mogelijk in zijn geheel niet beschikbaar.

Garages

Deze node bevat informatie over de garages die bij het object horen. Details over de aanwezige parkeerplaats(en), waaronder de afmetingen, de parkeercapaciteit en het type (GARAGEBOX, CARPORT, PARKING_PLACE), zijn te vinden onder de subnodes van deze node.

Gardens

Deze node bevat informatie over de aanwezige tuin(en) bij het object, waaronder afmetingen, oriëntatie en of er een aparte ingang is.

LocalizationInfo

Deze node bevat locatie gebaseerde informatie over het object, zoals de basistaal (Language) en munteenheid (Currency) waarin prijzen zijn vermeld. Verder bevat LocalizationInfo informatie over de cultuur van de makelaar in de node Culture. Deze node bevat een culture in het formaat ‘xx-YY’, welke aangeeft hoe waardes in deze Xml geïnterpreteerd dienen te worden.

Location

Deze node bevat informatie over de locatie van het object, waaronder het adres.

Offer

Deze node bevat informatie over de acceptatievoorwaarden van het object, waaronder of het te koop is (IsForSale), te huur (IsForRent) of te pacht (IsForPacht). Verder is in deze node vermeld, hoe de acceptatie (Acceptance, AcceptanceDate, AcceptanceDescription) voor het object geregeld is. Informatie over de aanvaarding kun je terugvinden in de nodes Acceptance, AcceptanceDate en AcceptanceDescription. Openhuis is terug te vinden in de node OpenHouse. In de subnode(s) OpenHouse/OpenHouseEvent vind je de datum (Date) en een titel (Title) met eventuele vertalingen.

PropertyInfo

Deze node bevat informatie over de objectinformatie zelf en hoe deze te behandelen. Zo kan worden aangegeven dat het object vertrouwelijk is en dus niet op een publieke portal getoond mag worden (Confidential), wanneer de informatie voor het laatst is bewerkt (ModificationDate) en wat de huidige status is (Status). Indien de node Ignore de waarde ‘True’ heeft, moet dit object volledig genegeerd worden. Het is de bedoeling dit object niet in uw systeem op te nemen. Indien de node TemporaryHideProperty de waarde ‘True’ heeft, kunt u het object normaal verwerken. Het is echter de bedoeling, dat u dit object tijdelijk niet op een publieke portal vermeldt.

Indien de node HideAddress de waarde ‘True’ heeft, mag het adres van het pand niet getoond worden op een publieke portal.

Indien de node HideHouseNumber de waarde ‘True’ heeft, mag het huisnummer van het pand niet getoond worden op een publieke portal.

Indien de node HidePrice de waarde ‘True’ heeft, mag de verkoopprijs van het pand niet getoond worden op een publieke portal.

MandateDate 

De node MandateDate geeft de (UTC) datum waarop het pand in opdracht is gekomen.

Surroundings

Deze node bevat informatie over de omgeving van het pand, waaronder nabijgelegen snelwegen, scholen en andere publieke voorzieningen.

ThirdPartyMedias

Deze node bevat informatie over externe bijlagen bij het pand, waaronder bijvoorbeeld video’s gehost op YouTube.

Transaction

De node ‘Transaction’ bevat gegevens over de verkoop of verhuur van het pand. Wanneer is het pand verkocht/verhuurd (Date), wat is de transport datum (ContractDate) en wat is de einddatum van een eventueel voorbehoud (WaivingOfTerminationTo). De eventueel gerealiseerde verkoopprijs kun je terugvinden in de node RealisedPrice.

De node ‘Transaction’ is mogelijk in zijn geheel niet beschikbaar.

Type

Deze node bevat informatie over het type pand, waaronder welke type pand het betreft en of het permanent bewoonbaar is.

In Nederland / Kolibri kennen we hoofd- en subtypes, soorten en kenmerken om nog beter te specificeren wat er nu precies aangeboden wordt. Deze onderverdeling is land/cultuur/branche organisatie afhankelijk. De Connector verwerkt aanbod voor verschillende software leveranciers met klanten uit verschillende landen en verschillende culturen. Het vastleggen/bepalen van de hiërarchie/onderverdeling van types, soorten, etc. is niet aan de Connector. Om geen enkel detail verloren te laten gaan verwerkt de Connector de pandtypes ‘platgeslagen’, dus zonder hiërarchie. De node ‘RealEstateProperty/Type/PropertyTypes’ kan dus meerdere types bevatten.

Een woonhuis van het soort villa, type vrijstaand en kenmerk semi bungalow zal dus de typen ‘HOUSE’, ‘VILLA’ en ‘DETACHED_HOUSE’ en ‘SEMI_BUNGALOW’.

Is er niets meer bekend dan dat de woning enkel een woonhuis is, dan is ‘HOUSE’ het enige type wat aangeleverd zal worden. De Connector kan geen garanties geven over de aanwezigheid van de verschillende types; die verantwoordelijkheid ligt bij de software leverancier.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

Objecttypen

Hieronder een overzicht van de objecttypen zoals gebruikt in Venum (in het groen) met daarbij de Engels vertaalde Real Estate Property types (in het rood). De onderverdeling zoals weergegeven in onderstaande tabel is dus NIET terug te vinden in het datamodel, maar dient puur ter verduidelijking voor ‘Nederlands’ georienteerde ontwikkelaars.

Objecttypen (klik om uit te klappen)
Particulier aanbod – hoofdgroep
WOONHUISHOUSESoort woonhuis
EENGEZINSWONINGSINGLE-FAMILY_HOUSE
HERENHUISMANSION
VILLAVILLA
LANDHUISCOUNTRY_HOUSE
BUNGALOWBUNGALOW
WOONBOERDERIJRESIDENTIAL_FARM
GRACHTENPANDCANAL_HOUSE
WOONBOOTHOUSEBOAT
STACARAVANMOBILE_HOME
Type woonhuis
VRIJSTAANDE WoningDETACHED_HOUSE
GESCHAKELDE WoningLINKED_HOUSE
TWEE ONDER EEN KAP WoningSEMI_DETACHED_HOUSE_ONE_ROOF
TUSSEN WoningROW_HOUSE_MIDDLE
HOEK WoningROW_HOUSE_CORNER
EIND WoningROW_HOUSE_END
HALF VRIJSTAANDE WoningSEMI_DETACHED_HOUSE
GESCHAKELDE TWEE ONDER EEN KAP WoningSEMI_DETACHED_LINKED_HOUSE_ONE_ROOF
Kenmerk woning
DIJKWONINGDIKE_HOUSE
SPLITLEVELWONINGSPLIT_LEVEL_HOUSE
DRIVEINWONINGDRIVE_IN_HOUSE
SEMIBUNGALOWSEMI_BUNGALOW
PATIOWONINGPATIO_HOUSE
PAALWONINGPILE_HOUSE
HOFJESWONINGCOURTYARD_HOUSE
BEDRIJFSDIENSTWONINGBUSINESS_SERVICE_HOUSE
WATERWONINGWATER_HOUSE
WINDWATERMOLENWIND_WATER_MILL
KWADRANTWONINGQUADRANT_HOUSE
APPARTEMENTAPARTMENTSoort appartement
BOVENWONINGUPSTAIRS_APARTMENT
BENEDENWONINGGROUND_FLOOR_APARTMENT
MAISONETTEMAISONETTE
GALERIJFLATGALLERY_FLAT
PORTIEKFLATPORTICO_FLAT
BENEDEN BOVEN WONINGUPSTAIRS_GROUND_FLOOR_APARTMENT
PENTHOUSEPENTHOUSE
PORTIEKWONINGPORCH_APARTMENT
Kenmerk appartement
SERVICEFLATSERVICEFLAT
APPARTEMENTCOMMON_APARTMENT
CORRIDORFLATCORRIDOR_FLAT
BELETAGEBELETAGE
SOUTERRAINBASEMENT
DUBBELBOVENHUISDOUBLE_UPPER_HOUSE
VERZORGINGSFLATNURSERY_FLAT
PARKEERGELEGENHEIDPARKINGSoort parkeergelegenheid
GARAGEBOXGARAGE
INPANDIGE GARAGEINDOOR_GARAGE
PARKEERKELDERPARKING_CELLAR
PARKEERPLAATSPARKING_PLACE
BOUWGRONDPLOT
Particulier OVERIGRESIDENTIAL_OTHERSSoort overig
BERGINGSTOREROOM
LIGPLAATSBERTH
STACARAVAN STANDPLAATSMOBILE_HOME_PITCH
WOONWAGEN STANDPLAATSGIPSY_CART_PITCH
WOON WINKELPANDRESIDENTIAL_SHOP_PREMISES
Bedrijfsmatig aanbod – hoofdgroep
BOG OVERIGCOMMERCIAL_OTHERS
BEDRIJFSHALPRODUCTION_HALL
BUITENTERREINOUTDOOR_AREA
HORECAPANDHOTEL_RESTAURANT_CAFE
KANTOOROFFICE
KAVELLOT
PRAKTIJKRUIMTEPRACTICE_SPACE
SHOWROOMSHOWROOM
WINKELRUIMTERETAIL_SPACE
Agrarisch aanbod – hoofdgroep
AKKERBOUWBEDRIJFARABLE_COMPANY
LOSSEGRONDLOOSE_SOILSoort grond
KLEICLAY
LEEMLEEM
VEENPEAT
ZANDSAND
ZAVELSABLON
ZEEKLEISEE_CLAY
RIVIERKLEIFLUVIAL
LOSSLOSS
MELKVEEHOUDERIJBEDRIJFDAIRY_FARMING_COMPANY
PLUIMVEEBEDRIJFPOULTRY_COMPANYSoort pluimveebedrijf
LEGHENNENHENS
SLACHTKUIKENSBROILERS
OPFOK_LEGHENNENBREEDING_HENS
OPFOK_SLACHTKUIKENOUDERDIERBREEDING_BROILER
KALKOENEN_GANZEN_EENDEN_STRUISVOGELSTURKEYS_GEESE_DUCKS_OSTRICHES
PAARDENBEDRIJFHORSES_COMPANYSoort paardenbedrijf
MANAGEHORSE_RIDING_SCHOOL
PENSIONHORSE_PENSION
AFRICHTHORSE_TRAINING_FARM
PaardenBedrijf OVERIGHORSE_FARM_OTHERS
TUINBOUWBEDRIJFHORTICULTURAL_COMPANYSoort tuinbouwbedrijf
GLASTUINBOUWGREENHOUSE_HORTICULTURE_COMPANY
VOLLEGRONDSTUINBOUWBEDRIJFGROUND_HORTICULTURE_COMPANY
FRUITTEELTBEDRIJFFRUIT_GROWING_COMPANY
CHAMPIGNONTEELTBEDRIJFMUSHROOM_CULTIVATION_COMPANY
BOOMKWEKERIJBEDRIJFTREE_NURSERY_COMPANY
VARKENSBEDRIJFPIG_HOLDINGSoort varkensbedrijf
ZEUGENSOWS
VLEESVARKENSFATTENING_PIGS
ZEUGEN_EN_VLEESVARKENSSOWS_AND_FATTENING_PIGS
VLEESKALVERENVEAL_CALVES
ALV WONINGAGRICULTURAL_HOUSE
ALV OVERIGAGRICULTURAL_OTHERSSoort overig
SCHAPENSHEEP
GEITENGOAT
ZOOGKOEIENSUCKLER_COW
VLEESSTIERENMEAT_BULLS
JONGVEE_OPFOKBREEDING_YOUNG_CATTLE
WORMENWORMS
PALINGEEL
Alv Overig OVERIGAGRICULTURAL_OTHER_OTHER

Klik hier om het objecttypen overzicht te downloaden.

Veelgebruikte object eigenschappen

Hieronder vindt u een lijst van objecteigenschappen zoals we die in het Nederlands kennen, met daarbij de verwijziging naar de output XML van de Kolibri Real Estate Connector.

Veelgebruikte object eigenschappen (klik om uit te klappen)
EigenschapSub-eigenschapLocatie
CultuurRealEstateProperty/LocalizationInfo/Culture
TaalRealEstateProperty/LocalizationInfo/Language
Aanvaarding
Soort aanvaardingRealEstateProperty/Offer/Acceptance
ToelichtingRealEstateProperty/Offer/AcceptanceDescription
DatumRealEstateProperty/Offer/AcceptanceDate
Perceeloppervlakte
BreedteRealEstateProperty/Dimensions/Land/Width
LengteRealEstateProperty/Dimensions/Land/Length
OppervlakteRealEstateProperty/Dimensions/Land/Area
Bruto vloeroppervlakteRealEstateProperty/AreaTotals/FloorAreaGross
Oppervlakte externe bergruimteRealEstateProperty/AreaTotals/StorageAreaExternal
Oppervlakte gebouwgebonden buitenruimtenRealEstateProperty/AreaTotals/BuildingRelatedOutdoorSpaceArea
GebruiksoppervlakteRealEstateProperty/AreaTotals/EffectiveArea
InhoudRealEstateProperty/Dimensions/Lot/Content
Oppervlakte glasopstandRealEstateProperty/AreaTotals/GlassCoverings
Oppervlakte overige inpandige ruimtenRealEstateProperty/AreaTotals/OtherIndoorSpaceArea
Verhuurbare vloeroppervlakteRealEstateProperty/AreaTotals/FloorArea
BeschikbaarheidsstatusRealEstateProperty/PropertyInfo/Status
Drainering aanwezigRealEstateProperty/Facilities/Drainage/Available
Hygiënesluis aanwezigRealEstateProperty/Facilities/SanitationLock/Available
Open portiek aanwezigRealEstateProperty/Facilities/OpenPorch/Available
Tank aanwezigRealEstateProperty/Facilities/Tank/Available
Woning aanwezigRealEstateProperty/Facilities/House/Available
Adres verbergenRealEstateProperty/PropertyInfo/HideAddress
Huisnummer verbergenRealEstateProperty/PropertyInfo/HideHousenumber
Prijs verbergenRealEstateProperty/PropertyInfo/HidePrice
Is bouwrijpRealEstateProperty/Construction/IsReadyForConstruction
Heeft combiketelRealEstateProperty/ClimatControl/Heating/IsCombiBoiler
Is voor speciale doelgroepRealEstateProperty/Evaluations/ForSpecialTargetAudience
Is eigen belangRealEstateProperty/Offer/SelfIntrest
Is huiskavelRealEstateProperty/Type/IsResidentialLot
Is ontruimdRealEstateProperty/Current/IsVacated
Is permanent bewoonbaarRealEstateProperty/Type/ForPermanentResidence
Is recreatiefRealEstateProperty/Type/ForRecreation
Schuur/berging aanwezigRealEstateProperty/Facilities/StorageRoom/Available
Is verhuurRealEstateProperty/Offer/IsForRent
Is verkoopRealEstateProperty/Offer/IsForSale
Is vertrouwelijkRealEstateProperty/PropertyInfo/Confidential
VVE checklist aanwezigRealEstateProperty/Current/CheckListAssociationOfOwnersAvailable
Bouwjaar
PeriodeRealEstateProperty/Construction/ConstructionPeriod
JaarRealEstateProperty/Construction/ConstructionYearFrom
Is in aanbouwRealEstateProperty/Construction/IsUnderConstruction
OmschrijvingRealEstateProperty/Construction/ConstructionComment
Comfort kwaliteitRealEstateProperty/Evaluations/ComfortQuality
Makelaar
IDRealEstateProperty/Contact/Agency/ForeignID
NaamRealEstateProperty/Contact/Agency/Name
BelastingnummerRealEstateProperty/Contact/Agency/VATNumber
Url logoRealEstateProperty/Contact/Agency/LogoURL
Tenaamstelling bankrekeningRealEstateProperty/Contact/Agency/BankAccountAppellation
BankrekeningnummerRealEstateProperty/Contact/Agency/BankAccountNumber
Gevestigde naamRealEstateProperty/Contact/Agency/LegalName
RegistratienummerRealEstateProperty/Contact/Agency/COCNumber
MakelaarsverenigingRealEstateProperty/Contact/Agency/RealEstateAssociation
LidmaatschapsnummerRealEstateProperty/Contact/Agency/RealEstateAssociationNumber
BezoekadresRealEstateProperty/Contact/Agency/VisitAddress
PostadresRealEstateProperty/Contact/Agency/PostalAddress
TelefoonnummerRealEstateProperty/Contact/Agency/Phone
FaxnummerRealEstateProperty/Contact/Agency/Fax
E-mailadresRealEstateProperty/Contact/Agency/Email
Url websiteRealEstateProperty/Contact/Agency/WebsiteURL
Kantoor
IDRealEstateProperty/Contact/Department/ForeignID
NaamRealEstateProperty/Contact/Department/Name
OmschrijvingRealEstateProperty/Contact/Department/Description
Url logoRealEstateProperty/Contact/Department/LogoURL
BezoekadresRealEstateProperty/Contact/Department/VisitAddress
PostadresRealEstateProperty/Contact/Department/PostalAddress
TelefoonnummerRealEstateProperty/Contact/Department/Phone
FaxnummerRealEstateProperty/Contact/Department/Fax
E-mailadresRealEstateProperty/Contact/Department/Email
Url websiteRealEstateProperty/Contact/Department/WebsiteURL
Medewerker (contactpersoon)
IDRealEstateProperty/Contact/Person/ForeignID
TitelRealEstateProperty/Contact/Person/Title
VoornaamRealEstateProperty/Contact/Person/FirstName
TussenvoegselsRealEstateProperty/Contact/Person/MiddleName
AchternaamRealEstateProperty/Contact/Person/LastName
WeergavenaamRealEstateProperty/Contact/Person/DisplayName
GeslachtRealEstateProperty/Contact/Person/Gender
GeboortedatumRealEstateProperty/Contact/Person/DateOfBirth
E-mailadresRealEstateProperty/Contact/Person/Email
Telefoonnummer (werk)RealEstateProperty/Contact/Person/Phone
Telefoonnummer (mobiel)RealEstateProperty/Contact/Person/Mobile
FaxnummerRealEstateProperty/Contact/Person/Fax
Huidige bestemmingRealEstateProperty/Current/CurrentDestinationDescription
Huidig gebruikRealEstateProperty/Current/CurrentUsageDescription
AdvertentietekstRealEstateProperty/Descriptions/AdText
Omschrijving balkonRealEstateProperty/Descriptions/BalconyDescription
Omschrijving beganegrondRealEstateProperty/Descriptions/GroundFloorDescription
Omschrijving eerste verdiepingRealEstateProperty/Descriptions/FirstFloorDescription
Omschrijving tweede verdiepingRealEstateProperty/Descriptions/SecondFloorDescription
Omschrijving overige verdiepingenRealEstateProperty/Descriptions/OtherFloorDescription
Omschrijving bijzonderhedenRealEstateProperty/Descriptions/DetailsDescription
Omschrijving tuinenRealEstateProperty/Descriptions/GardenDescription
DakRealEstateProperty/Construction/Roof
Type dakRealEstateProperty/Construction/Roof/RoofType
DakmaterialenRealEstateProperty/Construction/Roof/RoofMaterials
ToelichtingRealEstateProperty/Construction/Roof/RoofComments
Datum opdrachtRealEstateProperty/PropertyInfo/MandateDate
Datum aangemaaktRealEstateProperty/PropertyInfo/CreationDateTime
Datum laatst bewerktRealEstateProperty/PropertyInfo/ModificationDateTime
Datum ingetrokkenRealEstateProperty/Transaction/Date
Datum open huisRealEstateProperty/Offer/OpenHouse/OpenHouseEvent
EnergielabelRealEstateProperty/ClimatControl/EnergyCertificate
EnergieklasseRealEstateProperty/ClimatControl/EnergyCertificate/EnergyClass
EnergieindexRealEstateProperty/ClimatControl/EnergyCertificate/EnergyIndex
EinddatumRealEstateProperty/ClimatControl/EnergyCertificate/DueDate
Certificaat aanwezigRealEstateProperty/ClimatControl/EnergyCertificate/HasEnergyCertificate
CertificaatnummerRealEstateProperty/ClimatControl/EnergyCertificate/Number
GrondeigendomRealEstateProperty/Cadastre/CadastrallInformations/CadastralInformation
Type eigendomRealEstateProperty/Cadastre/CadastrallInformations/CadastralInformation/Ownership/Type
Bedrag per jaarRealEstateProperty/Cadastre/CadastrallInformations/CadastralInformation/Ownership/GroundLeaseAmountPerYear
Datum totRealEstateProperty/Cadastre/CadastrallInformations/CadastralInformation/Ownership/EndDate
GrondsoortRealEstateProperty/Type/PropertyTypes/PropertyType (CLAY,LEEM,PEAT,SAND,SABLON,SEE_CLAY,FLUVIAL,LOSS)
AdresRealEstateProperty/Location/Address
Makelaar IDRealEstateProperty/PropertyInfo/ForeignAgencyID
Opdracht IDRealEstateProperty/PropertyInfo/ForeignID
Huuraanbieding
InrichtingRealEstateProperty/Facilities/UpholsteredType
ServicekostenRealEstateProperty/Financials/ServiceCosts
Kostenindicatie gasRealEstateProperty/Financials/Indications/GasCosts
Kostenindicatie waterRealEstateProperty/Financials/Indications/WaterCosts
Kostenindicatie elektraRealEstateProperty/Financials/Indications/ElectricityCosts
Kostenindicatie stookkostenRealEstateProperty/Financials/Indications/HeatingCosts
PrijshistorieRealEstateProperty/Financials/PriceHistory
HuurprijsRealEstateProperty/Financials/RentPrice
HuurspecificatieRealEstateProperty/Financials/RentSpecification
HuurconditieRealEstateProperty/Financials/RentPriceType
MeubileringRealEstateProperty/Financials/FurnitureCosts
VoorschotRealEstateProperty/Financials/AdvancedPaymentAmount
Beschikbaar vanafRealEstateProperty/Offer/AvailableFromDate
Beschikbaar totRealEstateProperty/Offer/AvailableUntilDate
Verhuurd vanafRealEstateProperty/Transaction/Date
BorgRealEstateProperty/Financials/Deposit
Aantal bouwlagenRealEstateProperty/Counts/CountOfFloors
Aantal garagesRealEstateProperty/Counts/CountOfGarages
Aantal kamersRealEstateProperty/Counts/CountOfRooms
Aantal slaapkamersRealEstateProperty/Counts/CountOfBedrooms
Aantal tuinenRealEstateProperty/Counts/CountOfGardens
Aantal ligplaatsen jong veeRealEstateProperty/Counts/CountOfMooringsCattles
Aantal ligplaatsen melkveeRealEstateProperty/Counts/CountOfMooringsDairyCattles
GaragecapaciteitRealEstateProperty/Counts/CountOfGaragePlaces
Bouwjaar CV-ketelRealEstateProperty/ClimatControl/Heating/YearOfManufacture
WoonlaagRealEstateProperty/Location/FloorNumber
Kenmerk appartementRealEstateProperty/Type/PropertyTypes
Kenmerk woningRealEstateProperty/Type/PropertyTypes
KetelbrandstofRealEstateProperty/ClimatControl/Heating/EnergySource
KeteleigendomRealEstateProperty/ClimatControl/Heating/Ownership
Koopaanbieding
ServicekostenRealEstateProperty/Financials/ServiceCosts
Kostenindicatie gasRealEstateProperty/Financials/Indications/GasCosts
Kostenindicatie waterRealEstateProperty/Financials/Indications/WaterCosts
Kostenindicatie elektraRealEstateProperty/Financials/Indications/ElectricityCosts
Kostenindicatie stookkostenRealEstateProperty/Financials/Indications/HeatingCosts
PrijshistorieRealEstateProperty/Financials/PriceHistory
VraagprijsRealEstateProperty/Financials/PurchasePrice
VerkoopprijsRealEstateProperty/Transaction/RealisedPrice
PrijscodeRealEstateProperty/Financials/PriceCode
KoopconditieRealEstateProperty/Financials/PurchaseCondition
KoopspecificatieRealEstateProperty/Financials/PurchaseSpecification
Datum veilingRealEstateProperty/Offer/AuctionDate
GaragesRealEstateProperty/Garages
NaamRealEstateProperty/Garages/Garage/Name
BeschrijvingRealEstateProperty/Garages/Garage/Comments
IsolatievormenRealEstateProperty/Garages/Garage/IsolationTypes
CapaciteitRealEstateProperty/Garages/Garage/CarCapacity
VoorzieningenRealEstateProperty/Garages/Garage/Facilities
TypeRealEstateProperty/Garages/Garage/Type
HoogteRealEstateProperty/Garages/Garage/Dimensions/Height
BreedteRealEstateProperty/Garages/Garage/Dimensions/Width
LengteRealEstateProperty/Garages/Garage/Dimensions/Length
OppervlakteRealEstateProperty/Garages/Garage/Dimensions/Area
VolumeRealEstateProperty/Garages/Garage/Dimensions/Content
MapsRealEstateProperty/Attachments
NaamRealEstateProperty/Attachments/Attachment/Title
OmschrijvingRealEstateProperty/Attachments/Attachment/Description
Datum aangemaaktRealEstateProperty/Attachments/Attachment/CreationDateTime
Datum laatst gewijzigdRealEstateProperty/Attachments/Attachment/ModificationDateTime
Md5HashRealEstateProperty/Attachments/Attachment/Hash
Url genormaliseerdRealEstateProperty/Attachments/Attachment/URLNormalizedFile
IndexRealEstateProperty/Attachments/Attachment/Index
Foto’sRealEstateProperty/Attachments
NaamRealEstateProperty/Attachments/Attachment/Title
OmschrijvingRealEstateProperty/Attachments/Attachment/Description
Datum aangemaaktRealEstateProperty/Attachments/Attachment/CreationDateTime
Datum laatst gewijzigdRealEstateProperty/Attachments/Attachment/ModificationDateTime
Md5HashRealEstateProperty/Attachments/Attachment/Hash
Url genormaliseerdRealEstateProperty/Attachments/Attachment/URLNormalizedFile
IndexRealEstateProperty/Attachments/Attachment/Index
Video’sRealEstateProperty/Attachments
NaamRealEstateProperty/Attachments/Attachment/Title
OmschrijvingRealEstateProperty/Attachments/Attachment/Description
Datum aangemaaktRealEstateProperty/Attachments/Attachment/CreationDateTime
Datum laatst gewijzigdRealEstateProperty/Attachments/Attachment/ModificationDateTime
Md5HashRealEstateProperty/Attachments/Attachment/Hash
Url genormaliseerdRealEstateProperty/Attachments/Attachment/URLNormalizedFile
IndexRealEstateProperty/Attachments/Attachment/Index
IsolatievormenRealEstateProperty/Construction/IsolationTypes
KeurmerkenRealEstateProperty/Evaluations/Certifications
Soorten warm waterRealEstateProperty/ClimatControl/Heating/HeatingMethodsWater
Externe mediaRealEstateProperty/ThirdPartyMedias
NaamRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/Title
OmschrijvingRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/Description
Datum aangemaaktRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/CreationDateTime
Datum laatst gewijzigdRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/ModificationDateTime
Md5HashRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/Hash
Externe IDRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/ThirdPartyIDCode
Embed-codeRealEstateProperty/ThirdPartyMedias/ThirdPartyMedia/EmbedCode
TuinenRealEstateProperty/Gardens
NaamRealEstateProperty/Gardens/Garden/Name
OmschrijvingRealEstateProperty/Gardens/Garden/Description
KwaliteitRealEstateProperty/Gardens/Garden/Quality
TypeRealEstateProperty/Gardens/Garden/Type
BreedteRealEstateProperty/Gardens/Garden/Dimensions/Width
LengteRealEstateProperty/Gardens/Garden/Dimensions/Length
OppervlakteRealEstateProperty/Gardens/Garden/Dimensions/Area
Is hoofdtuinRealEstateProperty/Gardens/Garden/IsMainGarden
OriëntatieRealEstateProperty/Gardens/Garden/Orientation
Heeft achteromRealEstateProperty/Gardens/Garden/HasBackyardEntrance
VerontreinigingenRealEstateProperty/Evaluations/PolutionTypes
VerwarmingenRealEstateProperty/ClimatControl/Heating/HeatingMethods
Heeft mechanische ventilatieRealEstateProperty/Facilities/Ventilation/Available
Heeft alarminstallatieRealEstateProperty/Facilities/Alarm/Available
Heeft rolluikenRealEstateProperty/Facilities/RollerBlinds/Available
Heeft kabel-TVRealEstateProperty/Facilities/Cable_TV/Available
Heeft buitenzonweringRealEstateProperty/Facilities/OutdoorAwnings/Available
Heeft zwembadRealEstateProperty/Facilities/SwimmingPool/Available
Heeft liftRealEstateProperty/Facilities/Elevator/Available
Heeft airconditioningRealEstateProperty/Facilities/Airco/Available
Heeft windmolenRealEstateProperty/Facilities/Windmill/Available
Heeft zonnecollectorenRealEstateProperty/Facilities/SunCollectors/Available
Heeft satelietschotelRealEstateProperty/Facilities/SatelliteDish/Available
Heeft jacuzziRealEstateProperty/Facilities/Jacuzzi/Available
Heeft stoomcabineRealEstateProperty/Facilities/SteamCabin/Available
Heeft rookkanaalRealEstateProperty/Facilities/FlueTube/Available
Heeft schuifpuiRealEstateProperty/Facilities/SlidingDoors/Available
Heeft fransbalkonRealEstateProperty/Facilities/FrenchBalcony/Available
Heeft dakraamRealEstateProperty/Facilities/SkyLight/Available
Heeft saunaRealEstateProperty/Facilities/Sauna/Available
Hoofd objecttypeRealEstateProperty/Type/IsResidential, IsCommercial, IsAgricultural
Waardering onderhoud binnenRealEstateProperty/Evaluations/MaintenanceInside
Waardering onderhoud buitenRealEstateProperty/Evaluations/MaintenanceOutside
Soort appartementRealEstateProperty/Type/PropertyTypes
Soort bouwRealEstateProperty/Construction/IsNewEstate
Soort woningRealEstateProperty/Type/PropertyTypes
Status verhuurd
Percentage verhuurdRealEstateProperty/Current/PercentageRented
Is gedeeltelijk verhuurdRealEstateProperty/Current/IsPartiallyRented
Bedrage per jaarRealEstateProperty/Current/RevenuePerYear
BedrijfsnaamRealEstateProperty/PropertyInfo/PropertyCompanyName
MunteenheidRealEstateProperty/LocalizationInfo/Currency
Type CK-ketelRealEstateProperty/ClimatControl/Heating/TypeOfBoiler
Openhuis tekstRealEstateProperty/Offer/OpenHouse/OpenHouseEvent/Title
Publieke referentieRealEstateProperty/PropertyInfo/PublicReferenceNumber
Type ALVRealEstateProperty/Type/PropertyTypes
Type ALV overigRealEstateProperty/Type/PropertyTypes
Type BOGRealEstateProperty/Type/PropertyTypes
Type paardenbedrijfRealEstateProperty/Type/PropertyTypes
Type parkeergelegenheidRealEstateProperty/Type/PropertyTypes
Type particulierRealEstateProperty/Type/PropertyTypes
Type particulier overigRealEstateProperty/Type/PropertyTypes
Type pluimveebedrijfRealEstateProperty/Type/PropertyTypes
Type tuinbouwbedrijfRealEstateProperty/Type/PropertyTypes
Type varkensbedrijfRealEstateProperty/Type/PropertyTypes
Type woningRealEstateProperty/Type/PropertyTypes

Klik hier om het veelgebruikte object eigenschappen overzicht te downloaden.

Objecteigenschaplijsten

Hieronder vindt u een lijst van objecteigenschaplijsten in het Nederlands, met daarbij de Engelse benaming uit de output XML van de SiteLink.

Objecteigenschaplijsten (klik om uit te klappen)
EnergieklasseRealEstateProperty/ClimatControl/EnergyCertificate/EnergyClass
AA
BB
CC
DD
EE
FF
GG
APLUSPLUSAPLUSPLUS
APLUSAPLUS
Ketel brandstofRealEstateProperty/ClimatControl/Heating/EnergySource
GASGAS
OLIEOIL
ELEKTRISCHELECTRICITY
Ketel eigendomRealEstateProperty/ClimatControl/Heating/Ownership
EIGENDOMOWNED
HUURRENTED
LEASELEASED
VerwarmingRealEstateProperty/ClimatControl/Heating/HeatingMethods/HeatingMethod
CVKETELCENTRAL_HEATING
KOLENKACHELCOAL_STOVE
BLOKVERWARMINGHEATING_BLOCK
STADSVERWARMINGDISTRICT_HEATING
MOEDERHAARDCENTRAL_FIREPLACE
HETELUCHTVERWARMINGHOT_AIR
AIRCONDITIONINGAIRCO
GASKACHELSGAS_STOVE
OPENHAARDFIREPLACE
MOGELIJKHEIDOPENHAARDOPTION_FOR_FIREPLACE
VLOERVERWARMINGGEHEELFLOOR_HEATING
VLOERVERWARMINGGEDEELTELIJKFLOOR_HEATING_PARTLY
ZONNECOLLECTORENSOLAR_COLLECTORS
ELEKTRISCHEVERWARMINGELECTRIC_HEATING
MUURVERWARMINGWALL_HEATING
Soort warm waterRealEstateProperty/ClimatControl/Heating/HeatingMethodsWater/HeatingMethod
CVKETELCENTRAL_HEATING_SYSTEM
CENTRALEVOORZIENINGCENTRALLY_SUPPLIED
GEISERHUURGEYSER
GEISEREIGENDOMGEYSER
GASBOILERHUURGAS_BOILER
GASBOILEREIGENDOMGAS_BOILER
ELEKTRISCHEBOILERHUURELECTRIC_BOILER
ELEKTRISCHEBOIKEREIGENDOMELECTRIC_BOILER
ZONNEBOILERSUN_BOILER
ZONNECOLLECTORENSUN_COLLECTOR
BouwperiodRealEstateProperty/Construction/ConstructionPeriod
TOT1906BEFORE_1906
VAN1906_TM19301906_1930
VAN1931_TM19441931_1944
VAN1945_TM19591945_1959
VAN1960_TM19701960_1970
VAN1971_TM19801971_1980
VAN1981_TM19901981_1990
VAN1991_TM20001991_2000
VAN2001_TM20102001_2010
NA2010FROM_2011
IsolatievormenRealEstateProperty/Construction/IsolationTypes/IsolationType
DAKISOLATIEROOF
MUURISOLATIEWALL
VLOERISOLATIEFLOOR
VOLLEDIGGEISOLEERDFULL
SPOUWMUURCAVITY_WALL
ANKERLOZESPOUWMUURANCHOR_FREE_CAVITY_WALL
ECOBOUWECO_CONSTRUCTION
DUBBELGLASINSULATED_GLAZING
GEDEELTELIJKDUBBELGLASPARTLY_INSULATED_GLAZING
VOORZETRAMENSECONDARY_GLAZING
DakmateriaalRealEstateProperty/Construction/Roof/RoofMaterials/RoofMaterial
LEISTEENSTONE_SLAB
RIETTHATCH
ASBESTASBESTOS
KUNSTSTOFFABRIC
PANNENTILES
BITUMINEUZEDAKBEDEKKINGBITUMEN
METAALMETAL
Type dakRealEstateProperty/Construction/Roof/RoofType
ZADELDAKFRONT_GABLE
PLATDAKFLAT
LESSENAARSDAKSHED
MANSARDEDAKGAMBREL
DWARSKAPSIDE_GABLE
SAMENGESTELDDAKCOMPOSITE
SCHILDDAKHIPPED
TENTDAKPYRAMID_HIP
DAKMETUILEBORDENOTHER
TORENDAKTOWER
ZAAGOFSHEDDAKSALTBOX
LUIFELDAKOTHER
KAPMETPLATMANSARD
GEBOGENDAKCURVED
GEBOGENMETLICHTRUPSENCURVED
SCHAALDAKSHELL
MakelaarsverenigingRealEstateProperty/Contact/Agency/RealEstateAssociation
UNKNOWNUNKNOWN
INDEPENDENTINDEPENDENT
VBONL_VBO
VASTGOEDPRONL_VASTGOED_PRO
NVMNL_NVM
Geslacht//element(*,RelationType)/Gender
MALEMALE
FEMALEFEMALE
UNKNOWNUNKNOWN
KeurmerkRealEstateProperty/Evaluations/Certifications/Certificate
AANGEPASTEWONINGAANGEPASTE_WONING
POLITIEPOLITIEKEURMERK
BRANDVEILIGHEIDBRANDVEILIGHEID
ALGEMENEWONINGKEURALGEMENE_WONING_KEUR
ENERGIEPRESTATIEADVIESENERGIE_PRESTATIE_ADVIES
BOUWKUNDIGEKEURINGBOUWKUNDIGE_KEURING
HUISGARANTIEHUISGARANTIE
GIWWAARBORGCERTIFICAATGIW_WAARBORGCERTIFICAAT
Waardering onderhoud binnenRealEstateProperty/Evaluations/MaintenanceInside
SLECHTTO_REFURBISH
SLECHTTOTMATIGTO_REFURBISH
MATIGTO_REFURBISH
MATIGTOTREDELIJKMEDIOCRE
REDELIJKMEDIOCRE
REDELIJKTOTGOEDGOOD
GOEDGOOD
GOEDTOTUITSTEKENDVERY_GOOD
UITSTEKENDVERY_GOOD
ComfortkwaliteitRealEstateProperty/Evaluations/ComfortQuality
LUXELUXURY
NORMAALNORMAL
EENVOUDIGSIMPLE
VerontreinigingRealEstateProperty/Evaluations/PolutionTypes/Polution
VERWIJDERDREMOVED
METCERTIFICAATWITH_CERTIFICATE
AFGEVULDFILLED
Inrichting/stofferingRealEstateProperty/Facilities/FurnitureType
GEMEUBILEERDFURNISHED
GEMEUBILEERD_EN_STOFFEERDFURNISHED
KAALNOT_FURNISHED
GESTOFFEERDNOT_FURNISHED
Inrichting/stofferingRealEstateProperty/Facilities/UpholsteredType
GEMEUBILEERDNOT_UPHOLSTERED
GEMEUBILEERD_EN_STOFFEERDFULLY_UPHOLSTERED
KAALNOT_UPHOLSTERED
GESTOFFEERDFULLY_UPHOLSTERED
HuurconditieRealEstateProperty/Financials/RentPriceType
MAANDPRICE_PER_MONTH
KWARTAALPRICE_PER_QUARTER
HALF_JAARPRICE_PER_HALF_YEAR
JAARPRICE_PER_YEAR
CONTRACTDUURPRICE_PER_CONTRACT
HuurspecificatieRealEstateProperty/Financials/RentSpecification/Specification
INCL_BTWINCL_VAT
GEINDEXEERDINDEXED
INCL_SERVICEKOSTENINCL_SERVICE_COSTS
INCL_GASINCL_GAS
INCL_WATERINCL_WATER
INCL_LICHTINCL_ELECTRICITY
GEMEUBILEERDINCL_FURNITURE
KoopconditieRealEstateProperty/Financials/PurchaseCondition
KOSTEN_KOPERCOSTS_BUYER
VRIJ_OP_NAAMFREE_ON_NAME
KoopspecificatieRealEstateProperty/Financials/PurchaseSpecification
EXCL_BOUWRENTEEXCLUSIVE_INTERIM_INTEREST
EXCL_BTWVAT_FISCALISED
INCL_BTWVAT_INCLUSIVE
PrijscodeRealEstateProperty/Financials/PriceCode
HOGERE_PRIJSKLASSEHIGHER_BUDGET
OPENBARE_VEILINGPUBLIC_AUCTION
PRIJS_IN_OVERLEGPRICE_IN_CONSULTATION
PRIJS_NADER_OVEREEN_TE_KOMENPRICE_TO_BE_NEGOTIATED
PRIJS_OP_AANVRAAGPRICE_ON_REQUEST
TEGEN_ELK_AANNEMELIJK_BODANY_PLAUSIBLE_BID
VASTE_PRIJSFIXED_PRICE
VERKOOP_BIJ_INSCHRIJVINGBY_TENDER
VRAAGPRIJSASKING_PRICE
BadkamervoorzieningenRealEstateProperty/Floors/Floor/Rooms/Room/BathroomFacilities/Facility
LIGBADBATH
ZITBADHALF_BATH
TOILETTOILET
DOUCHESHOWER
URINOIRURINOIR
BIDETBIDET
STOOMCABINESTEAMCABIN
JACUZZIJACUZZI
OrientatieOrientationType
NOORDNORTH
NOORDOOSTNORTH_EAST
OOSTEAST
ZUIDOOSTSOUTH_EAST
ZUIDSOUTH
ZUIDWESTSOUTH_WEST
WESTWEST
NOORDWESTNORTH_WEST
RealEstateProperty/Facilities/KitchenType
Type keukenRealEstateProperty/Floors/Floor/Rooms/Room/KitchenTypes/KitchenType
OPENKEUKENOPEN
WOONKEUKENDINING
DICHTEKEUKENCLOSED
HALFOPENKEUKENSEMI_OPEN
Type overige ruimteRealEstateProperty/Floors/Floor/Rooms/Room/Type
BIJKEUKENSCULLERY
DOUCHESHOWER
TOILETTOILET
GANGCORRIDOR
TOCHTPORTAALENCLOSED_PORCH
HALHALL
STOOKRUIMTEBOILER_ROOM
BERGINGSTOREROOM
PROVISIERUIMTESTORAGE
DAKKAPELDORMER
LOGGIALOGGIA
OVERLOOPVESTIBULE
WASRUIMTELAUNDRY_ROOM
Type woonkamerRealEstateProperty/Floors/Floor/Rooms/Room/LivingRoomTypes/LivingRoomType
TKAMERT_ROOM
ZKAMERZ_ROOM
UKAMERU_ROOM
LKAMERL_ROOM
KAMERENSUITEROOM_EN_SUITE
VOORMALIGENSUITEFORMER_ROOM_EN_SUITE
DOORZONKAMERSUNRAYS_ROOM
TUINKAMERGARDENROOM
SERRECONSERVATORY
STUDEERKAMERSTUDY
WERKKAMEROFFICE
WOONKAMERLIVING_ROOM
GaragevoorzieningRealEstateProperty/Garages/Garage/Facilities/Facility
VERWARMINGHEATING
ELEKTRAELECTRICITY
WATERWATER
VLIERINGLOFT
ELEKTRISCHEDEURELECTRIC_DOORS
Type garageRealEstateProperty/Garages/Garage/Type
AANGEBOUWD_STEENATTACHED_STONE
GEEN_GARAGEOPTION
AANGEBOUWD_HOUTATTACHED_WOOD
VRIJSTAAND_STEENDETACHED_STONE
VRIJSTAAND_HOUTDETACHED_WOOD
INPANDIGINDOOR
GARAGEBOXGARAGEBOX
PARKEERKELDERBASEMENT_CAR_PARK
GARAGE_MOGELIJKOPTION
CARPORTCARPORT
PARKEERPLAATSPARKING_PLACE
GARAGE_MET_CARPORTGARAGE_WITH_CARPORT
Kwaliteit tuinRealEstateProperty/Gardens/Garden/Quality
AANTELEGGENTO_BE_CREATED
VERWAARLOOSDNEGLECTED
NORMAALNORMAL
FRAAIAANGELEGDBEAUTIFULLY_LANDSCAPED
VERZORGDWELL_MAINTAINED
Type tuinRealEstateProperty/Gardens/Garden/Type
ACHTERTUINBACK_YARD
VOORTUINFRONT_YARD
ZIJTUINSIDE_YARD
TUINRONDOMGARDEN_AROUND
PATIOATRIUMPATIO_ATRIUM
PLAATSOPEN_AREA
ZONNETERRASSUN_TERRACE
TaalRealEstateProperty/LocalizationInfo/Language
CultuurRealEstateProperty/LocalizationInfo/Culture
de-ATde-AT
de-CHde-CH
de-DEde-DE
en-GBen-GB
es-ESes-ES
fr-FRfr-FR
hr-HRhr-HR
nl-NLnl-NL
it-ITit-IT
ru-RUru-RU
sk-SKsk-SK
MunteenheidRealEstateProperty/LocalizationInfo/Currency
ANGANG
BGNBGN
CHFCHF
CZKCZK
EUREUR
HRKHRK
HUFHUF
PLNPLN
RSDRSD
RONRON
RUBRUB
USDUSD
VerdiepingRealEstateProperty/Floors/Floor/Type
0GROUND_FLOOR
1FLOOR_1
2FLOOR_2
3FLOOR_3
4FLOOR_4
5FLOOR_5
6FLOOR_6
7FLOOR_7
8FLOOR_8
9FLOOR_9
10FLOOR_10
11FLOOR_11_15
12FLOOR_11_15
13FLOOR_11_15
14FLOOR_11_15
15FLOOR_11_15
Soort aanvaardingRealEstateProperty/Offer/Acceptance
IN_OVERLEGIN_CONCERT
PER_DATUMBY_DATE
DIRECTDIRECT
Type relatie//element(*,RelationType)/RelationType
PERSONPERSON
COMPANYCOMPANY
BeschikbaarheidsstatusRealEstateProperty/PropertyInfo/Status
BESCHIKBAARAVAILABLE
ONDER_BODAVAILABLE
ONDER_OPTIEAVAILABLE
VERKOCHT_ONDER_VOORBEHOUDSOLD_UNDER_CONDITIONS
VERHUURD_ONDER_VOORBEHOUDRENTED_UNDER_CONDITIONS
VERKOCHTSOLD
VERHUURDRENTED
INGETROKKENWITHDRAWN

Klik hier om het objecteigenschaplijsten overzicht te downloaden.

De praktijk

In het vorige gedeelte van deze Wiki is de theorie besproken. Welke begrippen worden er gebruikt en welke processen zijn er onderkent. In het gedeelte ‘De praktijk’ wordt exact uitgelegd op welke manier Contracten verwerkt moeten worden en panden en relaties opgehaald kunnen worden.

De webservice van de Connector

De Connector is geïmplementeerd als een RESTful web service. De gegevens (panden en relaties) worden in de vorm van XML berichten beschikbaar gesteld via de webservice. Deze gegevens worden opgehaald door het uitvoeren van een HTTP GET request. De Media Partner krijgt ‘schone, valide’ XML berichten terug; valide volgens vooraf gespecificeerde XSD schema’s.

Om de Connector opdrachten te geven (bijvoorbeeld de opdracht om een Contract te accepteren) stuurt de Media Partner een XML bericht naar de webservice van de Connector. Dit laatste gebeurt door het XML bericht aan te leveren aan de Connector met een standaard HTTP POST actie.

Versie beheer

De implementatie van de Connector zal zich in de komende jaren evolueren. Verschillende Content Providers en Media Partners stellen in de toekomst mogelijk nieuwe eisen. Om hier aan te kunnen blijven voldoen zal de API van de Connector in de toekomst ongetwijfeld wijzigen. Nieuwe functies zullen worden toegevoegd en XML berichten zullen wijzigen. Om ervoor te zorgen dat er doorontwikkeld kan worden aan de Connector zonder dat alle Media Partners continu hun consumerende software aan moeten passen werkt de Connector met versies. En de Connector ondersteunt dus meerdere versies tegelijkertijd.

Versies zullen verschillen in API methods en de XML definities. Iedere versie kent dus zijn eigen XSD’s. Een XML bericht uit versie X moet dus valide zijn met het bijbehorende XSD uit versie X. Een XML bericht uit versie X is dus niet per definitie valide volgens een XSD uit versie Y.

Zodra een versie de status ‘Released’ heeft zijn de API methods vastgelegd en zijn de XSD’s niet meer wijzigbaar. Totdat de status van een versie ‘Released’ is zullen er nog wijzigingen mogelijk zijn. Bij een status ‘Release Candidate’ is dit erg onwaarschijnlijk; maar wel mogelijk. Bij een status ‘Development’ is dit juist heel waarschijnlijk. Als een XSD aangepast moet worden maar heeft de laatste versie van de API de status ‘Released’ dan zal er dus een nieuwe versie van de webservice komen.

Op dit moment zijn de volgende versies beschikbaar:

16.0Releasedhttps://api.wazzupsoftware.com/outputservice.svc/16/0/ This is the most actual version of the Wazzup Real Estate Connector

Locatie

De webservice voor Media Partners bevindt zich op de onderstaande locatie:

https://api.wazzupsoftware.com/outputservice.svc/X/Y/

Het versie nummer van de Connector staat vermeld in de URL van de webservice. https://api.wazzupsoftware.com/outputservice.svc/16/0/ betekent versie 16.0 (X = major version number = 16, Y = minor version number = 0).

Schema (XSD) bestanden

De Connector levert XML bestanden die altijd voldoen aan een vooraf gedefinieerd schema. Dit schema is in XSD bestanden vastgelegd. Iedere versie van de Connector kent zijn eigen schema, welke mogelijk afwijkt van het schema van een vorige versie.

Gebruik het juiste versienummer en token in de URL om toegang te krijgen tot het bestand. In onderstaande voorbeelden is token ABCDEFG als voorbeeld gebruikt.

XSD bestanden

XSD Media Contract Snapshot
https://api.wazzupsoftware.com/InformationService.svc/16/0/ABCDEFG/files/?filename=MediaContractSnapshot.xsd

XSD Real Estate Property Summary
https://api.wazzupsoftware.com/InformationService.svc/16/0/ABCDEFG/files/?filename=RealEstatePropertySummarySnapshot.xsd

XSD Real Estate Property
https://api.wazzupsoftware.com/InformationService.svc/16/0/ABCDEFG/files/?filename=RealEstateProperty.xsd

https://api.wazzupsoftware.com/InformationService.svc/16/0/ABCDEFG/files/?filename=RealEstateProperty.zip (Inclusief beschrijvingen en Schema weergave als HTML)

XSD Relation
https://api.wazzupsoftware.com/InformationService.svc/16/0/ABCDEFG/files/?filename=Relation.xsd

 

Contracten

Contractverzoeken verwerken

In dit scenario laat de Media Partner niet zomaar alle makelaarskantoren toe als ‘klant’. De makelaar dient een verzoek in voor een contract en de Media Partner keurt dit verzoek goed of af. Dit scenario is van toepassing als de instelling ‘Auto Accept’ op ‘nee’ staat ingesteld voor de specifieke Media Partner.

Dit scenario is niet van toepassing indien ‘Auto Accept’ op ‘ja’ staat ingesteld. In het geval dat ‘Auto Accept’ op ‘ja’ staat gebeurt dit gehele proces namelijk automatisch en worden altijd alle Contract verzoeken direct geaccepteerd.

Het scenario ‘Contract verzoeken verwerken’ is bijvoorbeeld toepasbaar bij een Media Partner die een (papieren) overeenkomst wilt hebben met de makelaar voordat hij toestaat dat de makelaar panden gaat publiceren naar de Media Partner. Vaak worden deze overeenkomsten éérst getekend om duidelijk te maken aan de makelaar dat hij, zodra hij een pand gaat publiceren naar de Media Partner, feitelijk de opdracht geeft aan de Media Partner om een product of dienst voor het pand te leveren. En dat de kosten vervolgens (uiteraard) voor rekening zijn van deze makelaar.

Voor dit scenario haalt de Media Partner met regelmaat (bijvoorbeeld 1x per dag) een lijst op bij de Connector met alle contract verzoeken. Deze verzoeken verwerkt de Media Partner, bijvoorbeeld door overeenkomsten op te stellen en per post te versturen naar de makelaar. Is de makelaar uiteindelijk (enkele dagen later) akkoord met de voorwaarden en heeft de Media Partner alle benodigde getekende documenten ontvangen dan bevestigd de Media Partner dit bij de Connector. Gaat de makelaar niet akkoord dan laat de Media Partner dit ook weten bij de Connector.

Pas als een Contract actief is (in dit scenario: pas als de Media Partner het verzoek voor het contract geaccepteerd heeft) kan de makelaar panden publiceren naar de Media Partner.

In onderstaand sequence diagram wordt de workflow voor het verwerken van verzoeken voor een Contract weergegeven.

Stap A + B: Ophalen van verzoeken

Als eerste haalt de Media Partner alle verzoeken voor Contracten op. Dit gaat met een HTTP GET request op alle MediaContracts met de status van het Contract ‘pendingactivation’. De URL van dit GET request ziet er voor versie 16.0 van de connector en token ABCDEFG als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?state=pendingactivation

private IList<MediaContractSnapshot> getMediaContractSnapshots(string constractState)
{
     var url = string.Format(@"{0}ActivateService.svc/16/0/{1}/mediacontract/?state={2}",
                m_connectorURL, m_token, constractState);
     var result = XmlLib.GetObject<MediaContractSnapshotResult>(url);
     if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
     return result.ArrayOfMediaContractSnapshot;
} 

Met een geldig token maar zonder Contract verzoeken ziet het resultaat er als volgt uit:

Met een geldig token en één verzoek ziet het resultaat er als volgt uit:

Geen recht om de API method aan te roepen.
Is het token geldig maar heb je als Media Partner niet het recht om verzoeken op te halen (bijvoorbeeld omdat ‘Auto Accept’ op ‘ja’ staat ingesteld) dan krijg je het volgende resultaat:

Ongeldig token
Indien de Connector wordt aangeroepen met een ongeldig token kun je het onderstaande resultaat verwachten:

Stap C + D: Goedkeuren van contract verzoeken

Als de contract verzoeken éénmaal zijn opgehaald kunnen ze verwerkt worden. Dit verwerken is per Media Partner anders: de ene partner belt de makelaar om de voorwaarden te bespreken; de ander stuurt per post een overeenkomst op, etc. Zodra dit verwerken is afgerond kan de Media Partner aan de Connector doorgeven of het verzoek geaccepteerd of geweigerd wordt.

Het accepteren gaat door een bericht te posten met als actie ‘acceptactivation’. Het resultaat van de actie geeft aan of de actie gelukt of mislukt is. De URL van deze POST actie ziet er voor versie 1.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=acceptactivation

Hieronder een code voorbeeld waarin een verzoek van een contract wordt geaccepteerd:

public void AcceptActivation(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "acceptactivation");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
 
    request.ContentLength = 0;
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Stap E + F: Weigeren van contract verzoeken

Uiteraard kan een verzoek voor een contract ook geweigerd worden. Het weigeren gaat op een soortgelijke manier als het accepteren, alleen is de actie dan ‘rejectactivation’ en niet ‘acceptactivation’. Daarnaast kan de Media Partner bij het weigeren een reden meegeven. Deze reden wordt via de software van de Content Provider (b.v. Kolibri) getoond aan de makelaar.

De URL van de POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=rejectactivation&reason=Overeenkomst%20niet%20op%20tijd%20ontvangen

Hieronder een C# code voorbeeld waarin een verzoek van een contract wordt geweigerd:

public void RejectActivation(int mediaContractID, string reason)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}&reason={4}",
        m_connectorURL, m_token, mediaContractID, "rejectactivation", HttpUtility.UrlEncode(reason));
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    request.ContentLength = 0;
 
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Een contract pauzeren

Met het API recht ‘SuspendMediaContract’ wordt het voor een Media Partner mogelijk om een Contract met een makelaar tijdelijk te pauzeren. Door een Contract te pauzeren wordt het voor de makelaar niet meer mogelijk om vanuit de software van de Content Provider (b.v. Kolibri) panden te delen. Voor reeds gedeelde panden en bij ‘automatische mode’ gebeurt er niets.

Bij het pauzeren van een Contract heeft de Media Partner de mogelijkheid om een reden mee te geven. Deze reden wordt via de software aan de makelaar getoond.

Stap A + B: Een contract pauzeren

Het pauzeren van een contract gaat door een bericht te posten met als actie ‘suspend’. Het resultaat van de actie geeft aan of de actie gelukt of mislukt is. De URL van deze POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=suspend

Hieronder een code voorbeeld waarin een verzoek van een contract wordt geaccepteerd:

public void SuspendContract(int mediaContractID, string reason)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}&reason={4}",
        m_connectorURL, m_token, mediaContractID, "suspend", HttpUtility.UrlEncode(reason));
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Stap C + D: Een contract heractiveren

Om een gepauzeerd contract weer te heractiveren post de Media Partner een bericht me als actie ‘reactivate’. Het resultaat van de actie geeft aan of de actie gelukt of mislukt is. De URL van deze POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=reactivate

Een ‘reactivate’ dient enkel uitgevoerd te worden op een gepauzeerd Contract, anders zal er een fout optreden.

Hieronder een code voorbeeld waarin een gepauzeerd contract wordt geheractiveerd:

public void ReactivateContract(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "reactivate");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Contractbeëindigingen verwerken

Uiteraard is het mogelijk dat een makelaar geen gegevens meer wilt delen met een Media Partner. Dit geeft de makelaar aan via de software van de Content Provider (b.v. Kolibri). De Media Partner zal met enige regelmaat (bijvoorbeeld 1x per dag) moeten controleren of er nog verzoeken voor Contractbeëindigingen voor hem zijn.

Bij de ontvangst van een verzoek voor een Contractbeëindiging zal de Media Partner de nodige administratieve handelingen door kunnen voeren om vervolgens aan de Connector te bevestigen dat het Contract is beëindigd.

Dit scenario is niet van toepassing indien ‘Auto Accept Deactivation’ op ‘ja’ staat ingesteld. In het geval dat ‘Auto Accept Deactivation’ op ‘ja’ staat gebeurt dit gehele proces namelijk automatisch en worden altijd alle Contract beëindigingsverzoeken automatisch direct geaccepteerd en afgerond.

Nadat een verzoek voor een Contractbeëindiging is bevestigd door de Media Partner kan de makelaar geen gegevens meer delen met de Media Partner.

In onderstaand sequence diagram wordt de workflow voor het verwerken van verzoeken voor een Contractbeëindigingen weergegeven.

Uit het bovenstaande diagram valt inderdaad af te leiden dat een Media Partner een verzoek tot een beëindiging niet kan/mag weigeren.

Nadat een Media Partner het verzoek voor beëindiging van het Contract heeft bevestigd ontvangt de Media Partner geen gedeelde gegevens (panden en/of relaties) meer van het betreffende makelaarskantoor. Vervolgens kan de makelaar wel via de software van de Content Provider (b.v. Kolibri) opnieuw een Contract voor de Media Partner indienen. En hiermee begint het proces dus weer helemaal van vooraf aan.

Stap A + B: Ophalen van beëindiging verzoeken

Als eerste haalt de Media Partner alle verzoeken voor beëindiging van Contracten op. Dit gaat met een HTTP GET request op alle MediaContracts met de status van het Contract ‘pendingdeactivation’. De URL van dit GET request ziet er voor versie 16.0 van de connector en token ABCDEFG als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?state=pendingdeactivation

Hieronder een C# code voorbeeld:

public void AcceptDeactivation(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "acceptdeactivation");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Stap C + D: Een beëindigingsverzoek accepteren

Na de ontvangst van één of meerdere beëindigingsverzoeken zal de Media Partner dit verzoek moeten accepteren.

Het accepteren gaat door een bericht te posten met als actie ‘acceptdeactivation’. Het resultaat van de actie geeft aan of de actie gelukt of mislukt is. De URL van deze POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Contract 12 als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?id=12&action=acceptdeactivation

Hieronder een code voorbeeld waarin een verzoek tot beëindiging van een contract wordt geaccepteerd:

public void AcceptDeactivation(int mediaContractID)
{
    var url = string.Format("{0}ActivateService.svc/16/0/{1}/mediacontract/?id={2}&action={3}",
        m_connectorURL, m_token, mediaContractID, "acceptdeactivation");
    postMessage(url);
}
private static void postMessage(string url)
{
    var request = WebRequest.Create(url);
    request.Method = "POST";
    using (var response = request.GetResponse())
    {
        var result = XmlLib.GetObject<DefaultResult>(response.GetResponseStream());
        if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
    }
} 

Panden

Zodra er een actief Contract is tussen een makelaarskantoor en een Media Partner kan een makelaar panden delen met een Media Partner. Dit wordt over het algemeen ‘publiceren’ genoemd.

Een makelaar ‘publiceert’ per pand, of schakelt de ‘automatisch mode’ in. Bij de automatische mode worden al zijn panden altijd automatisch gedeeld met de betreffende Media Partner.

Zodra een pand, handmatig of automatisch, gedeeld wordt komen de actuele pandgegevens beschikbaar voor de betreffende Media Partner. Zodra de makelaar de publicatie stopt (alléén mogelijk als de automatische mode uit staat) worden de pand gegevens niet meer gedeeld. Het delen van een pand stopt ook als een pand niet meer actief is:

Actieve panden
De Connector heeft alleen actieve panden. We beschouwen een pand actief als deze:

  • te koop, te huur, ter pacht is,
  • verkocht onder voorbehoud of verhuurd onder voorbehoud is,
  • verkocht is, maar niet langer dan 8 dagen.
  • verhuurd is, maar niet langer dan 8 dagen.
  • ingetrokken is, maar niet langer dan 8 dagen.

Is een pand niet meer actief dan verdwijnt deze automatisch en zal deze ook niet meer gedeeld (kunnen) worden met Media Partners.

Terugkoppeling

Een Media Partner haalt de gegevens van gedeelde panden op via de Connector en geeft vervolgens een terugkoppeling aan de Connector over de publicatie. Deze terugkoppeling kan bestaat uit een acceptatie (‘confirm’) of een weigering (‘reject’). De terugkoppeling kan direct bij het ophalen van de gegevens plaats vinden, of uren of dagen later.

Bij de acceptatie kan de Media Partner een webadres meegeven die verwijst naar het eindproduct (bijvoorbeeld de detailpagina van het pand op de portal website van de Media Partner). Ook kan een bericht aangeleverd worden die getoond wordt aan de makelaar via de software van de Content Provider (b.v. Kolibri).

Door een pand te weigeren kan de Media Partner terugkoppeling geven aan de makelaar over problemen met het gedeelde pand. Stelt de Media Partner als eis dat er foto’s bij een pand aangeleverd moeten worden, en deelt de makelaar een pand zonder foto’s dan kan de Media Partner de fout terugkoppelen aan de makelaar, wederom via de software van de Content Provider.

De workflow

Om panden op te halen en te verwerken doorloopt de Media Partner de volgende 5 stappen:

  1. Haal de lijst op met actieve Contracten (‘makelaarskantoren’).
  2. Haal per actief Contract de lijst met pand summaries op (een beperkte set aan gegevens per actief pand).
  3. Controleer per pand aan de hand van de pand summary of het pand in de database van de Media Partner anders is dan het pand van de Connector.
  4. Indien het pand anders is (gewijzigd door de makelaar) haal dan alle pandgegevens op en verwerkt deze.
  5. Meld het resultaat van de verwerking aan de Connector d.m.v. een ‘confirm’ of een ‘reject’.

In een sequence diagram ziet dit er als volgt uit:

Stap A + B: Het ophalen van actieve Contracten

Het ophalen van contracten gaat d.m.v. een HTTP GET actie. Naast het ophalen van Contract verzoeken (zie hier) en Contract beëindigingsverzoeken (zie hier) kan ook de lijst met actieve Contracten opgehaald worden. Dit zijn de Contracten waarvan de makelaar panden met de Media Partner wil delen. Alleen de pandgegevens van panden met een actief contract tussen de Media Partner en de makelaar mogen door de Media Partner gebruikt worden. Dit zijn ook de enige pandgegevens die de Connector aanlevert.

Een makelaar dient via de software voor een Media Partner een verzoek in voor een Contract. De status van het Contract (eerst INACTIVE) wordt nu PENDING ACTIVATION.De Media Partner bevestigd dit verzoek waarna het Contract actief wordt (status ACTIVE). Vervolgens kan de makelaar via de software een verzoek indienen voor beëindiging van het Contract (status PENDING DEACTIVATION). Dit verzoek wordt opgehaald door de Media Partner die de beëindiging bevestigd (status INACTIVE).

Een Media Partner ontvangt alleen actieve panden van de Connector als het Contract de status ACTIVE of PENDING DEACTIVATION heeft. In alle andere gevallen dient de Media Partner de pandgegevens die horen bij het betreffende Contract te verwijderen.

Als eerste haalt de Media Partner alle actieve Contracten op. Dit gaat met een HTTP GET request op alle MediaContracts met de status van het Contract ‘active’. De URL van dit GET request ziet er voor versie 16.0 van de connector en token ABCDEFG als volgt uit:

https://api.wazzupsoftware.com/ActivateService.svc/16/0/ABCDEFG/mediacontract/?state=active

Hieronder een C# code voorbeeld:

private IList<MediaContractSnapshot> getMediaContractSnapshots(string constractState)
{
     var url = string.Format(@"{0}ActivateService.svc/16/0/{1}/mediacontract/?state={2}",
                m_connectorURL, m_token, constractState);
     var result = XmlLib.GetObject<MediaContractSnapshotResult>(url);
     if (!result.IsSuccess)
            throw new Exception(result.ErrorMessage);
     return result.ArrayOfMediaContractSnapshot;
} 

Stap C + D Het ophalen van Real Estate Property Summaries

Per Contract kunnen de Real Estate Property Summaries opgehaald worden. De Summaries bevatten een beperkte set aan gegevens van de actieve panden; genoeg voor de Media Partner om te bepalen of de gegevens van de panden in zijn database nog overeenkomen met de gegevens zoals de makelaar ze als laatst heeft bijgewerkt.

Een belangrijk veld uit de Summaries is ‘ModificationDateTimeUtc’; als dit veld anders is dan de vorige keer dat de pand gegevens door de Media Partner is opgehaald dan heeft de Media Partner niet de meest recente pand gegevens en zal hij deze dus opnieuw op moeten halen.

Hieronder aantal pand Summaries in een XML bestand:

Het ophalen van de Summaries gaat met een HTTP GET request. De URL van dit GET request ziet er voor versie 16.0 van de Connector, token ABCDEFG en Realtor ID 376 (uit het MediaContract uit stap A + B) als volgt uit:

https://api.wazzupsoftware.com/OutputService.svc/16/0/ABCDEFG/realestatesummary/?realtorid=376

Hieronder een C# code voorbeeld:

public IList<RealEstatePropertySummarySnapshot> GetRealEstatePropertySummaries(int realtorID)
{
    modifiedSinceUTC = modifiedSinceUTC ?? new DateTime(1900, 1, 1).ToUniversalTime();
    var url = string.Format(@"{0}OutputService.svc/16/0/{1}/realestatesummary/?realtorid={2}", m_connectorURL, m_token, realtorID"));
    var result = XmlLib.GetObject<RealEstatePropertySummarySnapshotResult>(url);
    if (!result.IsSuccess)
        throw new Exception(result.ErrorMessage);
    return result.ArrayOfRealEstatePropertySummarySnapshot;
} 

Stap E + F Het ophalen van een Real Estate Property

Komt de Media Partner met behulp van de Summaries tot de conclusie dat de pandgegevens in de database van de Media Partner niet meer actueel zijn dan kan hij de actuele gegevens ophalen door middel van een HTTP GET request. De URL van dit GET request ziet er voor versie 16.0 van de Connector, token ABCDEFG en Realtor ID 376 (uit de Summary uit stap C + D) en Real Estate Property ID 1365 (uit de Summary uit stap C + D) als volgt uit:

https://api.wazzupsoftware.com/OutputService.svc/16/0/ABCDEFG/realestate/?realtorid=376&id=1365

Hieronder een C# code voorbeeld:

public RealEstateProperty GetRealEstateProperty(int realtorID, int realEstateProperyID)
{
    var url = string.Format(@"{0}OutputService.svc/16/0/{1}/realestate/?realtorid={2}&id={3}",
        m_connectorURL, m_token, realtorID, realEstateProperyID);
    var result = XmlLib.GetObject<RealEstatePropertyResult>(url);
    if (!result.IsSuccess)
        throw new Exception(result.ErrorMessage);
    return result.RealEstateProperty;
} 

Stap G + H Het bevestigen van een succesvolle verwerking van een Real Estate Property

Wat er na het ophalen van een Real Estate Property gebeurt is per Media Partner verschillend. De één verwerkt de gegevens in haar database waarna deze op de portal verschijnt; de ander start met DTP werkzaamheden en maakt m.b.v. de gegevens een papieren brochure. Voor de ene Media Partner heeft de pandgegevens binnen enkele seconden verwerkt; de ander heeft enkele dagen nodig. Maar zodra de Media Partner zijn werk voor het pand heeft afgerond bevestigt de Media Partner dit aan de Connector. Deze Connector geeft dit bericht vervolgens weer door aan de makelaar via de software van de Content Provider (b.v. Kolibri). Ook kan er extra informatie toegevoegd worden bij deze bevestiging; namelijk een bericht en een url. In het bericht informeert de Media Partner de makelaar over het eindresultaat van de succesvolle verwerking en de optionele url verwijst naar een webpagina waar de makelaar het resultaat kan bewonderen. Een voorbeeld van een bericht kan zijn “De pandgegevens zijn succesvol verwerkt in onze database.” en een url bijvoorbeeld “https://www.mediapartner.nl/woningaanbod/koop/arnhem/jansbuitensingel/7”).

De ene Media Partner verwerkt continu de wijzigingen van het pand. Zo zal een Portal altijd de meest recente gegevens willen ontvangen en tonen op haar site. Telkens als deze Media Partner pandgegevens ontvangt bevestigd de Media Partner de succesvolle verwerking aan de Connector. En dit geldt dus niet alleen als het pand voor het eerst wordt aangeboden, maar ook telkens als er wijzigingen zijn doorgegeven en verwerkt door de Media Partner.

Een andere Media Partner verwerkt de gegevens van een pand slechts één keer. Zo zal een drukker de gegevens verwerken en de brochure drukken. Worden de pandgegevens daarna gewijzigd dan zal de drukker (meestal) niet opnieuw brochures gaan drukken. In het geval dat de Media Partner de gegevens slechts 1x verwerkt bevestigd de Media Partner dus ook slechts 1x de correcte verwerking van de pand gegevens.

Het bevestigen van een succesvolle verwerking van de pandgegevens gaat door middel van een HTTP POST actie. De URL van zo’n POST actie ziet er voor versie 16.0 van de Connector, token ABCDEFG en Realtor ID 376 (uit de Summary uit stap C + D) en Real Estate Property ID 1365 (uit de Summary uit stap C + D) als volgt uit:

https://api.wazzupsoftware.com/OutputService.svc/16/0/ABCDEFG/realestate/?realtorid=376&id=1365&action=confirm&url=http%3a%2f%2fwww.funda.nl%2fpanddetails.aspx%3fpandid%3d1234&message=De+pandgegevens+zijn+succesvol+verwerkt+in+onze+database.

Hieronder een C# code voorbeeld:

public void ConfirmRealEstatePropertyRetrieval(int realtorID, int realEstateProperyID, string mediaPartnerUrl, string message)
{
    var url = string.Format(@"{0}OutputService.svc/16/0/{1}/realestate/?realtorid={2}&id={3}&action={4}&url={5}&message={6}",
        m_connectorURL, m_token, realtorID, realEstateProperyID, "confirm", HttpUtility.UrlEncode(mediaPartnerUrl), HttpUtility.UrlEncode(message));
    var result = HttpLib.PostMessage<DefaultResult>(url);
    if (!result.IsSuccess)
        throw new Exception(result.ErrorMessage ?? "Unknown error message.");
} 

Stap I + J Het weigeren van de verwerking van een Real Estate Property

Helaas gaat niet altijd alles gelijk goed. Zo kan het zijn dat een pand niet aan de minimale eisen van de Media Partner voldoet. Heeft een pand bijvoorbeeld geen foto’s maar is dit een vereiste van de Media Partner dan kan deze dit terugkoppelen aan de makelaar. Dit gaat via de Connector door een HTTP POST actie uit te voeren. Bij deze actie kan een reden worden opgegeven die wordt getoond via de software van de Content Provider aan de makelaar. De makelaar kan vervolgens de noodzakelijk acties ondernemen om ervoor te zorgen dat het pand wel geaccepteerd wordt. Bijvoorbeeld door foto’s toe te voegen aan het betreffende pand. Wijzigt de makelaar het pand dan zal de Media Partner dit merken als hij de Summaries gaat verwerken. Het pand met foto’s wordt opnieuw opgehaald en het pand kan alsnog succesvol verwerkt worden.

De URL van een POST actie waarmee het pand wordt geweigerd ziet er voor versie 16.0 van de Connector, token ABCDEFG en Realtor ID 376 (uit de Summary uit stap C + D) en Real Estate Property ID 1365 (uit de Summary uit stap C + D) als volgt uit:

https://api.wazzupsoftware.com/OutputService.svc/16/0/ABCDEFG/realestate/?realtorid=376&id=1365&action=reject&message=Dit+pand+heeft+geen+foto%27s.+Voeg+foto%27s+toe+voor+een+succesvolle+verwerking.

Hieronder een C# code voorbeeld:

public void RejectRealEstatePropertyRetrieval(int realtorID, int realEstateProperyID, string message)
{
    var url = string.Format(@"{0}OutputService.svc/16/0/{1}/realestate/?realtorid={2}&id={3}&action={4}&message={5}",
        m_connectorURL, m_token, realtorID, realEstateProperyID, "reject", HttpUtility.UrlEncode(message));
    var result = HttpLib.PostMessage<DefaultResult>(url);
    if (!result.IsSuccess)
        throw new Exception(result.ErrorMessage ?? "Unknown error message.");
} 

Scenarios

Om alles nog eens samen te vatten zijn er een aantal scenario’s uitgewerkt. Een Media Partner implementeert één van deze scenario’s.

Deze scenario’s zullen ook worden gebruikt om naar te refereren in de communicatie tussen Kolibri en de Media Partners.

Scenario A Simpel / Auto Accept

In dit scenario worden alle verzoeken voor Contracten automatisch geaccepteerd door de Connector.

De 4 stappen die telkens (1 á 2 keer per dag) doorlopen moeten worden zijn:

  1. De Media Partner haalt eerst alle Contracten op en evalueert deze (‘welke makelaars moet ik aanmaken in mijn database, welke makelaars moet ik verwijderen’).
    API method: GetAllMediaContracts
  2. Vervolgens haalt de Media Partner de Real Estate Property Summaries per makelaar op en evalueert deze (‘welk pand moet ik verwijderen uit mijn database”).
    API method: GetRealEstatePropertySummariesForRealtor
  3. De Media Partner werkt haar database bij voor elk nieuw/gewijzigd pand.
    API method: GetRealEstatePropertyXml
  4. Per nieuw/gewijzigd pand geeft de Media Partner terugkoppeling aan de makelaar via de Connector m.b.v. een Confirm of een Reject bericht.
    API method: ConfirmRealEstatePropertyRetrieval / RejectRealEstatePropertyRetrieval

Voorwaarden voor dit scenario:

  • Auto Accept moet op ‘aan’ staan

Noodzakelijke API rechten:

  • OutputBackEnd.GetAllMediaContracts
  • OutputBackEnd.GetRealEstatePropertySummariesForRealtor
  • OutputBackEnd.GetRealEstatePropertyXml
  • OutputBackEnd.ConfirmRealEstatePropertyRetrieval
  • OutputBackEnd.RejectRealEstatePropertyRetrieval
  • OutputBackEnd.GetXsdFile

Een voorbeeld implementatie

Media Partners consumeren de WREC door het aanroepen van de verschillende API methods zoals beschreven in deze Wiki. Een Media Partner ontwikkelt feitelijk een WREC Client applicatie, vaak een ‘connector’, ‘adapter’ of ‘import tool’ genoemd.

Om het ontwikkelen van zo’n WREC Client te versimpelen is de WREC Client demo applicatie ontwikkeld (in C#). Deze Visual Studio 2010 solution kan hier gedownload worden. Na het invullen van het juiste token in het bestand ‘program.cs’ op regel 16, haalt de applicatie Contracten, pand summaries en pand details op. De demo applicatie toont ook hoe verzoeken voor Contracten en contract beëindigingen opgehaald en verwerkt kunnen worden. Deze functionaliteit hoeft uiteraard alleen ontwikkeld te worden als ‘Auto Accept’ voor de betreffende Media Partner op false staat.

De complete demo applicatie waarmee Contracten verwerkt worden en panden opgehaald worden, bestaat uit zo’n 400 regels getypte code.

FAQ

In welke volgorde moet ik de teksten van een pand weergeven?
De volgorde van de nodes in de XML/XSD zijn willekeurig. Normaal gesproken is dit de volgorde die de makelaar in Nederland gewend is:

  1. Advertentietekst – RealEstateProperty/Descriptions/AdText
  2. Indeling – RealEstateProperty/Descriptions/GroundFloorDescription
  3. Verdieping 1 – RealEstateProperty/Descriptions/FirstFloorDescription
  4. Verdieping 2 – RealEstateProperty/Descriptions/SecondFloorDescription
  5. Overige verdiepingen – RealEstateProperty/Descriptions/OtherFloorDescription
  6. Tuinen – RealEstateProperty/Descriptions/GardenDescription
  7. Balkons – RealEstateProperty/Descriptions/BalconyDescription
  8. Bijzonderheden – RealEstateProperty/Descriptions/DetailsDescription

Wanneer verdwijnt een pand uit ‘mijn feed’?
De Connector levert alleen actieve panden. Dit zijn panden die te koop, te huur of ter pacht zijn, verkocht onder voorbehoud of verhuurd onder voorbehoud zijn, verkocht zijn, maar niet langer dan 8 dagen, verhuurd zijn, maar niet langer dan 8 dagen, ingetrokken zijn, maar niet langer dan 8 dagen. Panden ‘verdwijnen’ dus automatisch als ze niet meer voldoen aan deze criteria.

In Kolibri kan de makelaar zelf ook het delen van een pand met een media partner stoppen. Op het moment dat een makelaar in Kolibri expliciet aangeeft dan het pand niet meer gedeeld moet worden verdwijnt deze DIRECT uit ‘de feed’.

Ik ben zowel AppXchange Partner als Mediapartner. Hoe kan ik de koppeling leggen tussen een object uit de Kolibri API en de Wazzup Real Estate Connector?
In de RealEstateProperty/PropertyInfo vind je een ForeignId en een ForeignAgencyId. Deze komen overeen met respectievelijk het ObjectAssignmentId en het RealEstateAgencyId