Get Providers
GET /api/v1/oauth/providers
Retrieve list of available wearable providers with their configuration and metadata.
Query Parameters
Return only providers that are currently enabled by the administrator
Return only providers that support cloud OAuth API (excludes SDK-based providers like Apple Health)
Response
Returns an array of provider configuration objects.
Provider identifier (e.g., garmin, polar, strava)
Human-readable display name (e.g., “Garmin”, “Polar Flow”)
Whether provider uses cloud OAuth API (true) or SDK-based authentication (false)
Whether provider is enabled by administrator. Disabled providers cannot be used for new connections.
URL to provider’s icon/logo image
Examples
cURL - All Providers
cURL - Enabled OAuth Providers
Python
JavaScript
curl -X GET "https://api.openwearables.com/api/v1/oauth/providers" \
-H "Authorization: Bearer YOUR_API_KEY"
Response Example
[
{
"provider" : "garmin" ,
"name" : "Garmin" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/garmin.png"
},
{
"provider" : "polar" ,
"name" : "Polar Flow" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/polar.png"
},
{
"provider" : "apple" ,
"name" : "Apple Health" ,
"has_cloud_api" : false ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/apple.png"
},
{
"provider" : "strava" ,
"name" : "Strava" ,
"has_cloud_api" : true ,
"is_enabled" : false ,
"icon_url" : "https://api.openwearables.com/static/providers/strava.png"
}
]
Update Provider Status
PUT /api/v1/oauth/providers/{provider}
Update the enabled status for a single provider. Requires developer authentication.
Path Parameters
Provider identifier to update (e.g., garmin, polar, strava)
Request Body
Whether to enable or disable the provider
Response
Returns the updated provider configuration.
Examples
curl -X PUT "https://api.openwearables.com/api/v1/oauth/providers/strava" \
-H "Authorization: Bearer YOUR_DEVELOPER_KEY" \
-H "Content-Type: application/json" \
-d '{
"is_enabled": true
}'
Response Example
{
"provider" : "strava" ,
"name" : "Strava" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/strava.png"
}
Error Responses
404 Not Found
Provider does not exist:
{
"detail" : "Provider 'invalid_provider' not found"
}
401 Unauthorized
Missing or invalid developer authentication:
{
"detail" : "Not authenticated"
}
Bulk Update Providers
PUT /api/v1/oauth/providers
Update enabled status for multiple providers at once. This is the primary endpoint used by the admin UI. Requires developer authentication.
Request Body
Map of provider identifiers to enabled status. Only providers included in the map will be updated.
Response
Returns array of all updated provider configurations.
Examples
curl -X PUT "https://api.openwearables.com/api/v1/oauth/providers" \
-H "Authorization: Bearer YOUR_DEVELOPER_KEY" \
-H "Content-Type: application/json" \
-d '{
"providers": {
"garmin": true,
"polar": true,
"strava": false,
"oura": true
}
}'
Response Example
[
{
"provider" : "garmin" ,
"name" : "Garmin" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/garmin.png"
},
{
"provider" : "polar" ,
"name" : "Polar Flow" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/polar.png"
},
{
"provider" : "strava" ,
"name" : "Strava" ,
"has_cloud_api" : true ,
"is_enabled" : false ,
"icon_url" : "https://api.openwearables.com/static/providers/strava.png"
},
{
"provider" : "oura" ,
"name" : "Oura Ring" ,
"has_cloud_api" : true ,
"is_enabled" : true ,
"icon_url" : "https://api.openwearables.com/static/providers/oura.png"
},
{
"provider" : "whoop" ,
"name" : "WHOOP" ,
"has_cloud_api" : true ,
"is_enabled" : false ,
"icon_url" : "https://api.openwearables.com/static/providers/whoop.png"
}
]
Error Responses
401 Unauthorized
Missing or invalid developer authentication:
{
"detail" : "Not authenticated"
}
422 Validation Error
Invalid request body:
{
"detail" : [
{
"type" : "missing" ,
"loc" : [ "body" , "providers" ],
"msg" : "Field required"
}
]
}
Supported Providers
Current list of supported wearable data providers:
Provider Identifier OAuth API SDK-Based Apple Health apple✓ Samsung Health samsung✓ Google Fit google✓ Garmin Connect garmin✓ Polar Flow polar✓ Suunto suunto✓ WHOOP whoop✓ Strava strava✓ Oura Ring oura✓
Provider States
Enabled : Provider can be used for new user connections and existing connections will continue syncing.Disabled : New connections cannot be created, but existing connections remain active and continue syncing. Use this when you need to temporarily restrict new connections without affecting existing users.
OAuth (Cloud API) : Provider supports server-to-server OAuth authentication. Users authorize through a web browser, and the API can fetch data from the provider’s cloud service.SDK-Based : Provider requires native mobile SDK integration (e.g., Apple HealthKit, Samsung Health SDK). Data is synced directly from the user’s device.
Use Cases
Display OAuth Providers to Users
Get only enabled providers that support OAuth:
oauth_providers = httpx.get(
"https://api.openwearables.com/api/v1/oauth/providers" ,
params = { "enabled_only" : True , "cloud_only" : True },
headers = { "Authorization" : "Bearer YOUR_API_KEY" }
).json()
# Display to user as connection options
for provider in oauth_providers:
print ( f "Connect to { provider[ 'name' ] } " )
Admin Dashboard
Manage all provider settings:
# Get current state
providers = httpx.get(
"https://api.openwearables.com/api/v1/oauth/providers" ,
headers = { "Authorization" : "Bearer YOUR_DEVELOPER_KEY" }
).json()
# Update multiple providers
updates = {p[ "provider" ]: p[ "is_enabled" ] for p in providers}
updates[ "strava" ] = True # Enable Strava
updates[ "whoop" ] = False # Disable WHOOP
httpx.put(
"https://api.openwearables.com/api/v1/oauth/providers" ,
json = { "providers" : updates},
headers = { "Authorization" : "Bearer YOUR_DEVELOPER_KEY" }
)
Notes
Provider icons are hosted at /static/providers/{provider}.png
Disabling a provider does not disconnect existing users
Provider metadata (name, icon, has_cloud_api) is read-only
Only is_enabled status can be modified via the API
Developer authentication is required for update operations