Skip to main content

Watergate Cloud API (2025.1.0)

Incidents

Retrieve all accessible incidents

Authorizations:
BearerAuth
query Parameters
type
string
Enum: "high_volume_alert" "long_flow_alert" "device_handle_moved" "battery_too_low_to_move_handle" "radio_disconnection" "cloud_disconnection" "pressure_test_failed" "pressure_test_skipped" "pressure_test_aborted" "health_check_failed" "low_battery_level" "legionella_risk" "legionella_high_risk" "low_water_temperature" "water_presence_detected" "low_temperature" "high_temperature" "high_humidity" "advanced_valve_misalignment" "backup_battery_usage"
open
boolean
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Get an incident

Authorizations:
BearerAuth
path Parameters
id
required
string

Incident UUID

Responses

Response samples

Content type
application/json
{
  • "detected_at": "2021-06-21T18:28:00.717720Z",
  • "id": "3a9c7416-ff53-48d1-b667-99e822eec29b",
  • "open": false,
  • "possible_actions": [
    ],
  • "severity": "high",
  • "signal_id": "3a9c7416-ff53-48d1-b667-99e822ee0010",
  • "sonic_id": "3a9c7416-ff53-48d1-b667-99e822ee0011",
  • "state": "resolved",
  • "type": "long_flow_alert"
}

Transition an incident to a different state

Authorizations:
BearerAuth
path Parameters
incident_id
required
string

Incident UUID

Request Body schema: application/json
optional

Body

action
string

An action transitioning the incident to another state e.g. resolved.

Responses

Request samples

Content type
application/json
{
  • "action": "string"
}

Response samples

Content type
application/json
{
  • "detected_at": "2021-06-21T18:28:00.717720Z",
  • "id": "3a9c7416-ff53-48d1-b667-99e822eec29b",
  • "open": false,
  • "possible_actions": [
    ],
  • "severity": "high",
  • "signal_id": "3a9c7416-ff53-48d1-b667-99e822ee0010",
  • "sonic_id": "3a9c7416-ff53-48d1-b667-99e822ee0011",
  • "state": "resolved",
  • "type": "long_flow_alert"
}

Retrieve all incidents for property

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

query Parameters
type
string
Enum: "high_volume_alert" "long_flow_alert" "device_handle_moved" "battery_too_low_to_move_handle" "radio_disconnection" "cloud_disconnection" "pressure_test_failed" "pressure_test_skipped" "pressure_test_aborted" "health_check_failed" "low_battery_level" "legionella_risk" "legionella_high_risk" "low_water_temperature" "water_presence_detected" "low_temperature" "high_temperature" "high_humidity" "advanced_valve_misalignment" "backup_battery_usage"
open
boolean
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Paginated list of incidents

Returns paginated incidents for a selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "incidents": [
    ]
}

Returns incident details

Returns details for a single incident in the selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
incidentId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "incident-REDACTED",
  • "status": "active"
}

Used for both resolving and snoozing incidents

Executes an action (e.g. resolve/snooze) on a selected incident.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
incidentId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "action": "resolve"
}

Response samples

Content type
application/json
{
  • "status": "resolved"
}

Properties

Retrieve all accessible properties

Authorizations:
BearerAuth
query Parameters
name
string

Property name

membership_role
string

Membership role of requesting user, one of: owner, user, guest.

search
string

Search parameter to filter properties

page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Get property

Authorizations:
BearerAuth
path Parameters
id
required
string

Property UUID

Responses

Response samples

Content type
application/json
{
  • "active": true,
  • "address": "Kensington Gardens",
  • "city": "London",
  • "country": "United Kingdom",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-abcd-25e7-93c5-6e6a71c123d2",
  • "lat": 51.5158392,
  • "lng": -0.1114453,
  • "name": "Kensington Gardens",
  • "postcode": "W8 4PX",
  • "uprn": ""
}

Modify property

Authorizations:
BearerAuth
path Parameters
id
required
string

Property UUID

Request Body schema: application/json
optional

Body

active
boolean

Whether the property is active or not

address
string

Property address

city
string

Property city

country
string

Property country

created_at
string

Date when the property has been created.

lat
number

Property latitude

lng
number

Property longitude

name
string

Property name

postcode
string

Property postcode

uprn
string

