Domain Group · AsyncAPI Specification

Domain Group Webhooks

Version

View Spec View on GitHub Real EstateAustraliaProperty ListingsProperty DataValuationAVMRentalsListing ManagementPropTechPortal MarketplaceAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-07-26'
method: searched
source: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks
spec_type: WebhookCatalog
summary: >-
  Domain runs a first-class webhook system: the developer registers an endpoint
  URL on a portal project, proves control of it through a verification
  challenge, then creates one subscription per (resourceType, ownerType, ownerId)
  combination. Notifications are POSTed as a JSON array, signed with HMAC-SHA1,
  and must be acknowledged with 204 No Content before processing.

management_api:
  package: Domain Webhooks API
  docs: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks
  scope: api_webhooks_write
  operations:
  - method: PUT
    path: '/v1/webhooks/{id}/subscriptions'
    description: Create a subscription to notifications
  - method: GET
    path: '/v1/webhooks/{id}/subscriptions'
    description: List all subscriptions to the specified webhook
  - method: GET
    path: '/v1/subscriptions/{id}'
    description: Retrieve the details of a single subscription
  - method: DELETE
    path: '/v1/subscriptions/{id}'
    description: Delete a single subscription
  id_prefixes:
    webhook: whk_
    subscription: subs_
    verification_code: vfy_

endpoint_verification:
  docs: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks/guides/configuration/
  mechanism: >-
    Domain issues two GET requests to the registered URL - one carrying the
    correct ?verification= code, to which the endpoint must return 204 No
    Content, and one carrying an invalid code, to which it must return 404 Not
    Found. The endpoint must keep responding correctly at all times.
  common_failures:
  - Non-public URL (localhost / RFC1918 address)
  - DNS not yet propagated (wait at least 24 hours after DNS changes)
  - Invalid or self-signed TLS certificate

delivery:
  docs: https://developer.domain.com.au/docs/latest/apis/pkg_webhooks/guides/processing/
  method: POST
  body: JSON array of notification objects (batched - always an array, even for a single event)
  expected_response: 204 No Content
  response_deadline: respond as quickly as possible, ideally within 2 seconds
  processing_rule: >-
    Consumers MUST NOT process notification detail before acknowledging. Domain
    monitors response time and disables webhooks that consistently respond slowly
    or with errors.
  signature:
    header: X-Domain-Signature
    algorithm: HMAC-SHA1
    key: the webhook's Verification Code
    body: hex-encoded lowercase HMAC of the raw notification body
    on_failure: discard the message and return 404

notification_payload:
  fields:
  - {name: resourceType, type: string, description: The subscribed resource type}
  - {name: resourceId, type: string, description: Identifier of the changed resource, usable on the matching GET endpoint}
  - {name: date, type: string, format: date-time, description: When the event occurred (ISO 8601 with offset)}
  - {name: subscriptionId, type: string, description: The subscription that produced this notification}
  - {name: ownerId, type: string, description: Identifier of the owner filter}
  - {name: ownerType, type: string, description: 'One of: group, agency, provider'}
  - {name: notificationId, type: string, format: uuid, description: Unique id for this notification}
  - {name: isDeleted, type: boolean, description: Whether the resource was deleted}

owner_types:
- name: group
  description: >-
    Notifications relevant to more than one owner. The only valid group name is
    "public"; access may need to be requested.
  valid_owner_ids: [public]
- name: agency
  description: Notifications relevant to a particular agency.
  owner_id_source: GET /v1/me/agencies
  auth_requirement: authorization code flow (user context) required
- name: provider
  description: Notifications relevant to any agency linked to the given provider.
  owner_id_source: GET /v1/me/providers

events:
- resource_type: agencies
  resource_id: agencyId
  read_operation: GET /v1/agencies/{id}/
  owner_types: [agency, group, provider]
  description: Notified when agency details are changed.
- resource_type: agents
  resource_id: agentId
  read_operation: GET /v1/agents/{id}/
  owner_types: [agency, group, provider]
  description: Notified when agent details are changed.
- resource_type: enquiries
  resource_id: enquiryId
  read_operation: GET /v1/enquiries/{id}/
  owner_types: [agency, provider]
  description: Enquiries submitted to agents from listings.
- resource_type: listings
  resource_id: listingId
  read_operation: GET /v1/listings/{id}/
  owner_types: [agency, group, provider]
  description: Updates as listings are created, updated or deleted.
- resource_type: projects
  resource_id: projectId
  read_operation: GET /v1/projects/{id}/
  owner_types: [agency, group, provider]
  description: Updates as projects are created, updated or deleted.
- resource_type: listingProcessingReports
  resource_id: reportId
  read_operation: GET /v1/listings/processingReports/{id}/
  owner_types: [agency, provider]
  description: >-
    Status of listings submitted through the CRM endpoints; sent whenever a new
    listing processing report is available.
- resource_type: heartbeat
  resource_id: unique guid
  owner_types: [group]
  owner_ids: [public]
  description: >-
    Liveness signal for the webhook system - at least one heartbeat notification
    every 5 minutes. Useful for troubleshooting.

asyncapi_published: false
asyncapi_note: >-
  Domain publishes no AsyncAPI document. asyncapi/domain-group-webhooks-asyncapi.yml
  in this repo is an API Evangelist generation of this catalog, not a provider
  artifact.