Business Endpoints
Below we have documented all endpoints for our primary Business Domain Entities.
Notice
The content of the domainComponentName is always on lower case and contains only letters.
Agency
Sync All Agency
- Method:
POST - Endpoint:
/agency/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Agency By ID
- Method:
POST - Endpoint:
/agency/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "agency",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"name": "Office #1"
}
]
}
Agent
Sync All Agents
- Method:
POST - Endpoint:
/business/:businessId/agent/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Agents By ID
- Method:
POST - Endpoint:
/business/:businessId/agent/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "agent",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"firstName": "John",
"lastName": "Rambo",
"phoneNumber": "+61 404 040 404",
"email": "john@rambo.com"
}
]
}
Appointment
Sync All Appointments
- Method:
POST - Endpoint:
/business/:businessId/appointment/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Appointments By ID
- Method:
POST - Endpoint:
/business/:businessId/appointment/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "appointment",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"propertyId": "00000000-0000-0000-0000-000000000001",
"startDateTime": "2023-01-01T01:23:45.600000Z",
"endDateTime": "2023-01-01T01:23:45.600000Z",
"appointmentType": "PublicOfi"
}
]
}
Parameters
- appointmentType:
Appraisal; Auction; PublicOfi
Business
Sync All Businesses
- Method:
POST - Endpoint:
/business/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Business By ID
- Method:
POST - Endpoint:
/business/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "business",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"name": "Business #1"
}
]
}
Buyer Requirement (v1)
Deprecation Notice
Buyer Requirement v1 will be deprecated and superseded by v2.
Sync All Buyer Requirements
- Method:
POST - Endpoint:
/business/:businessId/buyerrequirements/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Buyer Requirement By ID
- Method:
POST - Endpoint:
/business/:businessId/buyerrequirements/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "buyerrequirements",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "ActivePipe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"contactId": "00000000-0000-0000-0000-000000000001",
"vaultReContactId": "110293812",
"minBudget": 125000,
"maxBudget": 175000,
"minBedrooms": 3,
"minBathroom": null,
"minParking": null,
"minLandArea": 100,
"maxLandArea": 120,
"propertyType": "House",
"location":
{
"city": "Sandringham",
"state": "VIC",
"country": "AU",
"postCode": "3191"
}
}
]
}
propertyTypeis an enumeration containing one of the following entries:House,Apartment,Unit,Flat,SemiDetached,Duplex,Land,Townhouse,Studio,Terrace,Villa,Acreage,Rural,Other,BlockOfUnits,OffThePlan,Retirement.vaultReContactId(deprecated) is the correlated contactId on VaultRe.
Buyer Requirement (v2)
Sync All Buyer Requirements
- Method:
POST - Endpoint:
/business/:businessId/buyerrequirementsv2/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Buyer Requirement By ID
- Method:
POST - Endpoint:
/business/:businessId/buyerrequirementsv2/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "buyerrequirementsv2",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "ActivePipe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"contactId": "00000000-0000-0000-0000-000000000001",
"minBudget": 125000,
"maxBudget": 175000,
"minBedrooms": 3,
"maxBedrooms": 5,
"minBathroom": null,
"maxBathroom": 3,
"minParking": null,
"maxParking": 2,
"minLandArea": 100,
"maxLandArea": 120,
"minFloorArea": 30,
"maxFloorArea": 75,
"propertyTypes": ["House"],
"purpose": "Upsizer",
"type": "Manual",
"subType": "ContractsSent",
"contractType": "Sale",
"suburbIds": ["00000000-0000-0000-0000-000000000001"],
"lastTouched": "2023-04-04T01:03:08.580Z"
}
]
}
purposeis an enumeration containing the following entries:Upsizer,Downsizer,FirstHomeBuyer,Investor,BuyThenSell,Uncategorized.typeis an enumeration containing the following entries:Auto,Manual.subTypeis an enumeration containing the following entries:OffersPlaced,ContractsSent,OfiAttendance,Enquiries.contractTypeis an enumeration containing the following entries:Sale,Lease.propertyTypesis an enumeration containing the following entries:House,Apartment,Unit,Flat,SemiDetached,Duplex,Land,Townhouse,Studio,Terrace,Villa,Acreage,Rural,Other,BlockOfUnits,OffThePlan,Retirement.
Contact
Sync All Contacts
- Method:
POST - Endpoint:
/business/:businessId/contact/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Contact By ID
- Method:
POST - Endpoint:
/business/:businessId/contact/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "contact",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"title": "Dr",
"firstName": "Bruce",
"lastName": "Wayne",
"phoneNumber": "+61 040 404 404",
"email": "bruce@justiceleague.com",
"intlAddress": {
"buildingName": "<building name>",
"floor": "1",
"unitNumber": "1",
"streetNumber": "60",
"streetName": "Cordelia Street",
"geographicalInformation": "<geographical info>",
"minorMunicipality": "<minor municipality>",
"majorMunicipality": "South Brisbane",
"governingDistrict": "Queensland",
"postalArea": "2222",
"geoLocation": {
"latitude": 33.8688,
"longitude": 151.2093
},
"countryIdentifier": "AUS"
},
"isUnsubscribedFromEmail": true,
"isUnsubscribedFromSms": false,
"isUnsubscribedFromLetters": true,
"isUnsubscribedFromActivePipe": false,
"primaryMarketingContactUserId": "00000000-0000-0000-0000-000000000001"
}
]
}
Deletion Events
A contact deletion event follows the standard Deletion Webhook format.
However, it is one of the events that supports the mergedInto deletion field. This field indicates that a contact has been deleted because it was merged into another contact.
Data Ingestion
Each domain business component will expose 3 endpoints:
- /business/:businessId/contact/create - for creation
- /business/:businessId/contact/update/:id - for update
- /business/:businessId/contact/delete/:id - for deletion
The expected payload should be a partial representation of the full payload
we currently send via webhook notification. It won't contain the organisationName,
businessId or id fields - all of which will be inferred from the invoked endpoint.
Below is an example of a payload sent to the contact creation endpoint.
{
"title": "Dr",
"firstName": "Bruce",
"lastName": "Wayne",
"phoneNumber": "+61 040 404 404",
"email": "bruce@justiceleague.com"
}
Both creation or update endpoints will return the following HTTP Status codes: - 400 Bad Request - when the payload is invalid or malformed - 401 Unauthorised - when the client is not authenticated - 403 Forbidden - when the client is not authorised to perform a given action - 202 Accepted - when the message was successfully enqueued
Receipt notification
As any other endpoint in Data API, the Ingestion endpoints will process the request
asynchronously (thus, the 202 response upon success). To allow subscribers to track
the completion of these operations, Data API will send back a Receipt request once
the ingestion task is completed.
The fields on the notification envelope will be the same, but the eventReason will
be set to Receipt. When the notification is successful there will
Here is an example of how a receipt notification for successful cases will look like:
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000000",
"domainComponentName": "contact",
"accountId": "00000000-0000-0000-0000-000000000000",
"state": "Receipt",
"payload": [
{
"id": "00000000-0000-0000-0000-000000000000",
"operation": "Create",
"succeeded": true
}
]
}
Also, here is how a receipt notification for when the ingestion task fails:
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000000",
"domainComponentName": "contact",
"accountId": "00000000-0000-0000-0000-000000000000",
"state": "Receipt",
"payload": [
{
"id": "00000000-0000-0000-0000-000000000000",
"operation": "Create",
"succeeded": false,
"failureCause": "firstName must not be blank"
}
]
}
Listing
Sync All Listings
- Method:
POST - Endpoint:
/business/:businessId/listing/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Listing By ID
- Method:
POST - Endpoint:
/business/:businessId/listing/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "listing",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"owner": "Jane Doe",
"fullAddress": {
"buildingName": "<building name>",
"floor": "1",
"unitNumber": "1",
"streetNumber": "60",
"streetName": "Cordelia Street",
"geographicalInformation": "<geographical info>",
"minorMunicipality": "<minor municipality>",
"majorMunicipality": "South Brisbane",
"governingDistrict": "Queensland",
"postalArea": "2222",
"geoLocation": {
"latitude": 33.8688,
"longitude": 151.2093
},
"countryIdentifier": "AUS"
},
"price": 100.00,
"soldPrice": 100.00,
"soldDate": "2023-04-04T01:03:08.580Z",
"areaSize": {
"value": 1.0,
"unitOfMeasurement": "SQM"
},
"bathrooms": 1,
"bedrooms": 1,
"carSpaces": 1,
"created": "2023-04-04T01:03:08.580Z",
"ensuites": 1,
"features": [
"pool"
],
"flatNumber": "1",
"internalArea": {
"value": 1.0,
"unitOfMeasurement": "SQM"
},
"isResidential": true,
"lotNumber": 1,
"postcode": "2222",
"propertyType": "House",
"phase": "Campaign",
"campaignActive": true,
"storeys": 1,
"externalIds": {
"someId": "123",
"anotherId": "456"
},
"listingState": "Live",
"primaryAgentId": "00000000-0000-0000-0000-000000000001",
"secondaryAgentId": "00000000-0000-0000-0000-000000000001",
"headline": "Rustic Renovator's Delight",
"description": "Ancient ruins surrounded by impenetrable jungle",
"externalLink": "https://properties.com",
"underOffer": true,
"showAddress": true,
"energyRating": 3.0,
"advertisedPrice": "$3,000,000",
"listingDate": "2023-01-01T01:23:45.600000Z",
"campaignType": "Auction",
"listingType": "Sale",
"portalStatus": "Current",
"showSoldPrice": true
"images": [
{
"id": "00000000-0000-0000-0000-000000000001",
"url": "https://image.com/image.jpg",
"contentType": "image/jpg",
"tags": ["MainImage", "Photograph"],
"caption": "caption about the image or null",
"createdAt": "2023-04-04T01:03:08.580Z",
"updatedAt": "2023-04-04T01:03:08.580Z",
"isArchived": false
}
]
}
]
}
Parameters
- unitOfMeasurement:
SQM; AC; HA - propertyType:
House; Apartment; Unit; Flat; SemiDetached; Duplex; Land; Townhouse; Studio; Terrace; Villa; Acreage; Rural; BlockOfUnits; OffThePlan; Retirement; Other - phase:
None; AgentLead; Research; Nurture; Pipeline; Prospect; Invalid; LostAndSold; CampaignPrep; Campaign; Settlement; Complete; Withdrawn; Deleted - listingState:
Unapproved; Pending; Live; Paused; Complete; Withdrawn - campaignType:
None; PrivateTreaty; Auction; Tender; SetSaleDate - listingType:
Sale - portalStatus:
Current; Withdrawn; OffMarket; Sold - images.tags:
Photograph; MainImage; Floorplan; Signboard
Open-For-Inspection Attendance
Sync All OFI Attendances
- Method:
POST - Endpoint:
/business/:businessId/ofi-attendance/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync OFI Attendance By ID
- Method:
POST - Endpoint:
/business/:businessId/ofi-attendance/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "ofiattendance",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source":"VaultRe",
"value": 12345
},
"id":"00000000-0000-0000-0000-000000000001",
"propertyId":"00000000-0000-0000-0000-000000000001",
"contactId":"00000000-0000-0000-0000-000000000001",
"attendanceDateTime":"2023-01-01T01:23:45.600000Z",
"type":"Private"
}
]
}
VaultRE Business Contact Relation
Sync All VaultRE Contact Relations
- Method:
POST - Endpoint:
/business/:businessId/vault-business-contact-relation/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync VaultRE Contact Relations By ID
- Method:
POST - Endpoint:
/business/:businessId/vault-business-contact-relation/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "vaultbusinesscontactexternalidrelation",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"externalBusinessContactId": 1234567,
"agencyId": "00000000-0000-0000-0000-000000000001",
"businessContactId": "00000000-0000-0000-0000-000000000001"
}
]
}
VaultRE Property Relation
Sync All VaultRE Property Relations
- Method:
POST - Endpoint:
/business/:businessId/vault-property-external-id-relation/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync VaultRE Property Relation By ID
- Method:
POST - Endpoint:
/business/:businessId/vault-property-external-id-relation/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "vaultpropertyexternalidrelation",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "VaultRe",
"value": "12345"
},
"id": "00000000-0000-0000-0000-000000000001",
"agencyId": "00000000-0000-0000-0000-000000000001",
"externalLifecycleId": 1,
"externalPropertyId": 1,
"propertyId": "00000000-0000-0000-0000-000000000001"
}
]
}
Team
Sync All Teams
- Method:
POST - Endpoint:
/team/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Team By ID
- Method:
POST - Endpoint:
/team/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "team",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"name": "Team #1",
"salesManagerUserId": "00000000-0000-0000-0000-000000000001",
"agentIds": [
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002"
],
"salesAssociateIds": [
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002"
],
"conciergeUserIds": [
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002"
],
"agencyIds": [
"00000000-0000-0000-0000-000000000001",
"00000000-0000-0000-0000-000000000002"
],
"active": true,
"conciergeEnabled": true,
"createdAt": "2023-01-01T01:23:45.600000Z",
"updatedAt": "2023-01-01T01:23:45.600000Z"
}
]
}
Agent To Contact Relationship
Sync All Agent To Contact Relationship
- Method:
POST - Endpoint:
/agenttocontactgrant/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Agent To Contact Relationship By ID
- Method:
POST - Endpoint:
/agenttocontactgrant/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "agenttocontactgrant",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"contactId": "00000000-0000-0000-0000-000000000001",
"agentId": "00000000-0000-0000-0000-000000000001"
}
]
}
Contact Tag
Sync All Contact Tags
- Method:
POST - Endpoint:
/contacttag/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Contact Tag By ID
- Method:
POST - Endpoint:
/contacttag/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "contacttag",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"contactId": "00000000-0000-0000-0000-000000000001",
"tag": "PropertyOwner"
}
]
}
Listing Portals
Sync All Listing Portals
- Method:
POST - Endpoint:
/listingportals/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if set, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Listing Portals By ID
- Method:
POST - Endpoint:
/listingportals/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "listingportals",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": "00000000-0000-0000-0000-000000000001",
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"listingId": "00000000-0000-0000-0000-000000000001",
"portals": ["ActivePipe"]
}
]
}
Suburb
Represents a suburb, which is a unique combo of postcode and name.
Sync All Suburbs
- Method:
POST - Endpoint:
/suburb/sync-all - Optional query parameters:
- since[Date, format 'YYYY-MM-DD']: if defined, it will only include data created after the informed date.
- Expected Response: 202 - Accepted
Sync Business By ID
- Method:
POST - Endpoint:
/suburb/sync-by-id?id=:id - Expected Response: 202 - Accepted
Expected Webhook Notification
Whether there's a realtime notification happened, or an endpoint was invoked, your webhook subscription will receive a request similar to the one below.
{
"domainComponentName": "suburb",
"state": "Created",
"payload": [
{
"organisationName": "raywhite",
"businessId": null,
"correlationId": {
"source": "NCT",
"value": null
},
"id": "00000000-0000-0000-0000-000000000001",
"name": "Suburb Town",
"country": "AUSTRALIA",
"governingDistrict": "NSW",
"postcode": "2000"
}
]
}