Property uprn

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "address": "Kensington Gardens",
  • "city": "London",
  • "country": "United Kingdom",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "lat": 51.5158392,
  • "lng": -0.1114453,
  • "name": "Kensington Gardens",
  • "postcode": "W8 4PX",
  • "uprn": ""
}

Response samples

Content type
application/json
{
  • "active": true,
  • "address": "Kensington Gardens",
  • "city": "London",
  • "country": "United Kingdom",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-abcd-25e7-93c5-6e6a71c123d2",
  • "lat": 51.5158392,
  • "lng": -0.1114453,
  • "name": "Kensington Gardens",
  • "postcode": "W8 4PX",
  • "uprn": ""
}

Modify property

Authorizations:
BearerAuth
path Parameters
id
required
string

Property UUID

Request Body schema: application/json
optional

Body

active
boolean

Whether the property is active or not

address
string

Property address

city
string

Property city

country
string

Property country

created_at
string

Date when the property has been created.

lat
number

Property latitude

lng
number

Property longitude

name
string

Property name

postcode
string

Property postcode

uprn
string

Property uprn

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "address": "Kensington Gardens",
  • "city": "London",
  • "country": "United Kingdom",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "lat": 51.5158392,
  • "lng": -0.1114453,
  • "name": "Kensington Gardens",
  • "postcode": "W8 4PX",
  • "uprn": ""
}

Response samples

Content type
application/json
{
  • "active": true,
  • "address": "Kensington Gardens",
  • "city": "London",
  • "country": "United Kingdom",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-abcd-25e7-93c5-6e6a71c123d2",
  • "lat": 51.5158392,
  • "lng": -0.1114453,
  • "name": "Kensington Gardens",
  • "postcode": "W8 4PX",
  • "uprn": ""
}

Retrieve all incidents for property

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

query Parameters
type
string
Enum: "high_volume_alert" "long_flow_alert" "device_handle_moved" "battery_too_low_to_move_handle" "radio_disconnection" "cloud_disconnection" "pressure_test_failed" "pressure_test_skipped" "pressure_test_aborted" "health_check_failed" "low_battery_level" "legionella_risk" "legionella_high_risk" "low_water_temperature" "water_presence_detected" "low_temperature" "high_temperature" "high_humidity" "advanced_valve_misalignment" "backup_battery_usage"
open
boolean
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Get property notification settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Responses

Response samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Modify property notification settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Request Body schema: application/json
optional

Body

battery_too_low_to_move_handle
boolean

Handle couldn't be moved due to low battery notification

cloud_disconnection
boolean

Cloud disconnection notification (e.g. internet failure)

device_handle_moved
boolean

Handle moved notification (e.g. manually closing the valve)

health_check_failed
boolean

Health check failed notification

high_humidity
boolean

High humidity notification

high_humidity_threshold
boolean

High humidity notification threshold

high_temperature
boolean

High temperature notification

high_temperature_threshold
boolean

High temperature notification threshold

high_volume_threshold_litres
integer

Send a notification when we identify water is constantly running and the volume is more than X liters.

legionella_risk
boolean

Legionella stagnation and temperature checks will made every day if true

long_flow_notification_delay_mins
integer

Send a notification when we identify water is constantly running for over than X mins.

low_battery_level
boolean

Low battery notification

low_temperature
boolean

Low temperature notification

low_temperature_threshold
boolean

Low temperature notification threshold

low_water_temperature
boolean

Low water temperature notification

pressure_test_failed
boolean

Pressure test failed notification

pressure_test_skipped
boolean

Pressure test skipped notification

radio_disconnection
boolean

Radio disconnection notification (e.g. Sonic cannot connect to Bridge)

water_presence_detected
boolean

Water presence detected notification

Responses

Request samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Response samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Get property settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Responses

Response samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Modify property settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Request Body schema: application/json
optional

Body

auto_shut_off
boolean

Automatic shut off

pressure_tests_enabled
boolean

Enable or disable the pressure test

pressure_tests_schedule
string

The time of day when the pressure test runs, formatted as HH:MM:SS in a 24-hour clock. in 24h clock.

timezone
string

The time zone of the property.

webhook_enabled
boolean

Enable or disable the webhook

webhook_url
string

Webhook url

Responses

Request samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Response samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Retrieve all Signals for property

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

query Parameters
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Lists customer properties

Returns the properties available to the authenticated customer.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "properties": [
    ]
}

Creates a customer property

Creates a new property for the authenticated customer.

