Releases: openmhealth/shimmer
Releases · openmhealth/shimmer
v0.3.0
This release does a few great things.
- It adds support for new APIs, namely Google Fit and Misfit.
- It overhauls the logic that maps third-party data to an Open mHealth format in order to simplify testing and produce data points complete with metadata.
- It leverages new Docker tooling to make deployments simpler and enable deployments to many cloud platforms like AWS, Azure, and Google Compute Engine.
To prepare for this release, we painstakingly reviewed the documentation of all third-party APIs and peppered them with questions. This knowledge helped us ensure that the data we convert matches Open mHealth semantics. It also allowed us to expose more data from the same endpoints. In our upcoming releases, we'll be building on this knowledge to support more advanced features.
Here are the full release notes.
Highlights
- Adds shims to support the Google Fit and Misfit APIs.
- Exposes more data from existing shims, including calories and body mass index.
- Refactors shims to expose full data points with metadata, not just measures.
- Separates mapping logic from API logic, allowing the conversion of third-party data to be tested in isolation.
- Rewrites the mappers to use the Java schema SDK.
- Creates a data point mapper hierarchy to simplify writing mapping logic for new and existing APIs.
- Adds hundreds of unit tests to check that mappers produce correct data in an Open mHealth compliant format.
- Migrates to Java 8 and transitions time classes from Joda to Java 8.
Devops improvements
- Adds Docker Compose support to simplify deployments.
- Adds Docker Machine support to enable deployments to multiple cloud platforms including AWS, Azure, GCE, Rackspace, and more.
- Reworks installation instructions to leverage Docker Compose and Docker Machine.
- Adds shell scripts to simplify building and running both natively and with Docker Compose.
- Switches to TestNG for parameterized unit test support.
- Sets up TravisCI for continuous integration.
- Switches from Maven Central to JCenter for faster builds.
- Upgrades to Gradle 2.5.
- Bumps all dependencies to latest stable releases.
APIs
- Adds support for Google Fit.
- Add support for Misfit.
- Disables support for HealthVault. The future of HealthVault is currently unclear with the advent of the Microsoft Health API.
We decided to hold off on researching the API, refactoring the shim to use the schema SDK, and implementing the mapper architecture until HealthVault's viability is confirmed to avoid throwaway work. - Adds Markdown files for each API with information gathered from our research, to serve as a reference and knowledge base.
- These files are still in draft form, but will become more polished over time.
Fitbit
- Removes the
heart
endpoint because heart rate data can now only be retrieved using OAuth 2.0 authentication, which is still in beta. - Removes the
blood_glucose
andblood_pressure
endpoints because they have been deprecated by Fitbit. - Adds endpoints for
body_mass_index
andsleep
. - Changes the
steps
endpoint to retrieve daily step counts instead of intraday step counts because the time series endpoints on the Fitbit API are currently in flux.
Google Fit
- Adds endpoints for
activity
,body_weight
,body_height
,step_count
,calories_burned
,heart_rate
.
Jawbone
- Separates the
body
endpoint intoweight
andbody_mass_index
endpoints. - Renames the
moves
endpoint tosteps
to reflect the data that is retrieved from the endpoint and for consistency with other APIs. - Renames the
workouts
endpoint toactivity
to reflect the data that is retrieved from the endpoint and for consistency with other APIs. - Adds a
heart_rate
endpoint.
Misfit
- Adds endpoints for
steps
,sleep
, andactivities
.
Runkeeper
- Removes the
weight
endpoint due to a lack of time zone information in the Runkeeper response. - Adds a
calories
endpoint that retrieves calories burned data. - Updates the shim to only retrieve data created by the Runkeeper platform instead of any data on their HealthGraph API, which may come from 3rd parties and be missing time zone information.
Withings
- Separates the
body
endpoint into endpoints for individual measures in Withings responses, namely- a
blood_pressure
endpoint. - a
body_height
endpoint. - a
body_weight
endpoint. - a
heart_rate
endpoint.
- a
- Renames the
intraday
endpoint tosteps
to reflect the data that it retrieves and to capture the nuance that steps can be retrieved at different granularities depending on the access level of the client's API credentials. - Adds a
calories
endpoint that retrieves calories burned data.
Bug fixes
- Fixes the
normalize
parameter of the API and turns it on by default. - Adopts Spring's
UriComponentsBuilder
for URI request creation to prevent URL encoding bugs. - Fixes a number of small issues.
v0.2.2
- Removed Maven build, leaving Gradle as the resource server build system. (#15)
- Updated DTOs to better reflect Open mHealth schemas, specifically the renaming of the
TimeInterval
fieldsstart_time
andend_time
tostart_date_time
andend_date_time
, respectively.
Withings
- Filtered out
awake
state sleep data. - Filtered out goal data.
Fitbit
- Added support for the public API, in addition to the partner API. (#11,#12)
- Intraday step data is retrieved from the partner API, daily aggregates are retrieved from the public API.
- Optimised weight data retrieval to use a single API call instead of an API call per day.
RunKeeper
- Read newly added timezone data from summary API calls. (#3)