Download OpenAPI specification:
This document describes how to create and retrieve Good To Book guest incident reports through API calls.
The API is accessed over HTTP and is RESTful. It has predictable resource URLs and it returns HTTP response codes to indicate errors. It accepts and returns JSON in the HTTP body.
The API is intended for use by property management software providers that are integrating Good To Book guest incident reports into their booking system. To get started, you must register your application by contacting api-support@goodtobook.com.
Once registered, you'll be provided with a client ID and secret, allowing you to generate credentials on behalf of Good To Book customers by making requests to the OAuth server.
The API uses OAuth2 flows to authenticate requests from your application using temporary credentials.
To access the API an access token must be retrieved from the OAuth server using one of two OAuth2 flows. The flow you use will be determined by the agreement made with Good To Book when you register your application.
The access token must be provided in the head of every request made to the API. When the access token expires, a new one must be requested to continue using the API.
Headers should be provided in the following format:
| Header name | Format | Flows |
|---|---|---|
| Authorization | Bearer <token> |
All flows |
| Account-ID | <id>:<external-id> |
Client Credentials only |
The table below lists scopes available to authenticated users of the API. When requesing access tokens, the application must specify which scopes it will be using when accessing the API.
authorizationCode /v1/oauth/authorize/v1/oauth/tokenincident:read - View incident reports
incident:write - Create incident reports
notification:subscribe - Manage notification subscriptions
notification:consume - View notifications
clientCredentials /v1/oauth/tokenincident:read - View incident reports
incident:write - Create incident reports
account:read - View external user accounts
account:write - Create external user accounts
If an API client attepts to use a scope that is not compatible with its security scheme, or one that has not been granted, requests made to endpoints requiring the scope will return a 403 Forbidden error response.
Times and dates are formatted according to ISO 8601.
When submitting timestamp properties to the API, you must indicate the timezone that the timestamp relates to. The timezone should be specified by appending a timezone designator to the timestamp. This can be one of:
+10:00 for Australia/BrisbaneZ for UTCTimestamps returned by the API are always in UTC.
Country names are formatted as two-character codes according to ISO 3166-1 alpha-2. For example AU for Australia or NZ for New Zealand.
Some endpoints allow you to refine the response data by providing filter expressions as query parameters.
A filter consists of a field name supplied as a query parameter key, and a filter expression with an operator and values as the parameter value. Filterable fields are listed in the query parameters for each endpoint, along with the supported operators for each field.
| Operator | Expression syntax | Behaviour |
|---|---|---|
| Equal | eq:<value> |
Exact match |
| Like | like:<value> |
Partial string match |
| Range | range:<min>,<max> |
Match between two values |
When multiple filters are specified in a single request, they will be combined with a logical AND operation.
API endpoints that return many resources may be paginated to restrict the size of the response. The API uses cursor pagination, which means that each result page provides a key to use to get the next page.
There is no way to jump to a specific page without first fetching every previous page. Currently there is no way to navigate to a previous page.
Paginated endpoints will return a next property in the response body. This is the cursor for the next page of resources. If the cursor is not null, there are more pages that can be fetched. To get the next page, make the same request again, including the cursor as the value for the next query parameter.
By default, paginated responses will include a maximum of 20 resources. You can set a different page size in the limit query parameter.
The maximum page size may change at any time, and setting an arbitrarily large
limitwill not guarantee that you'll recieve all resources in a single page.
Every response from the API uses the same basic shape. The HTTP response code provides the most basic information on the outcome of the request. The response body contains the properties status and message, which provide more specific details in computer- and human-readable formats respectively.
An error is indicated by a HTTP response status of 400 or above. The response body will contain an error property, which may provide more details on what went wrong.
Each type of error has a unique status value. Often this will correspond to the message of a standard HTTP response code, however some errors send a more specific status:
| Status | Reason |
|---|---|
subscription_required |
The account doesn't have an active Good To Book subscription |
incomplete_account |
The account is missing required properties, such as business name and address |
When submitting an incident report to the API you must provide details of the people who were involved. You can choose to include details people staying or travelling with together, even if they weren't directly involved in any offences. This can help other users of the API with identifying rogue guests in the future.
| Person type | Description |
|---|---|
offender |
A person directly involved in causing an offence during the incident |
associate |
A person travelling or staying with others involved in the incident |
A person that is marked as
offenderwill be identified as a rogue guest to users of the API, who will likely be advised against accepting future bookings from that person. When submitting incident reports, users of the API should ensure the data they provide is accurate.
The following endpoints must be implemented in any application before users will be able to access resources provided by the API.
The Authorizaton Code flow involves a two-step process, where a user is first authorised, creating a temporary auth code, then the code is then exchanged for an access token that can be used to make requests to the API. The access token is short-lived and it must be refreshed when it expires.
Alternatively, if using the Client Credentials flow, an access token may be retrieved directly without first authorising a specific user.
For more details on the flows see Authentication.
This endpoint allows your application to fetch temporary credentials in the form of an access token using different OAuth2 grant types. The way the grant is described and OAuth client ID and secret (credentials) are passed depends on the grant type:
| Grant type | Body type | Credentials |
|---|---|---|
| Authorization Code | application/json |
Body |
| Refresh Token | application/json |
Body |
| Client Credentials | application/x-www-form-urlencoded |
Header |
Refer to request samples for the format of each grant type's body data.
This endpoint requires that you send your application's client secret, which should never be revealed publicly. If you need to do authentication with the API from public frontend code (including native mobile apps) you should use the OAuth2 PKCE flow instead.
| Authorization | string Example: Basic dFNHb1BsZj1BqWWRQc...FNjN3h3WDk1VUNOCg== Provide client credentials as base64-encoded |
| grant_type required | string Enum: "authorization_code" "refresh_token" The grant type being used |
| code | string The code returned from the authorize endpoint. Required for the |
| refresh_token | string The refresh token from the expiring auth token. Required for the |
| client_id required | string Your application's client ID |
| client_secret required | string Your application's client secret. Keep this safe |
{- "grant_type": "authorization_code",
- "code": "r0tp5Kfz2M3tHUcvyszShXHGuYyC34izJQBUBV3c",
- "client_id": "tSGoPlf1Fs6JIhUAwYO45KTk9vxmPSAGD5WEemWv",
- "client_secret": "C6O5EIQzvf8djefeVsmb3NsPjYdPpSc7xwX95UCN"
}{- "access_token": "TNaqe9fl4bWsUtQ6kn4YGl6NQHSZ6fZ3HE6fpj3B",
- "expires_in": 3600,
- "token_type": "Bearer",
- "scope": "incident:read incident:write",
- "refresh_token": "g91NOvJ7gwTHS0v9pd3YvJ9rJTv8aazKhAHD4ce5"
}These endpoints are provided for applications that are using the OAuth2 Client Credentials flow to authenticate their own users with the API directly. They allow the registration of external users in the API to provide core functionality like incident reports and Guest Check.
Web push notification subscriptions are not available to external user accounts. Email incident alerts for external accounts are provisioned by the notification service directly from user account data.
For applications using the Authorization Code flow, these endpoints do not need to be implemented.
Register an external user account with the API.
| external_id required | string The ID of the account in the integrating platform |
| name required | string The name of the account user |
| email required | string <email> The email address of the account user. A welcome email will be sent to this email address when the account is created |
required | object Details of the location associated with the account. This location will be used when submitting incident reports |
{- "external_id": "string",
- "name": "string",
- "email": "user@example.com",
- "location": {
- "name": "string",
- "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}
}
}{- "status": "created",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "external_id": "string",
- "name": "string",
- "email": "user@example.com",
- "location": {
- "name": "string",
- "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}
}
}
}Get an external user account by its account ID.
| account_id required | string <uuid> |
{- "status": "found",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "external_id": "string",
- "name": "string",
- "email": "user@example.com",
- "location": {
- "name": "string",
- "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}
}
}
}Update an external user account by its account ID.
| account_id required | string <uuid> |
| external_id required | string The ID of the account in the integrating platform |
| name required | string The name of the account user |
| email required | string <email> The email address of the account user. A welcome email will be sent to this email address when the account is created |
required | object Details of the location associated with the account. This location will be used when submitting incident reports |
{- "external_id": "string",
- "name": "string",
- "email": "user@example.com",
- "location": {
- "name": "string",
- "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}
}
}{- "status": "string",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "external_id": "string",
- "name": "string",
- "email": "user@example.com",
- "location": {
- "name": "string",
- "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}
}
}
}Incident reports are the main resource type provided by the API. Creating an incident report will flag the offenders listed in the report as rogue guests. Guest Check allows Good To Book customers to look up a guest's details to see any matching incident reports, so they can make an informed decision about accepting a guest's booking.
Once created, incident reports are read-only and are visible to Good To Book customers for up to five years. In some cases they may be visible to law enforcement agencies. For more details, see the Good To Book terms of use.
Enter guest details into the Good To Book incident database.
Although most fields are optional, integrators should provide the ability to complete every field when submitting an incident report, and encourage end users to provide as much detail as possible.
| datetime required | string <date-time> The date and time the incident took place |
| description | string A description of the incident
|
object Details of the visit during which the incident occurred. This object is optional. | |
required | Array of objects non-empty unique A list of people related to the incident. At least one person must be provided. This is a required field. |
Array of objects unique A list of vehicles related to the incident. This field is optional. | |
| offences | Array of strings unique Items Enum: "illicit_substance" "theft" "threatening_behaviour" "violence" "excessive_mess" "outstanding_fees" "police_callout" "police_incident_filed" "malicious_chargeback" "credit_card_fraud" "fraud" "agreed_rules_broken" "wilful_damage" A list of offences committed by the offenders. This field is optional. |
{- "datetime": "2019-08-24T14:15:22Z",
- "description": "The room was left dirty and damaged",
- "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
]
}{- "status": "created",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "datetime": "2019-08-24T14:15:22Z",
- "location": {
- "suburb": "Noosa Heads",
- "state": "QLD",
- "country": "AU"
}, - "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
], - "images": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "identification",
- "format": "image/jpeg"
}
]
}
}v1.6.0: This endpoint is now deprecated. Use Guest Check instead.
Get a paginated list of all incident reports, or a subset that match some filter criteria.
| limit | integer The maximum number of items to get |
| next | string The key for the page of items to get. Provided in the |
| datetime | string <filter> An expression to filter the results by incident time |
| offender | string <filter> An expression to filter the results by offender |
{- "status": "found_some",
- "message": "string",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "datetime": "2019-08-24T14:15:22Z",
- "location": {
- "suburb": "Noosa Heads",
- "state": "QLD",
- "country": "AU"
}, - "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
], - "images": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "identification",
- "format": "image/jpeg"
}
]
}
], - "next": "string"
}Get a single incident report by its report ID.
| incident_id required | string <uuid> |
{- "status": "string",
- "message": "found",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "datetime": "2019-08-24T14:15:22Z",
- "location": {
- "suburb": "Noosa Heads",
- "state": "QLD",
- "country": "AU"
}, - "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
], - "images": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "identification",
- "format": "image/jpeg"
}
]
}
}Good To Book's Guest Check allows guest data to be queried against the incident reports database, providing details on previous offences if rogue guest matches are found.
Each matched incident report returned by Guest Check includes a match strength indicator. This is a number between 0 and 100 which represents how well the incident report matches the data provided in the request. This may be presented as a percentage, but it is not a statistical probability or confidence interval. Incident reports in Guest Check results are ordered by decreasing match strength, and those with match strength less than 50 will not be included.
Look up known rogue guests in the Good To Book incident database. This endpoint accepts queries in the form of a single string value, making it suitable for input from human users.
| query required | string The values to search for in the incident database |
{- "status": "found_some",
- "message": "found_some",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "datetime": "2019-08-24T14:15:22Z",
- "location": {
- "suburb": "Noosa Heads",
- "state": "QLD",
- "country": "AU"
}, - "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
], - "images": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "identification",
- "format": "image/jpeg"
}
], - "match_strength": 85
}
], - "matches": [
- {
- "parent": "42e2bc1b-6741-4e2e-b138-97b4a342c999",
- "path": "people.0.given_name",
- "value": "string"
}
]
}Compare the details of guests on a new booking with known rogue guests in the Good To Book incident database. This endpoint expects query data in a structured form that is suited to automated machine-to-machine querying.
Array of objects non-empty unique A list of people on the booking | |
Array of objects unique A list of vehicles related to the booking |
{- "people": [
- {
- "given_name": "James",
- "family_name": "Hetfield",
- "gender": "male",
- "birth_date": "2019-08-24",
- "identification": {
- "type": "passport",
- "issuer": "string",
- "number": "string"
}, - "address": {
- "street": "string",
- "suburb": "string",
- "state": "string",
- "postcode": "string",
- "country": "string"
}, - "phone_number": "string"
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
]
}{- "status": "found_some",
- "message": "found_some",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "datetime": "2019-08-24T14:15:22Z",
- "location": {
- "suburb": "Noosa Heads",
- "state": "QLD",
- "country": "AU"
}, - "visit": {
- "arrival": "2019-08-24T14:15:22Z",
- "departure": "2019-08-24T14:15:22Z"
}, - "people": [
- {
- "type": "offender",
- "given_name": "James",
- "family_name": "Hetfield",
- "aliases": [
- "Jimmy",
- "The Dude"
], - "gender": "male",
- "birth_date": "1995-02-03",
- "identification": {
- "type": "driver_license",
- "issuer": "QLD Government",
- "number": "772251232"
}, - "address": {
- "street": "123 Main Street",
- "suburb": "Brisbane",
- "state": "QLD",
- "postcode": "6000",
- "country": "AU"
}, - "phone_number": "+61477228938",
- "flags": [
- "wanted_by_police"
]
}
], - "vehicles": [
- {
- "registration_number": "123ABC",
- "registration_state": "QLD",
- "model": "string",
- "colour": "red"
}
], - "offences": [
- "illicit_substance"
], - "images": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "identification",
- "format": "image/jpeg"
}
], - "match_strength": 85
}
], - "matches": [
- {
- "parent": "42e2bc1b-6741-4e2e-b138-97b4a342c999",
- "path": "people.0.given_name",
- "value": "string"
}
]
}Notification subscriptions control how a user receives push notification messages about events that happen in the API. The user subscribes by registering a device or web browser to receive one or more notification types.
| Notification type | Trigger |
|---|---|
nearby_incident_alerts |
When a new incident report is created in the user's area of interest. By default, this is the area covered by their account address postcode. |
Each notification type can be enabled or disabled individually. All notification types for an individual subscription can also be disabled globally.
Create a new notification subscription for the authenticated account.
| platform required | string Value: "web" The platform type for this subscription |
| endpoint required | string <uri> The push notification endpoint URL |
required | object |
required | object Notification preferences for this subscription. Defines which types of notifications the user wants to receive. |
{- "platform": "web",
- "keys": {
- "p256dh": "BEl62iUYgUivxIkv69yViA3ahiuStPK1XlNEtB2Nz_M",
- "auth": "xW8c5_9-oU7-sT2"
}, - "preferences": {
- "enabled": true,
- "nearby_incident_alerts": {
- "enabled": true,
- "location_type": "postcode"
}
}
}{- "status": "created",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "keys": {
- "p256dh": "string",
- "auth": "string"
}, - "email": "user@example.com",
- "platform": "email",
- "active": true,
- "preferences": {
- "enabled": true,
- "nearby_incident_alerts": {
- "enabled": true,
- "location_type": "postcode",
- "postcode": "string"
}
}, - "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
}Retrieve all notification subscriptions for the authenticated account.
{- "status": "found_some",
- "message": "string",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "keys": {
- "p256dh": "string",
- "auth": "string"
}, - "email": "user@example.com",
- "platform": "email",
- "active": true,
- "preferences": {
- "enabled": true,
- "nearby_incident_alerts": {
- "enabled": true,
- "location_type": "postcode",
- "postcode": "string"
}
}, - "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
]
}Update notification preferences for a subscription of the authenticated account.
| subscription_id required | string <uuid> The ID of the subscription to update |
| active | boolean Activate or deactivate this subscription. |
object Notification preferences to update. Only properties explicitly provided in the request will be updated. |
{- "active": true,
- "preferences": {
- "enabled": true,
- "nearby_incident_alerts": {
- "enabled": true,
- "location_type": "radius",
- "latitude": -37.8136,
- "longitude": 144.9631,
- "radius": 10
}
}
}{- "status": "string",
- "message": "updated",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "keys": {
- "p256dh": "string",
- "auth": "string"
}, - "email": "user@example.com",
- "platform": "email",
- "active": true,
- "preferences": {
- "enabled": true,
- "nearby_incident_alerts": {
- "enabled": true,
- "location_type": "postcode",
- "postcode": "string"
}
}, - "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
}Delete a notification subscription from the authenticated account.
| subscription_id required | string <uuid> The ID of the subscription to delete |
{- "status": "not_found",
- "message": "The requested resource could not be found",
- "error": [
- { }
]
}Retrieve the VAPID public key required for push notification subscriptions.
Authentication is not required for this endpoint.
{- "status": "found",
- "message": "string",
- "data": {
- "public_key": "BOSh7V1-uiE8YlPQfyYlJhwqgPF8YgTlZPuwOJGpHOQ3mfqJ"
}
}Notification messages contain details of events that happen in the API, and are delivered via a notification subscription. A user can read their notification history, and mark notifications as read.
Retrieve all notifications for the authenticated account (historical, missed, dismissed).
| limit | integer The maximum number of items to get |
| next | string The key for the page of items to get. Provided in the |
| status | string Example: status=in:sent,delivered,failed An expression to filter notifications by status. |
| type | string Example: type=eq:nearby_incident_alerts An expression to filter notifications by type. |
{- "status": "found_some",
- "message": "string",
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "subscription_id": "aa11a4c2-a467-43db-b413-c4ab0f5cf627",
- "title": "Nearby Incident Alert",
- "message": "An incident has been reported in your area",
- "type": "nearby_incident_alerts",
- "status": "sent",
- "data": { },
- "sent": "2019-08-24T14:15:22Z",
- "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
], - "next": "string"
}Retrieve a specific notification by its ID for the authenticated account.
| notification_id required | string <uuid> The ID of the notification to retrieve |
{- "status": "found",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "subscription_id": "aa11a4c2-a467-43db-b413-c4ab0f5cf627",
- "title": "Nearby Incident Alert",
- "message": "An incident has been reported in your area",
- "type": "nearby_incident_alerts",
- "status": "sent",
- "data": { },
- "sent": "2019-08-24T14:15:22Z",
- "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
}Update the status of a notification to mark as read or dismissed.
| notification_id required | string <uuid> The ID of the notification to update |
| status required | string Enum: "read" "unread" Update the status of the notification |
{- "status": "read"
}{- "status": "updated",
- "message": "string",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "subscription_id": "aa11a4c2-a467-43db-b413-c4ab0f5cf627",
- "title": "Nearby Incident Alert",
- "message": "An incident has been reported in your area",
- "type": "nearby_incident_alerts",
- "status": "sent",
- "data": { },
- "sent": "2019-08-24T14:15:22Z",
- "created": "2019-08-24T14:15:22Z",
- "updated": "2019-08-24T14:15:22Z"
}
}1 June 2026
email notification type for use with external user accounts.24 May 2026
14 April 2026
v1/guest-check/search endpoint.6 April 2026
31 March 2026
09 March 2026
radius: Notifications delivered when an incident is reported within a radius around a place or coordinates.all: Notifications delivered when an incident is reported regardless of location.registration_number schema to allow only letters and numbers (no spaces).model field, for specifying the make and model of a vehicle.6 February 2026
Made several improvements to field matching logic on /v1/guest-check endpoints:
phone_number field.28 January 2026
notification-subscription endpoint, which was preventing multiple location-based preferences being set simultaneously (e.g. postcode and radius).17 December 2025
Two new groups of endpoints /v1/notification and /v1/notification/subscription provide capabilities for viewing/querying and managing notifications, respectively. Users can enable individual notification categories to receive push notification in their web browser:
nearby_incident_alerts: Notifications delivered when an incident is reported near the user's location. Users can select the desired alert location by postcode or radius around a place or coordinates.The ability to list incident reports via GET /v1/incident has been removed and the GET method for this path has been deprecated. Requests made to this endpoint will return no results, as if non-matching filters were specified. If the previously deprecataed offender parameter is passed in the URL query string, results will be returned as if the /v1/guest-check/search endpoint was used instead.
9 October 2025
25 September 2025
Guest Check results now include a match_strength property to indicate how well each result matches the request query. The more unique matching properties found on an incident report, the higher the match strength, up to a maximum of 100. Incident reports in Guest Check results are ordered by decreasing match strength, and those with match strength less than 50 will not be included.
guest-check/query endpoint.Content-Type header is set.30 July 2025
12 May 2025
13 January 2025
11 December 2024
guest-check endpointsguest-check endpoints26 November 2024
27 September 2024
28 May 2024
20 May 2024
Dedicated endpoints /v1/guest-check/search and /v1/guest-check/query for guest screening provide improved accuracy by matching potential rogue guests on multiple incident fields, with results sorted automatically.
offender query parameter on the incident listing endpoint16 November 2023
20 September 2023
25 May 2023
24 April 2023
22 February 2023
22 September 2022
27 July 2022
The first public release of the Guest Check API. No changes since v0.3.3