Changelog
Follow up on the latest improvements and updates.
RSS
We are pleased to announce the release of ROOKScore 2.0, our enhanced health score. This new version introduces advanced metrics and improved functionality, allowing customers to gain deeper insights and foster greater innovation with users' health data.
Why ROOKScore 2.0?
ROOKScore 2.0 is a redesign of our health score, aimed at making it more consistent, providing a clearer overview of key user health indicators. While ROOKScore 1.0 offers a solid foundation, it lacks the depth and robustness needed to address the diverse needs of health-focused applications. This new version is built around our three health pillars: Body Health, Physical Health, and Sleep Health, offering a more personalized scoring system based on multiple factors.
Key features of ROOKScore 2.0
- Enhanced metric integration: Health Score 2.0 incorporates new data points such as body mass index (BMI), HRV, sleep duration and quality, steps, calories, and activity time, providing a holistic view of user health. By leveraging existing wearable device metrics, the score delivers more detailed insights into physical health, body composition, and sleep quality.
- New pillar structure: The score is divided into three health pillars: Body Health, Physical Health, and Sleep Health, each contributing equally to the final score. Each pillar includes important metrics like BMI (Body Health); steps, calories, and physical activity (Physical Health); and HRV, sleep time, and sleep quality (Sleep Health), ensuring a comprehensive evaluation.
- Customizable for individual needs: Health Score 2.0 allows customers to personalize the weight of each metric and pillar, offering the flexibility to focus on the most relevant health metrics for their users. For example, if a company prioritizes physical activity, it can adjust the score to emphasize steps, calories, and activity time. Alternatively, if Body Health is less relevant, it can be turned off so it does not contribute to the overall health score.
- Seamless compatibility and transition: To ensure a smooth transition for current users, Health Score 1.0 will continue to function. For customers migrating from ROOKScore 1.5 to ROOKScore 2.0, we have provided detailed documentation and support to help them adopt the new system without disruption.
Configuring your ROOKScore 2.0
As mentioned, ROOKScore 2.0 allows configuration of the health score’s structure, meaning you can adjust the weight of each health metric or pillar, or deactivate them if they should not contribute to your ROOKScore. To configure your ROOKScore 2.0, log in to your ROOK Portal and go to the ROOKScore module. Keep in mind the following:
- Pillars: You can configure the three pillars and how they contribute to your ROOKScore 2.0. The combined weight of Body Health, Physical Health, and Sleep Health must total 100%. Each pillar can have a value from 0% to 100%, with up to two decimal places if needed. If you do not want a pillar to participate in the score, you can either deactivate it or set its value to 0%.
- Metrics: Health metrics are located within each pillar and contribute equally by default. If you wish to assign different values to each metric, the value must be between 0% and 100%, with up to two decimal places if required. As with pillars, you can deactivate or set a metric to 0% if you do not want it to affect the score.
Integrate our ROOKScore 2.0
To access ROOKScore 2.0, please contact the ROOK team.
Frequently Asked Questions
What is ROOKScore 2.0?
ROOKScore 2.0 is the enhanced version of our health scoring system. This version includes advanced metrics and improved functionality, offering a deeper and more accurate assessment of user health.
What are the main differences between ROOKScore 1.0 and ROOKScore 2.0?
ROOKScore 2.0 incorporates additional health metrics like body mass index (BMI) and heart rate variability (HRV), as well as a new three-pillar structure: Body Health, Physical Health, and Sleep Health. It also allows metric customization and provides a more dynamic evaluation based on multiple days rather than daily snapshots.
What metrics are integrated into ROOKScore 2.0?
ROOKScore 2.0 includes new metrics such as BMI, steps, calories burned, activity time, and sleep duration and quality, offering a more comprehensive view of physical, body, and sleep health.
What are the pillars of ROOKScore 2.0?
The three pillars are:
- Body Health: Includes metrics like BMI score.
- Physical Health: Includes metrics related to Activity score, such as Steps score and Calories score.
- Sleep Health: Includes Readiness score, Sleep duration score, and Sleep quality score.
Each of these pillars contributes to the final score and can be configured based on customer needs.
Can I customize the weight of metrics in ROOKScore 2.0?
Yes, ROOKScore 2.0 allows customers to adjust the weight of each metric and pillar according to their priorities. This offers the flexibility to focus on the most relevant aspects of user health.
What happens if I still use ROOKScore 1.5?
ROOKScore 1.0 will continue to function for some time. However, we recommend migrating to ROOKScore 2.0 to take advantage of its new features. We provide documentation and support to ensure a smooth transition.
How do I configure my ROOKScore 2.0?
To configure ROOKScore 2.0, log in to the ROOKScore module in your ROOK portal, where you can adjust the weight of the health pillars and metrics. Assign a percentage to each pillar (Body Health, Physical Health, and Sleep Health) and metric, ensuring that the total adds up to 100%.
What if I don’t want a pillar or metric to affect the score?
If you do not want a pillar or metric to participate in the score, you can deactivate it or assign it a value of 0%, which will prevent it from contributing to the ROOKScore.
How do I integrate ROOKScore 2.0 into my platform?
To integrate ROOKScore 2.0, contact the ROOK team for access and technical support.
We are excited to introduce our new feature, "Step Events." This enhancement allows users to obtain hourly step metrics, significantly improving the experience and insights available to our customers.
Previously, the only way to access step data through ROOK was via the Physical Summary, which provides a daily summary of steps after the day ends, or through Physical Events during specific activities. However, many customers have expressed the need to obtain step information throughout the day at various times. In response, we developed "Step Events," a solution that allows frequent and manual step updates, getting as close to real-time as possible.
Features of Step Events
- Update frequency: "Step Events" extracts and updates step data within every hour in the background.
- Compatibility: Available for Apple Health, Health Connect, React Native, Flutter, and Capacitor SDKs.
- Integration with Apple Health and Health Connect: On iOS devices, data is extracted from Apple Health, while on Android devices, it is extracted through Health Connect and Android operating system data.
- Data transmission: Data is efficiently transmitted through ROOK SDKs and Data Webhook, ensuring quick and reliable delivery to our customers' backends.
How it works
Step data accumulates from 00:00 to the current time of day and is transmitted via an optimized JSON to ensure quick visualization of the metrics. Here is an example of the JSON used:
{
"client_uuid":"ClientUUID",
"user_id":"UserId",
"version":2,
"document_version":1,
"auto_detected":true,
"data_structure":"steps_event",
"physical_health":{
"events":{
"steps_event":[
{
"non_structured_data_array":[
{}
],
"metadata":{
"datetime_string":"2023-12-29T21:07:14.402999Z",
"sources_of_data_array":[
"Apple Health"
],
"user_id_string":"UserId",
"was_the_user_under_physical_activity_bool":false
},
"physical_health":{
"accumulated_steps_int":0
}
}
]
}
}
}
Frequently Asked Questions
What is "Step Events"?
“Step Events" is a new feature launched by ROOK that allows users to obtain hourly step metrics. This functionality significantly enhances the user experience and provides more detailed insights for our customers.
Is this new functionality on-demand?
No, this functionality is integrated with the ROOK SDKs.
What problems does "Step Events" solve?
"Step Events" addresses the need for more frequent step information updates, allowing manual and frequent data updates, getting as close to real-time as possible.
What is the update frequency?
The SDKs extract and update step data as frequently as possible in the background, every hour.
What technologies are compatible with this feature?
Available for iOS, Android, React Native, Flutter, and Capacitor SDKs.
From which data sources are the steps extracted?
On iOS devices, data is extracted from Apple Health; on Android devices, data is extracted from Health Connect and the Android operating system data.
How does "Step Events" work?
Step data accumulates from 00:00 to the current time of day and is transmitted via an optimized JSON to ensure quick visualization of the metrics.
At ROOK, we continually strive to enhance our API's ability to deliver meaningful and actionable health data. In line with this commitment, we are pleased to announce the release of ROOKScore 1.5, a significant update to our readiness score.
Many users observed that the readiness score consistently displayed a rating of 100% in various scenarios. After thorough analysis, we identified that the issue lay in the intervals defined for generic users, i.e., those whose age or gender were not specified.
Initially, the readiness score intervals were as follows:
- Female user with unknown age: 25 - 108
- Male user with unknown age: 30 - 110
- User with unknown age and gender: 25 - 110
The breadth of these intervals, averaging 82 points, contrasted markedly with the narrower average range of 35 points for users with known age and gender. This disparity caused the readiness score to be disproportionately high for generic users, often resulting in a perfect score of 100%.
Readiness score improvement
To address this, we conducted a review and adjustment of the intervals for generic users. This process incorporated data on average population ages from recognized sources such as the United States Census Bureau, Eurostat, and the Instituto Nacional de Estadística y Geografía (INEGI). Based on this research, we have established the following updated intervals:
- Female user with unknown age: 35 - 71
- Male user with unknown age: 41 - 74
- User with unknown age and gender: 38 - 73
These refined ranges better reflect global population trends and are expected to provide a more accurate readiness score for generic users.
With ROOKScore 1.5, we are confident that our readiness score will now offer more precise insights, allowing our users to maximize the potential of our API. We remain committed to continuous improvement and appreciate ongoing feedback to ensure our tools meet the highest standards of accuracy and utility.
Frequently asked questions
What is ROOKScore 1.5?
ROOKScore 1.5 is an update to our ROOKScore, designed to offer a more precise measurement through the readiness score, adjusting for global demographic trends for users who do not have demographic data.
Why was an update needed?
It was identified that the undefined demographic intervals for generic users were too broad, resulting in disproportionately high and irrational readiness scores. This update adjusts those intervals through demographic data standardization to improve accuracy.
How were the new intervals defined?
The new intervals were defined using data on average population ages from recognized sources such as the United States Census Bureau, Eurostat, and INEGI. The following age ranges were established for users without demographic data:
- Female user with unknown age: 35 - 71
- Male user with unknown age: 41 - 74
- User with unknown age and gender: 38 - 73
What impact will this update have on users?
We expect the readiness scores to be more accurate and better reflect demographic reality, providing more useful insights.
ROOK is excited to announce the official launch of our new Capacitor (Ionic) SDK, designed to streamline the integration of ROOKConnect for both Android and iOS platforms. This SDK offers a robust solution for developers using Capacitor in their projects, delivering an integration experience akin to that of our React and Flutter SDK.
Our SDK, developed in TypeScript, provides developers with the flexibility to integrate it using either TypeScript or JavaScript, catering to their specific development preferences and requirements in Capacitor. This adaptability ensures that developers can work with the tools that best fit their workflow.
Key Features and Benefits
- Cross-Platform Compatibility:The SDK leverages native iOS and Android libraries, enabling data extraction from Apple Health on iOS devices and Health Connect on Android devices.
- Seamless Integration:We provide comprehensive documentation and dedicated support to facilitate a swift and efficient integration process.
- Development Flexibility:Developers can choose to work with either TypeScript or JavaScript based on their preferences.
With this innovative tool, we are committed to providing our clients with access to valuable and actionable health data, empowering them to innovate and deliver enriched user experiences.
For detailed instructions on integrating ROOK with the new Capacitor SDK, please refer to our documentation.
Frequently Asked Questions
What is the ROOK Capacitor SDK?
The ROOK Capacitor SDK is a cutting-edge tool designed to simplify the integration of ROOKConnect into applications developed with Capacitor, supporting both Android and iOS platforms.
What is the purpose of the Capacitor SDK?
The primary aim of the Capacitor SDK is to provide seamless integration capabilities for clients developing their products with Capacitor (Ionic).
Which programming languages are supported by the Capacitor SDK?
The Capacitor SDK is developed in TypeScript but supports integration using both TypeScript and JavaScript.
What data sources can be accessed through the Capacitor SDK?
The SDK utilizes native libraries of iOS and Android to extract data from Apple Health on iOS devices and Health Connect on Android devices. For integrating additional data sources, please refer to our API documentation.
ROOK offers a range of actions related to users, data, and clients. These actions include linking or unlinking data sources, extracting, processing, and delivering data, and utilizing the Data Webhook to notify clients when a user event or webhook is available.
Previously, ROOK lacked a way to notify clients about various user actions occurring within their integration with ROOK. Clients could only access partial information about actions executed in their integration. To address this, we have introduced the Notification Webhook, our new add-on designed to send notifications to clients about actions within their ROOK integration. This includes creating new users, connecting or disconnecting data sources, failed notifications to user data sources, and notifications of undelivered information. Our goal is to provide clients with timely updates without requiring API queries, using webhooks to deliver automatic notifications. This optimization ensures clients have up-to-date information and streamlines their workflows.
This webhook provides three types of notifications:
User management
This webhook notifies you whenever a user interacts with the ROOKConnect integration, except for Events and Summaries, which are covered by our Data Webhook. The actions that trigger notifications include:
- New user creation
- New data source linking for a user
- Data source unlinking for a user
Failed user data extractions
This notification alerts you when ROOK is unable to extract user event or summary data due to various factors while querying a user's data source. These factors are external to ROOK and may include:
- Data source failures
- Unavailable user information
- Token or credential issues
- Permission problems
Rejected information
This notification alerts you when you have not accepted a submission of events or summaries from our Data Webhook. For more details, please read the following article.
Subscribe to Notification Webhook
This add-on is optional. To subscribe, please contact our sales department. You will need the following information:
- URL to receive webhook notifications
- Two URLs are required: one for your Sandbox environment and one for your Production environment.
Frequently Questions
Is this the same webhook where we receive documents for new events and summaries of our users?
No, the webhook for receiving new events and summaries is called the "Data Webhook." The "Notification Webhook" only communicates user interaction actions, failed communications to user data, and the resending of rejected information.
Note: Be sure to use different URLs to receive notifications for each webhook.
Can I use the same URL for the Notification Webhook in both environments?
Yes, you can use the same URL for both environments, but we do not recommend it. Using the same URL might lead to an overload of notifications and cause confusion.
Is it mandatory to subscribe to the Notification Webhook?
No, this add-on is optional. Clients can choose to subscribe if they need to receive automatic notifications about actions within their ROOK integration.
How can clients subscribe to the Notification Webhook?
To subscribe to the Notification Webhook, clients should contact our sales department. You need to provide two URLs to receive webhook notifications: one for the Sandbox environment and another for the Production environment.
Once subscribed, can I unsubscribe?
Yes, you can unsubscribe from the Notification Webhook by contacting our sales team to initiate the unsubscription process.
What types of notifications does the Notification Webhook offer?
The Notification Webhook provides three types of notifications:
- User management:Receive alerts whenever a user interacts with the ROOK integration, except for events and summaries, which are notified through the Data Webhook.
- Failed user data extractions:Alerts when ROOK does not receive a response when querying a user's data source.
- Rejected information:Notifications when a submission of events or summaries from the Data Webhook has not been accepted.
The "Rejected Information" project focuses on improving the delivery of information to customers by implementing a system that allows storing events and summaries, which have not been received by our customers, in specific buckets so they can request and retrieve any pending documents proactively. In this way, our aim with the project is to mitigate information loss and ensure effective data delivery to customers. The project also includes implementing a retry process before storing the documents in the bucket, which consists of notifications to the customer to make them aware of pending events and webhooks awaiting acceptance.
The operation of the "Rejected Information" project can be described in the following steps:
- Initial document sending: When attempting to send events and summaries to the customer via webhook, a retry process is initiated if the document is not received correctly by the customer in the first attempts.
- Retry process: A retry flow is established, including three delivery attempts of the document to the customer after 2 hours, 24 hours, and 48 hours. If the customer does not receive the document after these retries, the document is moved to the storage bucket of the corresponding environment (sandbox or production).
- Storage in buckets: Events and summaries that could not be delivered to the customer are stored in designated buckets for each environment, allowing the customer to request the resend of the stored information if necessary. This information will be available for proactive customer requests for 3 days for the sandbox bucket and 10 days for the production bucket.
- Customer notifications: Notifications will be sent via webhook to inform customers about the existence of pending events and summaries awaiting acceptance in the buckets.
- Preference management: Customers have the ability to manage their notification preferences, therefore, they can request not to receive these retry notifications. However, unreceived events and summaries will still be stored in the bucket under the same time rules.
This project ensures that events and summaries not sent to customers are securely stored in production or sandbox buckets, allowing customers to request pending information in case of initial delivery failures. Additionally, notification mechanisms are established to ensure effective data delivery to customers.
Frequent Questions
What is the Reject Information project about?
The goal of Resend Reject Information is to improve the delivery of information to customers by ensuring they receive the maximum amount of data about their users, so we aim to maintain communication despite the lack of response from the customer's side.
How is information loss prevented?
The objective is to establish a system where information sent to customers is stored in buckets to allow them to request and retrieve any pending documents, thus mitigating the risk of information loss.
How long are documents not received by the client kept??
Events and summaries not received by customers will be stored in their respective buckets within their environment. For the production bucket, events and summaries will be stored for 10 days, and for the Sandbox bucket, they will be stored for 3 days. After this period, they will be deleted from the buckets, but the customer can still request the events and summaries. This has to be requested directly to the account manager and will incur an additional cost.
What is the process for handling resend attempts before storing documents in the bucket?
Before storing documents in the specific bucket of the environment, a retry process is initiated, which involves two attempts to send the document to the customer at intervals of 2 hours and 24 hours after the first notification. If the customer does not receive the document after the retries, then it is moved to the respective bucket.
How does the project ensure effective communication with customers regarding pending documents?
The system will use webhooks to notify customers when events and summaries are queued for delivery and are not successfully received. Customers can also request the resend of pending documents through the designated endpoint.
How does the project differentiate between sandbox and production environments in terms of document delivery?
Separate buckets and endpoints will be established for sandbox and production environments to ensure different handling of documents for each environment.
How can I subscribe to this parallel webhook notifications?
You will need to send us a URL where you want the notifications to be sent; this process will be manual for the time being.
A changelog is a tool for timely and clear communication about new changes, in this case, regarding our SDKs. It serves as a historical record of updates, improvements, bug fixes, and new features implemented in the product.
The importance of the changelog lies in several aspects:
- It provides transparency to users, clients, and collaborators about what changes are being made in the respective SDK.
- It facilitates the update to new versions and provides important information about it.
- With each SDK update, there may be changes in the interface and functionality that could affect compatibility with previous versions.
How to identify the changes in our SDKs?
To manage the changes in our SDKs, we have defined update rules to maintain semantic versioning for an optimal experience.
This guide will help you quickly interpret and understand what types of changes have been made in our SDKs through the Changelog:
- Version changes (X.1.1): Compatibility changes or changes in data communication or transmission.
- Major changes (1.X.1): Primarily includes changes to address significant product errors or security improvements.
- Minor changes (1.1.X): Includes minor changes to enhance the customer experience.
To view the Changelog of our SDKs, please refer to the documentation of each SDK at the following link.
HTTP response status codes indicate whether a specific HTTP request has completed successfully. The answers are grouped into five classes:
- 100: Informative Answers
- 200: Satisfactory answers
- 300: Redirects
- 400: Customer errors
- 500: Server errors
Informative response
- 100 - Continue:This tentative response indicates that everything so far is fine and that the client should continue with the request or ignore it if it is already finished.
- 101 - Switching Protocol:Indicates that the server accepts the protocol change proposed by the user agent.
- 102 - Processing:This code indicates that the server has received the request and is still processing it, so no response is available.
- 103 - Early Hints:Allowing the user agent to begin pre-fetching (en-US) resources while the server prepares a response.
Satisfactory answers
- 200 - Okay:The request has been successful. The meaning of a success varies depending on the HTTP method
- 201 - Created:The request was successful and a new resource was created as a result. This is typically the response sent after a PUT request.
- 202 - Accepted:The request has been received, but has not yet been acted upon. It is an "uncommitted" request, meaning that there is no way in HTTP to allow an asynchronous response to be sent indicating the result of processing the request. It is intended for cases where another process or server handles the request, or for the batch processing.
- 203 - Non-Authoritative Information:The request has been completed successfully, but its content has not been obtained from the originally requested source, but is collected from a local copy or from a third party. Except this condition, a response of 200 OK should be preferred instead of this response.
- 204 - No Content:The request completed successfully but its response has no content, although headers may be useful. The user agent can update its cached headers for this resource with the new values.
- 205 - Reset Content:The request has been completed successfully, but its response has no content and in addition, the user agent has to initialize the page from which the request was made, this code is useful for example for pages with forms whose content must be deleted after for the user to send it.
- 206 - Partial Content:The request will partially serve the requested content. This feature is used by download tools such as wget to continue the transfer of previously interrupted downloads, or to split a download and process the parts simultaneously.
- 207 - Multi-Status:A Multi-State response transmits information about multiple resources in situations where multiple status codes might be appropriate. The body of the request is an XML message.
- 208 - Multi-Status:The list of DAV elements was previously notified, so they will not be listed again.
- 226 - IM Used:The server has fulfilled a GET request for the resource and the response is a representation of the result of one or more instance manipulations applied to the current instance.
Redirects
- 300 - Multiple Choice:This request has more than one possible answer. User-Agent or the user must choose one of them. There is no standardized way to select one of the answers.
- 301 - Moved Permanently:This response code means that the URI of the requested resource has been changed. A new URI will probably be returned in the response.
- 302 - Found:This response code means that the requested URI resource has been temporarily changed. New changes to the URI will be added in the future. Therefore, the same URI must be used by the client in future requests.
- 303 - See Other:The server sends this response to direct the client to a new resource requested at another address using a GET request.
- 304 - Not Modified:This is used for "caching" purposes. It tells the client that the response has not been modified. The client can then continue using the same version stored in its cache.
- 305 - Use Proxy:It was defined in a previous version of the HTTP protocol specification to indicate that a requested response must be accessed from a proxy. It has been deprecated due to security concerns associated with configuring a proxy.
- 307 - Temporary Redirect:The server sends this response to direct the client to obtain the requested resource at another URI with the same method used in the previous request. It has the same semantics as the HTTP 302 Found response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, another POST must be used in the second request.
- 308 - Permanent Redirect:It means that the resource is now permanently located at another URI, specified by the Location: HTTP header response. It has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, another POST must be used in the second request.
Customer errors
- 400 - Bad Request:This response means that the server could not interpret the request given invalid syntax.
- 401 - Unauthorized:Authentication is required to obtain the requested response. This is similar to 403, but in this case, authentication is possible.
- 402 - Payment Required:This response code is reserved for future use. The initial objective of creating this code was to be used in digital payment systems. However, it is not currently being used.
- 403 - Forbidden:The client does not have the necessary permissions for certain content, so the server is refusing to provide an appropriate response.
- 404 - Not Found:The server could not find the requested content. This response code is one of the most famous given its high occurrence on the web.
- 405 - Method Not Allowed:The requested method is known to the server but has been disabled and cannot be used. The two required methods, GET and HEAD, should never be disabled and should not return this error code.
- 406 - Not Acceptable:This response is sent when the server, after applying a server-driven (en-US) content negotiation, does not find any content matching the criteria given by the user.
- 407 - Proxy Authentication Required:his is similar to the 401 code, but the authentication must be done from a proxy.
- 408 - Request Timeout:This response is sent on an idle connection on some servers, even without any prior request from the client. It means that the server wants to disconnect this unused connection. This response is widely used since some browsers, such as Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up browsing. Also keep in mind that some servers simply disconnect the connection without sending this message.
- 409 - Conflict:This response can be sent when a request conflicts with the current state of the server.
- 410 - Gone:This response can be sent when the requested content has been deleted from the server.
- 411 - Length Required:The server rejects the request because the Content-Length header field is not defined and the server requires it.
- 412 - Precondition Failed:The client has indicated pre-conditions in its headers which the server does not meet.
- 413 - Payload Too Large:The request entity is longer than the limits defined by the server; the server can close the connection or return a Retry-After header field.
- 414 - URI Too Long:The URI requested by the client is longer than the server is willing to interpret.
- 415 - Unsupported Media Type:The multimedia format of the requested data is not supported by the server, so the server rejects the request.
- 416 - Requested Range Not Satisfied:The range specified by the Range header field in the request does not comply; It is possible that the range is outside the target data size of the URI.
- 417 - Expectation Failed:It means that the expectation indicated by the requested Expect header field cannot be met by the server.
- 421 - MisdirectedRequest:The request was directed to a server that is not capable of producing a response. This can be sent by a server that is not configured to produce responses by the combination of the schema and authority that are included in the requested URI
- 422 - Unprocessable Entity:The request was well formed but could not be followed due to semantic errors.
- 423 - Locked:The resource being accessed is locked.
- 424 - Failed Dependency:The petition failed due to a failure of a previous petition.
- 426 - Upgrade Required:The server refuses to implement the request using the current protocol but may be willing to do so after the client upgrades to a different protocol. The server sends an Upgrade header in a response to indicate the required protocols.
- 428 - Precondition Required:The origin server requires that the request be conditional. It is intended to prevent 'lost update' problems, where a client GETS a state from the resource, modifies it, and PUTS it back to the server, when a third party has modified the state of the server, leading to a - conflict.
- 429 - Too Many Requests:The user has submitted too many requests in a given period of time.
- 431 - Request Header Fields Too Large:The server is unwilling to process the request because the header fields are too long. The request MAY be re-uploaded after reducing the size of the requested header fields.
Server errors
- 500 - Internal Server Error:The server has encountered a situation that it doesn't know how to handle.
- 501 - Not Implemented:The requested method is not supported by the server and cannot be handled. The only methods that servers require to support (and therefore should not return this code) are GET and HEAD.
- 502 - Bad Gateway:This error response means that the server, while working as a gateway to obtain a response necessary to handle the request, got an invalid response.
- 503 - Service Unavailable:The server is not ready to handle the request. Common causes could be that the server is down for maintenance or is overloaded.
- 504 - Gateway Timeout:This error response is given when the server is acting as a gateway and cannot get a response in time.
- 505 - HTTP Version Not Supported:The HTTP version used in the request is not supported by the server.
- 506 - Variant Also Negotiates:The server has an internal configuration error: Transparent content negotiation for the request results in a circular reference.
- 507 - Insufficient Storage:The server has an internal configuration error: the chosen resource variable is configured to engage transparent content negotiation itself, and is therefore not a suitable endpoint for the negotiation process.
- 508 - Loop Detected:The server detected an infinite loop while processing the request.
- 510 - Not Extended:Additional extensions to the request are required for the server to fulfill.
- 511 - Network Authentication Required:Status code 511 indicates that the client needs to authenticate to gain access to the network.
Granular data refers to specific details about health metrics, such as heart rate, blood pressure, and blood oxygen levels. This information is essential for in-depth analysis, but the data sent from granular data can be very large.
This project aims to optimize the structure of health data delivered through webhooks by removing granular data. This benefits clients who, due to their technology, cannot process large .JSON files. In this release, we will focus on the files delivered through our webhooks.
Frequently Asked Questions:
Do these changes apply to all ROOKConnect modules?
No, the changes will apply to version 2 of the data structure, only in webhooks.
What is granular data?
Granular data refers to specific details about health metrics.
Example: We represent Cycling speed using granular data. We can observe in the graph the representation of the speed in km/h the user went through throughout the workout.
Can it be configured individually per environment?
Yes, it can be configured if granular data will be received.
Will I still be able to receive granular data?
Yes, this feature is on request. So, if you wish to continue receiving granular data, you don't need to request anything.
Can I select only certain granular data that I want to receive and discard the rest?
No, currently we do not have available customization of the granular data structure.
If I have this functionality, do I lose granular data?
No. If you make the query via API, you will receive the entire JSON in full, including the granular data.
This project will focus on providing customers with real-time logs of their queries to track their integration with ROOK. These logs include information about event queries and user summaries. Implementing these logs efficiently can facilitate issue resolution and enhance the overall quality and independence of our product.
The project will feature a new module, "Logs," in the ROOK Portal. Here, you can view your queries directly and in real-time, historically, made through the integration of our Webhooks APIs with ROOKConnect. You will be able to review the following data:
- Date and time of the query
- Log type
- Linked User ID
- Query status
- Source of the consulted data
- Access to the JSON of each successfully delivered query of events and summaries.
The benefits of this project include:
- Facilitating integration issue resolution.
- Enhancing the overall quality of the product.
- Making information easier to find.
- Providing users with greater independence by granting access to detailed information.
- Accessing JSON data from past events and summaries queries.
Frequent questions
What is the main goal of the implementation project for the logs module in the ROOK Portal?
The main goal of this project is to provide our clients with the ability to access real-time logs that track integration with ROOK. These logs contain detailed information about event queries, as well as user summaries.
What data will be visible through the new Logs module in the ROOK Portal?
Through the new Logs module, users will be able to view key information, including the date and time of the query, the log type, the associated User ID, the query status, and the consulted data source. Additionally, they will have the ability to review specific details of each successful query delivered in the form of events and summaries, with access to the corresponding JSON files.
How will this project facilitate integration issue resolution?
The efficient implementation of real-time logs will allow quick and accurate identification of any integration issues.
What are the key benefits for clients in accessing the Logs module?
Clients will benefit from increased independence by easily accessing detailed information about their queries. This will provide them with the ability to autonomously resolve issues, improve the quality of their integration, and quickly find the information they need, contributing to a more efficient and autonomous experience.
What advantages does the ability to query past JSON events and summaries offer?
The ability to query past JSON events and summaries provides clients with complete access to historical information about their users. This not only facilitates the review of previous queries but also allows for retrospective analysis, serving to improve processes and optimize future integrations.
What types of logs are there?
Currently, we work with two types of logs, which vary according to the pillar being queried. These log types are events and summaries.
What are the statuses handled by the module?
We work with HTTP response status codes, which are:
- 200 - Successful
- 201 - Created
- 202 - Accepted
- 203 - Non-Authoritative Information
- 204 - No content
- 205 - Reset content
- 206 - Partial content
- 300 - Multiple choice
- 301 - Moved Permanently
- 302 - Found
- 303 - See Other
- 304 - Not modified
- 400 - Bad Request
- 401 - Unauthorized
- 404 - Not Found
Can I export the logs?
Yes, the queried logs can be exported in a CSV file.
Can I check the JSON of the logs?
Currently, you can only check the logs for events and summaries with a 200 - Successful response. If it doesn't meet any of these conditions, the logs will not have a detailed view or a JSON.
Load More
→