Unified Marketplace

What is the Unified Marketplace?

🚧

Configuration Required

The Unified Marketplace requires configuration by the Validic Support team to fully function. Please reach out to our team for assistance.

The Unified Marketplace is where users browse and connect health apps and devices so their data will be available to your system. The Unified Marketplace is one of three "flavors" of the Marketplace and it supports Mobile, Cloud, and Cellular sources.

In case you're curious about the other two "flavors", the Standard Marketplace is a Inform API JSON endpoint that returns all of the details you will need to build your own marketplace or connection list. And using the results you get from the Custom Marketplace, you can build your own user experience for cloud and cellular sources that is styled the way you want.

However, if you're looking to support sources that are included in the Inform SDK, such as Bluetooth LE devices, VitalSnap, Apple Health, or Health Connect, then the Unified Marketplace will provide you with JSON to allow you to build your own user experience. The JSON from the Unified Marketplace is the same data we use to build our Custom Marketplace, but with mobile data added in.

📘

Mobile sources use the Inform SDK

You must be a mobile client using the Inform SDK (v2.x) in order to use the Unified Marketplace. You may use the Native SDKs or any of our supported wrappers.

Note that all interactions with mobile sources will use the Inform SDK. The Unified Marketplace is simply providing a list of configured cloud, cellular, and mobile sources for your org.

You must use the Bluetooth, VitalSnap, Apple Health, or Health Connect modules/frameworks for the actual functionality of connecting to and syncing data from mobile sources.

You have full control to build the behavior that your users will need -- just keep in mind that users will still need to be routed to the appropriate source for Mobile and Cloud connections. Also be aware that once the user is redirected to a cloud source, the user experience is then controlled by the source.


What is the User Experience like?

The user experience is whatever you'd like it to be. Since Inform is simply providing you with details in a JSON format, you can use those details -- plus any that you want to add -- to create a connection workflow that works best for your users. All the styling and behavior is built by you.

If you'd like to get an idea of what a typical workflow might look like, then have a look at how our documentation for our HealthBridge app, which combines Cloud and Mobile sources.


Guide the user through the connection of their Mobile, Cellular, and Cloud Sources using the Unified Marketplace details to power your user experience, then be sure to display feedback to them (a success or failure) based on the response you get to your redirect uri (for cloud and cellular sources) or the mobile SDK (for mobile sources).

If your user ever needs to disconnect from a cloud or cellular source, they will need to navigate back to the Unified Marketplace where you should display a Disconnect button for any connected cloud or cellular sources. You'll be able to tell whether a cloud or cellular source is connected or not from the JSON returned by the Unified Marketplace.

❗️

Please plan your user documentation and user experience so that users can get back to the Unified Marketplace to disconnect, when appropriate.


How do I use the Unified Marketplace?

The Unified Marketplace JSON can be requested from the /unified endpoint by adding &format=json to the end of the user's marketplace URL, which you can get from the user's profile.

For example, if the user's marketplace url is:

https://syncmydevice.com?token=4deee4c7c81e9b652d22c8999beaf7c972daa513c6cf6aaa6af636f8117bf929

then that user's Unified Marketplace can be accessed at:

https://syncmydevice.com/unified?token=4deee4c7c81e9b652d22c8999beaf7c972daa513c6cf6aaa6af636f8117bf929&format=json

BUT you're not done yet...because....

🚧

Redirect URI is Required

When using the Unified Marketplace, clients must append a redirect_uri query parameter to the connect_url and disconnect_url provided in the Unified Marketplace JSON response.

The redirect_uri ensures that users are properly redirected following a cloud connection process, otherwise, the user will be redirected to the Standard Marketplace and not your super awesome unified connection experience.

Any redirect_uri that you specify must begin with https:// or the resulting URL will fail. You should also url-encode your uri.

Here's an example of how to indicate the redirect_uri for a connection. In this example the user will be redirected to https://www.google.com (don't do this, of course -- this is just an example):

https://syncmydevice.com/unified?token=4deee4c7c81e9b652d22c8999beaf7c972daa513c6cf6aaa6af636f8117bf929&format=json&redirect_uri=https%3A%2F%2Fwww.google.com

Last, be sure that you can handle the status parameter that we'll append to your redirect_uri so that you'll know if the cloud or cellular connection succeeded or failed and you can guide the user appropriately.