Authorizations:
BearerAuth
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "name": "Home"
}

Response samples

Content type
application/json
{
  • "id": "property-REDACTED",
  • "name": "Home"
}

Returns property details

Returns details for a selected customer property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "property-REDACTED",
  • "name": "Home"
}

Updates property details

Updates metadata/settings for a selected customer property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "name": "Updated home"
}

Response samples

Content type
application/json
{
  • "id": "property-REDACTED",
  • "name": "Home"
}

Deletes a property

Deletes a selected customer property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "deleted": true
}

Property settings

Get property notification settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Responses

Response samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Modify property notification settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Request Body schema: application/json
optional

Body

battery_too_low_to_move_handle
boolean

Handle couldn't be moved due to low battery notification

cloud_disconnection
boolean

Cloud disconnection notification (e.g. internet failure)

device_handle_moved
boolean

Handle moved notification (e.g. manually closing the valve)

health_check_failed
boolean

Health check failed notification

high_humidity
boolean

High humidity notification

high_humidity_threshold
boolean

High humidity notification threshold

high_temperature
boolean

High temperature notification

high_temperature_threshold
boolean

High temperature notification threshold

high_volume_threshold_litres
integer

Send a notification when we identify water is constantly running and the volume is more than X liters.

legionella_risk
boolean

Legionella stagnation and temperature checks will made every day if true

long_flow_notification_delay_mins
integer

Send a notification when we identify water is constantly running for over than X mins.

low_battery_level
boolean

Low battery notification

low_temperature
boolean

Low temperature notification

low_temperature_threshold
boolean

Low temperature notification threshold

low_water_temperature
boolean

Low water temperature notification

pressure_test_failed
boolean

Pressure test failed notification

pressure_test_skipped
boolean

Pressure test skipped notification

radio_disconnection
boolean

Radio disconnection notification (e.g. Sonic cannot connect to Bridge)

water_presence_detected
boolean

Water presence detected notification

Responses

Request samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Response samples

Content type
application/json
{
  • "battery_too_low_to_move_handle": true,
  • "cloud_disconnection": true,
  • "device_handle_moved": true,
  • "health_check_failed": true,
  • "high_humidity": true,
  • "high_humidity_threshold": true,
  • "high_temperature": true,
  • "high_temperature_threshold": true,
  • "high_volume_threshold_litres": 200,
  • "legionella_risk": true,
  • "long_flow_notification_delay_mins": 60,
  • "low_battery_level": true,
  • "low_temperature": true,
  • "low_temperature_threshold": true,
  • "low_water_temperature": true,
  • "pressure_test_failed": true,
  • "pressure_test_skipped": true,
  • "radio_disconnection": true,
  • "water_presence_detected": true
}

Get property settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Responses

Response samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Modify property settings

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

Request Body schema: application/json
optional

Body

auto_shut_off
boolean

Automatic shut off

pressure_tests_enabled
boolean

Enable or disable the pressure test

pressure_tests_schedule
string

The time of day when the pressure test runs, formatted as HH:MM:SS in a 24-hour clock. in 24h clock.

timezone
string

The time zone of the property.

webhook_enabled
boolean

Enable or disable the webhook

webhook_url
string

Webhook url

Responses

Request samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Response samples

Content type
application/json
{
  • "auto_shut_off": true,
  • "pressure_tests_enabled": true,
  • "pressure_tests_schedule": "03:00:00",
  • "timezone": "Europe/London",
  • "webhook_enabled": true,
}

Returns property device settings

Returns current property-level device/settings configuration.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "leak_protection_enabled": true
}

Updates property device settings

Updates property-level device/settings configuration.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "leak_protection_enabled": false
}

Response samples

Content type
application/json
{
  • "leak_protection_enabled": true
}

Signals

Retrieve all Signals for property

Authorizations:
BearerAuth
path Parameters
property_id
required
string

Property UUID

query Parameters
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Retrieve all accessible Signals

Authorizations:
BearerAuth
query Parameters
name
string

Signal name

page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Get Signal

Authorizations:
BearerAuth
path Parameters
id
required
string

Signal UUID

Responses

Response samples

Content type
application/json
{
  • "boot_time": 1622972033,
  • "cloud_connection": "connected",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-a28a-25e7-93c5-6e6a71c123d2",
  • "modem_boot_time": 1623526880,
  • "modem_version": "1.2.535-84ea330",
  • "name": "This is my Signal name",
  • "serial_no": "fd3c164c13b2d20e",
  • "version": "1.2.547-c8efc17",
  • "wifi_rssi": -69
}

