Event surface for the Domain Public API. Domain does not publish an AsyncAPI document; this one is generated by API Evangelist strictly from Domain's published webhook documentation at https://developer.domain.com.au/docs/latest/apis/pkg_webhooks and its Configuration / Creating Subscriptions / Processing Notifications guides. Every channel, message field, header and status code below appears verbatim in those pages - nothing has been invented. Delivery model: Domain POSTs a JSON **array** of notifications to the developer-registered endpoint (batched to reduce load), signed with an HMAC-SHA1 `X-Domain-Signature` header keyed on the webhook's Verification Code. The consumer must acknowledge with `204 No Content` before doing any processing.
View SpecView on GitHubReal EstateAustraliaProperty ListingsProperty DataValuationAVMRentalsListing ManagementPropTechPortal MarketplaceAsyncAPIWebhooksEvents
Channels
agencies
Notified when agency details are changed. Resource id is agencyId, readable via GET /v1/agencies/{id}/.
agents
Notified when agent details are changed. Resource id is agentId, readable via GET /v1/agents/{id}/.
enquiries
Enquiries submitted to agents from listings. Resource id is enquiryId, readable via GET /v1/enquiries/{id}/.
listings
Updates as listings are created, updated or deleted. Resource id is listingId, readable via GET /v1/listings/{id}/.
projects
Updates as projects are created, updated or deleted. Resource id is projectId, readable via GET /v1/projects/{id}/.
listingProcessingReports
Sent whenever a new listing processing report is available for listings submitted through the CRM endpoints. Resource id is reportId, readable via GET /v1/listings/processingReports/{id}/.
heartbeat
Liveness signal for the webhook system, available only to the public group. Expect at least one heartbeat notification every 5 minutes.
Messages
✉
NotificationBatch
Domain notification batch
A batch of one or more notifications POSTed to the consumer endpoint. The posted entity is always an array, even when only a single notification is sent. The consumer must respond 204 No Content, ideally within 2 seconds, and process asynchronously.
Servers
https
consumer
The consumer-hosted HTTPS endpoint registered as a Webhook on a Domain developer-portal project. Must be publicly resolvable with a valid (non self-signed) TLS certificate, and must answer the verification challenge before any notification is delivered.
asyncapi: 3.0.0
info:
title: Domain Group Webhooks
version: v1
description: |
Event surface for the Domain Public API. Domain does not publish an AsyncAPI
document; this one is generated by API Evangelist strictly from Domain's
published webhook documentation at
https://developer.domain.com.au/docs/latest/apis/pkg_webhooks and its
Configuration / Creating Subscriptions / Processing Notifications guides.
Every channel, message field, header and status code below appears verbatim
in those pages - nothing has been invented.
Delivery model: Domain POSTs a JSON **array** of notifications to the
developer-registered endpoint (batched to reduce load), signed with an
HMAC-SHA1 `X-Domain-Signature` header keyed on the webhook's Verification
Code. The consumer must acknowledge with `204 No Content` before doing any
processing.
contact:
name: Domain API Support
email: api@domain.com.au
url: https://developer.domain.com.au/docs/latest/support
termsOfService: https://www.domain.com.au/group/api-terms-and-conditions/
externalDocs:
description: Domain Webhooks documentation
url: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks
defaultContentType: application/json
servers:
consumer:
host: example.com
protocol: https
pathname: /domain-webhook/
description: >-
The consumer-hosted HTTPS endpoint registered as a Webhook on a Domain
developer-portal project. Must be publicly resolvable with a valid
(non self-signed) TLS certificate, and must answer the verification
challenge before any notification is delivered.
channels:
agencies:
address: agencies
title: Agency changes
description: Notified when agency details are changed. Resource id is agencyId, readable via GET /v1/agencies/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
agents:
address: agents
title: Agent changes
description: Notified when agent details are changed. Resource id is agentId, readable via GET /v1/agents/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
enquiries:
address: enquiries
title: Enquiries
description: Enquiries submitted to agents from listings. Resource id is enquiryId, readable via GET /v1/enquiries/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
listings:
address: listings
title: Listing changes
description: Updates as listings are created, updated or deleted. Resource id is listingId, readable via GET /v1/listings/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
projects:
address: projects
title: Project changes
description: Updates as projects are created, updated or deleted. Resource id is projectId, readable via GET /v1/projects/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
listingProcessingReports:
address: listingProcessingReports
title: Listing processing reports
description: >-
Sent whenever a new listing processing report is available for listings
submitted through the CRM endpoints. Resource id is reportId, readable via
GET /v1/listings/processingReports/{id}/.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
heartbeat:
address: heartbeat
title: Heartbeat
description: >-
Liveness signal for the webhook system, available only to the public group.
Expect at least one heartbeat notification every 5 minutes.
messages:
notificationBatch:
$ref: '#/components/messages/NotificationBatch'
operations:
receiveAgencies:
action: receive
channel: {$ref: '#/channels/agencies'}
summary: Receive agency change notifications.
receiveAgents:
action: receive
channel: {$ref: '#/channels/agents'}
summary: Receive agent change notifications.
receiveEnquiries:
action: receive
channel: {$ref: '#/channels/enquiries'}
summary: Receive enquiry notifications.
receiveListings:
action: receive
channel: {$ref: '#/channels/listings'}
summary: Receive listing create/update/delete notifications.
receiveProjects:
action: receive
channel: {$ref: '#/channels/projects'}
summary: Receive project create/update/delete notifications.
receiveListingProcessingReports:
action: receive
channel: {$ref: '#/channels/listingProcessingReports'}
summary: Receive listing processing report notifications.
receiveHeartbeat:
action: receive
channel: {$ref: '#/channels/heartbeat'}
summary: Receive the webhook-system heartbeat.
components:
messages:
NotificationBatch:
name: notificationBatch
title: Domain notification batch
summary: >-
A batch of one or more notifications POSTed to the consumer endpoint. The
posted entity is always an array, even when only a single notification is
sent. The consumer must respond 204 No Content, ideally within 2 seconds,
and process asynchronously.
contentType: application/json
headers:
$ref: '#/components/schemas/NotificationHeaders'
payload:
$ref: '#/components/schemas/NotificationBatchPayload'
examples:
- name: enquiryNotification
summary: Example enquiries webhook notification (verbatim from the Processing Notifications guide)
headers:
X-Domain-Signature: 0a0430a0a9ace889f9
payload:
- resourceType: enquiries
resourceId: 2014135780-uJfqDDxas-KqBaKC9vypZw==
date: '2018-01-31T14:59:27.9479833+11:00'
subscriptionId: 5d76dae5edaf4c47beb66aad4ec5374b
ownerId: '12345'
ownerType: agency
notificationId: 58f1cde3-ad7c-420e-8686-b94db841a930
isDeleted: false
schemas:
NotificationHeaders:
type: object
properties:
X-Domain-Signature:
type: string
description: >-
Lowercase hex HMAC-SHA1 of the raw notification body, keyed on the
webhook's Verification Code. Consumers should recompute and compare;
on mismatch, discard the message and return 404.
required: [X-Domain-Signature]
NotificationBatchPayload:
type: array
description: Batch of notifications.
items:
$ref: '#/components/schemas/Notification'
Notification:
type: object
properties:
resourceType:
type: string
description: The subscribed resource type.
enum:
- agencies
- agents
- enquiries
- listings
- projects
- listingProcessingReports
- heartbeat
resourceId:
type: string
description: >-
Identifier of the changed resource, usable on the resource type's
matching GET endpoint. For heartbeat this is a unique guid.
date:
type: string
format: date-time
description: When the event occurred.
subscriptionId:
type: string
description: Identifier of the subscription that produced this notification.
ownerId:
type: string
description: >-
Owner filter identifier - "public" for the group owner type, an
agency id, or a provider id.
ownerType:
type: string
description: The owner type the subscription filters on.
enum: [group, agency, provider]
notificationId:
type: string
format: uuid
description: Unique identifier for this notification.
isDeleted:
type: boolean
description: Whether the referenced resource was deleted.
required:
- resourceType
- resourceId
- date
- subscriptionId
- ownerId
- ownerType
- notificationId
x-apievangelist:
method: generated
generated: '2026-07-26'
source: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks
catalog: asyncapi/domain-group-webhooks.yml
note: >-
Provider-published AsyncAPI does not exist. This document is a faithful
AsyncAPI 3.0.0 rendering of Domain's published webhook catalog and
notification format; the channel set, payload fields, signature header and
the single example are taken verbatim from Domain's documentation.
subscription_management: >-
Channels here correspond to Domain "resourceType" values. Subscriptions are
created out-of-band over REST with
PUT /v1/webhooks/{id}/subscriptions carrying {resourceType, ownerType, ownerId}.