Data push
Thryve can directly send new and updated end user data to your system through webhooks so that you don't have to do any API calls to receive the newest data.
The data will be sent as POST requests to a designated HTTPS URL (Port 443). The webhook content is compressed using zstd to reduce payload sizes and improve network time.
Please ensure your endpoint accepts requests with "CONTENT-TYPE": "application/json" and "CONTENT-ENCODING": "zstd" . Data integrity and authenticity can be ensured by configuring an HMAC secret.
Respond to the request with a 200 or 204 within 2 seconds. Failed deliveries will be retried up to 3 times. Recurring failed deliveries within a certain timeframe will lead to the automatic disabling of webhooks.
We recommend queuing received payloads by your endpoint before applying any further processing/data storage to ensure adequate response times.
Configuration
Data push webhooks can be enabled or disabled for each data dimension (epoch/daily/measurement). To enable webhooks, you need a functioning public Webhook URL. You can also add custom authentication to secure your webhook endpoint using web authentication
In Thryve Dashboards, perform all configurations and trigger test webhook sending to your endpoint.
Content configuration
Webhooks can be sent using unix timestamps or timestamps following ISO 8601 depending on your preference. Optional parameters like dataSourceName and additional details can be enabled/disabled to optimize payload size for your needs and to only return the information you actually are interested in.
In Thryve Dashboards, perform all configurations and trigger test webhook sending to your endpoint.
Epoch data push webhook
When enabled, this webhook will trigger whenever new data is stored for a data source or existing data is updated.
{
"endUserId": "123accessToken",
"endUserAlias": "YourEndUserAlias",
"timestampType": "ISO",
"type": "event.data.epoch.create", // or "event.data.epoch.update"
"data": {
"dataSourceId": 5,
"dataSourceName": "Apple",
"epochData": [
{
"startTimestamp": "2022-09-07T19:39:32Z",
"endTimestamp": "2022-09-07T19:45:02Z",
"timezoneOffset": 0,
"dataTypeId": 1000,
"value": "53.0",
"additionalDetails": {
"creationTimestamp": "2022-09-07T19:45:05Z",
"dataTypeName": "Steps",
"valueType": "DOUBLE",
"thirdPartyDataSourceId": 1,
"thirdPartyDataSourceName": "UNKNOWN",
"measurementReference": 9007163812253719,
"generationType": "MANUAL_ENTRY",
"trustworthiness": "doubt_from_device_source",
"medicalGrade": false,
"chronologicalExactness": 15
}
}
]
}
}Epoch data push schema
Webhook object
endUserId
String containing the unique identifier of a user in Thryve's system. Auto-generated upon user creation. Formerly known as accessToken.
endUserAlias
Optional. String containing the optional alias set by you when creating a user. Formerly known as partnerUserId. Only returned if configured and not null.
timestampType
String specifying the timestamps to expect in the data object. iso or unix.
type
String specifying the payload structure to expect in the data object. event.data.epoch.create for new data event.data.epoch.update for updated data.
data
Object containing content according to type.
Data source object
dataSourceId
Integer specifying the data source new data has been stored for.
dataSourceName
Optional. String containing the name of the data source.
epochData
Array containing list of new or updated epoch data.
Epoch object
startTimestamp
String when ISO formatted timestamp, Integer when unix timestamp in milliseconds
endTimestamp
String when ISO formatted timestamp, Integer when unix timestamp in milliseconds. Not returned if null.
timezoneOffset
Integer describing the offset to UTC in minutes. Not returned if null.
dataTypeId
Integer specifying the data type.
value
String containing the value of the data point.
additionalDetails
Object containing optional additional information if configured.
Additional details object
creationTimestamp
Timestamp when data was received by Thryve. String when ISO formatted timestamp, Integer when unix timestamp in milliseconds
dataTypeName
String containing the name of the data type.
valueType
String containing what value to expect.
thirdPartyDataSourceId
Integer specifying the third party that recorded the data. Not returned if null
thirdPartyDataSourceName
String containing the name of the third party data source. Not returned if null.
measurementReference
Integer containing the reference of the measurement object this data point belongs to. Not returned if null
generationType
String containing information how data was recorded if available. Not returned if null
trustworthiness
String containing information on data quality if available. Not returned if null
medicalGrade
Boolean indicating if data was recorded by a medical grade sensor, e.g. an FDA-approved medical device. Not returned if null.
chronologicalExactness
Integer indicating potential deviations from timestamps, measured in minutes. Not returned if null.
Daily data push webhook
When enabled, this webhook will trigger whenever new data is stored for a data source or existing data is updated.
Daily data push schema
Webhook object
endUserId
String containing the unique identifier of a user in Thryve's system. Auto-generated upon user creation. Formerly known as accessToken.
endUserAlias
Optional. String containing the optional alias set by you when creating a user. Formerly known as partnerUserId. Only returned if configured and not null.
timestampType
String specifying the timestamps to expect in the data object. iso or unix.
type
String specifying the payload structure to expect in the data object. event.data.daily.create for new data event.data.daily.update for updated data.
data
Object containing content according to type.
Data source object
dataSourceId
Integer specifying the data source new data has been stored for.
dataSourceName
Optional. String containing the name of the data source.
dailyData
Array containing list of new or updated daily data.
Daily object
day
String when ISO formatted timestamp, Integer when unix timestamp in milliseconds for midnight (day start) in UTC.
timezoneOffset
Integer describing the offset to UTC in minutes. Not returned if null.
dataTypeId
Integer specifying the data type.
value
String containing the value of the data point.
additionalDetails
Object containing optional additional information if configured.
Additional details object
creationTimestamp
Timestamp when data was received by Thryve. String when ISO formatted timestamp, Integer when unix timestamp in milliseconds
dataTypeName
String containing the name of the data type.
valueType
String containing what value to expect.
generationType
String containing information how data was recorded if available. Not returned if null
trustworthiness
String containing information on data quality if available. Not returned if null
chronologicalExactness
Integer indicating potential deviations from timestamps, measured in minutes. Not returned if null.
Last updated