This parameter is only present for cloud and cellular sources. Mobile sources will use the listeners in the Inform SDK to provide you with status information.


What Does the Unified Marketplace look like?

Whatever you like! You're going to be building the user experience and styling it however you'd like.

Here's an example of what you get from the Unified Marketplace. These details will help you with your display so that you don't have to go hunt down a bunch of info like source name, logo images, and the like. We'll maintain all of this info for you.

You just have to build the user experience to display what you want from this info and route the user properly for connections and disconnections.

https://syncmydevice.com/unified?token=ae4fdfd364e42137af14b207eSAMPLEbcdefaae7b99e3e49361SAMPLE1eb0d&format=json&redirect_uri=https%3A%2F%2Fwww.google.com
{
  "unified_sources": [
  {
      "connection_status": "unknown",
      "device_types": [
        "blood_pressure_monitor"
      ],
      "display_name": "A&D UA-656BLE Blood Pressure Monitor",
      "images": {
        "logo_url": null,
        "device_image_url": "https://assets.validic.com/mobile/peripheral/640/A_D-Medical-UA-656.png"
      },
      "implementation_data": {
        "peripheral_id": "49"
      },
      "implementation_type": "bluetooth",
      "type": "a_and_d_ua656ble_blood_pressure_monitor"
    },
    {
      "connection_status": "connected",
      "device_types": [
        "continuous_glucose_monitor"
      ],
      "display_name": "Dexcom",
      "images": {
        "logo_url": "https://assets.prod.validic.com/cmapi/images/sources/dexcom.png",
        "device_image_url": null
      },
      "implementation_data": {
        "connect_url": "https://syncmydevice.com/connect/dexcom?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "disconnect_url": "https://syncmydevice.com/auth/dexcom/disconnect?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "supports_direct_connect": false
      },
      "implementation_type": "cloud",
      "type": "dexcom"
    },
    {
      "connection_status": "disconnected",
      "device_types": [
        "daily_activity_tracker",
        "workout_tracker",
        "sleep_tracker",
        "blood_pressure_monitor",
        "weight_scale"
      ],
      "display_name": "Garmin Connect",
      "images": {
        "logo_url": "https://assets.prod.validic.com/cmapi/images/sources/garmin.png",
        "device_image_url": null
      },
      "implementation_data": {
        "connect_url": "https://syncmydevice.com/connect/garmin?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "disconnect_url": "https://syncmydevice.com/auth/garmin/disconnect?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "supports_direct_connect": false
      },
      "implementation_type": "cloud",
      "type": "garmin"
    },
    {
      "connection_status": "connected",
      "device_types": [
        "blood_pressure_monitor",
        "blood_glucose_meter",
        "pulse_oximeter",
        "weight_scale"
      ],
      "display_name": "Smart Meter",
      "images": {
        "logo_url": "https://assets.prod.validic.com/cmapi/images/sources/smart_meter.png",
        "device_image_url": null
      },
      "implementation_data": {
        "connect_url": "https://syncmydevice.com/connect/smart_meter?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "disconnect_url": "https://syncmydevice.com/auth/smart_meter/disconnect?token=0bf4cefea44b8b55dd0b78341fc333dcb81396387306946f131d9b7290fbc8ef",
        "supports_direct_connect": true
      },
      "implementation_type": "cellular",
      "type": "smart_meter"
    },
    {
      "connection_status": "unknown",
      "device_types": [
        "daily_activity_tracker",
        "workout_tracker",
        "sleep_tracker",
        "nutrition_tracker",
        "continuous_glucose_monitor",
        "blood_pressure_monitor",
        "blood_glucose_meter",
        "thermometer",
        "pulse_oximeter",
        "weight_scale",
        "peak_flow_meter",
        "spirometer",
        "heart_rate_monitor",
        "inr_meter"
      ],
      "display_name": "Validic Mobile Apple Health",
      "images": {
        "logo_url": "https://assets.prod.validic.com/cmapi/images/sources/apple_health.png",
        "device_image_url": "https://assets.prod.validic.com/cmapi/images/sources/apple_health.png"
      },
      "implementation_type": "aggregator",
      "type": "apple_health"
    }
  ],
  "meta": {
    "total": 5
  }
}