Modify Signal

Authorizations:
BearerAuth
path Parameters
id
required
string

Signal UUID

Request Body schema: application/json
optional

Body

name
string

Signal name

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "boot_time": 1622972033,
  • "cloud_connection": "connected",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-a28a-25e7-93c5-6e6a71c123d2",
  • "modem_boot_time": 1623526880,
  • "modem_version": "1.2.535-84ea330",
  • "name": "This is my Signal name",
  • "serial_no": "fd3c164c13b2d20e",
  • "version": "1.2.547-c8efc17",
  • "wifi_rssi": -69
}

Modify Signal

Authorizations:
BearerAuth
path Parameters
id
required
string

Signal UUID

Request Body schema: application/json
optional

Body

name
string

Signal name

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "boot_time": 1622972033,
  • "cloud_connection": "connected",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "7bcb5fe0-a28a-25e7-93c5-6e6a71c123d2",
  • "modem_boot_time": 1623526880,
  • "modem_version": "1.2.535-84ea330",
  • "name": "This is my Signal name",
  • "serial_no": "fd3c164c13b2d20e",
  • "version": "1.2.547-c8efc17",
  • "wifi_rssi": -69
}

Retrieve all Sonics for a Signal

Authorizations:
BearerAuth
path Parameters
signal_id
required
string

Signal UUID

query Parameters
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Sonics

Retrieve all Sonics for a Signal

Authorizations:
BearerAuth
path Parameters
signal_id
required
string

Signal UUID

query Parameters
page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Retrieve all accessible Sonics

Authorizations:
BearerAuth
query Parameters
name
string

Sonic name

page
integer

Page number that is used for the pagination.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page_number": 1,
  • "page_size": 10,
  • "total_entries": 10,
  • "total_pages": 2
}

Get Sonic

Authorizations:
BearerAuth
path Parameters
id
required
string

Sonic UUID

Responses

Response samples

Content type
application/json
{
  • "battery": "external_power_supply",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "39bdc4af-a1b8-47d4-8342-82d311e5538e",
  • "name": "This is my Sonic name",
  • "radio_connection": "connected",
  • "radio_rssi": 166,
  • "serial_no": "20fa74b6bffabc12",
  • "signal_id": "39bdc4af-a1b8-47d4-8342-82d311e1234e",
  • "status": "active",
  • "valve_state": "open"
}

Modify Sonic

Authorizations:
BearerAuth
path Parameters
id
required
string

Sonic UUID

Request Body schema: application/json
optional

Body

name
string

Sonic name

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "battery": "external_power_supply",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "39bdc4af-a1b8-47d4-8342-82d311e5538e",
  • "name": "This is my Sonic name",
  • "radio_connection": "connected",
  • "radio_rssi": 166,
  • "serial_no": "20fa74b6bffabc12",
  • "signal_id": "39bdc4af-a1b8-47d4-8342-82d311e1234e",
  • "status": "active",
  • "valve_state": "open"
}

Modify Sonic

Authorizations:
BearerAuth
path Parameters
id
required
string

Sonic UUID

Request Body schema: application/json
optional

Body

name
string

Sonic name

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "battery": "external_power_supply",
  • "created_at": "2022-01-22T10:20:30.000Z",
  • "id": "39bdc4af-a1b8-47d4-8342-82d311e5538e",
  • "name": "This is my Sonic name",
  • "radio_connection": "connected",
  • "radio_rssi": 166,
  • "serial_no": "20fa74b6bffabc12",
  • "signal_id": "39bdc4af-a1b8-47d4-8342-82d311e1234e",
  • "status": "active",
  • "valve_state": "open"
}

Telemetry details

Get the latest telemetry details

Authorizations:
BearerAuth
path Parameters
sonic_id
required
string

Sonic UUID

Responses

Response samples

Content type
application/json
{
  • "pressure": 3252,
  • "probed_at": 1623414482,
  • "water_flow": 0,
  • "water_temp": 17.1
}

Valve control

Control the Sonic valve (open or close)

Authorizations:
BearerAuth
path Parameters
sonic_id
required
string

Sonic UUID

Request Body schema: application/json
optional

Body

action
required
string
Enum: "open" "close"

Action for opening or closing the valve.

Responses

Request samples

Content type
application/json
{
  • "action": "open"
}

Triggers valve open/close via cloud (Sonic device)

Requests a state change command (e.g. valve open/close) for a Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "action": "open"
}

Response samples

Content type
application/json
{
  • "status": "accepted"
}

Authentication

Email/password sign-in

Authenticates a user with email and password and returns token/user details.

Request Body schema: application/json
optional
email
string <email>
password
string

Responses

Request samples

Content type
application/json
{
  • "email": "user@redacted.example",
  • "password": "REDACTED"
}

Response samples

Content type
application/json
{
  • "token_details": "string",
  • "user_details": { }
}

Refreshes the JWT access token

Refreshes the access token for an authenticated user session.

Authorizations:
BearerAuth
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "refresh_token": "REDACTED"
}

Response samples

Content type
application/json
{
  • "token_details": "string",
  • "user_details": { }
}

Validates the current token and returns refreshed token plus user details on app start

Validates bearer token and returns session details for bootstrap/session-check flows.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "token_details": "string",
  • "user_details": { }
}

Invalidates the current session server-side

Invalidates current bearer session token.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "success": true
}

User profile

Updates the authenticated user profile

Updates mutable user profile fields for a specific user identifier.

Authorizations:
BearerAuth
path Parameters
userId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "first_name": "Alex",
  • "last_name": "User"
}

Response samples

Content type
application/json
{
  • "id": "user-REDACTED",
  • "email": "user@redacted.example"
}

Devices

Returns the list of IoT devices (Sonics, Siryns, etc.)

Returns all things/devices assigned to a selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "things": [
    ]
}

Fetches device details including the hub_id (Sonic UUID)

Returns details for a specific Thing/device.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "thing-REDACTED",
  • "hub_id": "hub-REDACTED"
}

Property members

Lists property memberships

Returns membership entries for a selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "memberships": [
    ]
}

Invites a user to join a property by email

Creates a membership invitation for the selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "email": "invitee@redacted.example",
  • "role": "member"
}

Response samples

Content type
application/json
{
  • "invitation_id": "invite-REDACTED"
}

Removes a user from property memberships

Expels a member from the selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
userId
required
string

Responses

Response samples

Content type
application/json
{
  • "deleted": true
}

Notifications

Returns notification settings for a property

Returns customer notification settings configured for the selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string

Responses

Response samples

Content type
application/json
{
  • "push_enabled": true
}

Updates notification settings for a property

Updates customer notification settings for the selected property.

Authorizations:
BearerAuth
path Parameters
propertyId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "push_enabled": false
}

Response samples

Content type
application/json
{
  • "push_enabled": true
}

Pressure testing

Triggers a pressure test

Starts pressure test execution for a selected Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string
Request Body schema: application/json
optional
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "source": "mobile"
}

Response samples

Content type
application/json
{
  • "job_id": "pressure-test-REDACTED"
}

Lists pressure test history

Returns pressure test results for a selected Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "tests": [
    ]
}

Returns pressure test results for calendar view (date range filter)

Returns pressure tests grouped for calendar/day-based UI rendering.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "by_day": {
    }
}

Water usage

Returns current daily usage

Returns current-day water usage for a selected Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "day_usage_liters": 0
}

Returns aggregated usage statistics

Returns aggregated water usage statistics for a selected Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "total_usage_liters": 0
}

Returns daily usage history

Returns daily water usage series for a selected Thing and optional month/year filters.

Authorizations:
BearerAuth
path Parameters
thingId
required
string
query Parameters
month
integer
year
integer

Responses

Response samples

Content type
application/json
{
  • "daily": [
    ]
}

Water events

Lists Thing water events

Returns water events detected for a selected Thing.

Authorizations:
BearerAuth
path Parameters
thingId
required
string

Responses

Response samples

Content type
application/json
{
  • "events": [
    ]
}

Appliance categories

Returns appliance categories used for event and usage classification

Fetches appliance categories exposed to the customer app for assigning usage/events to appliance types.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "categories": [
    ]
}

Hubs (bridge)

Returns details of a hub/bridge device

Returns a detailed hub (bridge) payload for a given hub identifier used by the customer app.

Authorizations:
BearerAuth
path Parameters
hubId
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "hub-REDACTED",
  • "serial_no": "REDACTED",
  • "status": "online"
}