Files
fittrack/GarminSync_API_SPEC.json
2025-12-18 09:22:56 -08:00

1 line
5.7 KiB
JSON

{"openapi":"3.1.0","info":{"title":"GarminSync Backend","version":"0.1.0"},"paths":{"/api/sync/garmin/activities":{"post":{"tags":["Garmin Sync"],"summary":"Trigger Garmin Activity Sync","description":"Trigger Garmin Connect Activity Synchronization","operationId":"trigger_garmin_activity_sync_api_sync_garmin_activities_post","parameters":[{"name":"max_activities_to_sync","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":10,"title":"Max Activities To Sync"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivitySyncRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sync/garmin/workouts":{"post":{"tags":["Garmin Sync"],"summary":"Upload Garmin Workout","description":"Upload a workout to Garmin Connect","operationId":"upload_garmin_workout_api_sync_garmin_workouts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkoutUploadRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sync/garmin/health":{"post":{"tags":["Garmin Sync"],"summary":"Trigger Garmin Health Sync","description":"Trigger Garmin Connect Health Metrics Synchronization","operationId":"trigger_garmin_health_sync_api_sync_garmin_health_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sync/garmin/sync/status":{"get":{"tags":["Garmin Sync"],"summary":"Get Garmin Sync Status","description":"Retrieve the current status of the single active synchronization job.","operationId":"get_garmin_sync_status_api_sync_garmin_sync_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncJob"}}}}}}},"/api/garmin/login":{"post":{"tags":["Garmin Auth"],"summary":"Garmin Login","description":"Authenticate with Garmin Connect using username and password.\nStores Garmin credentials and authentication tokens in the CentralDB.","operationId":"garmin_login_api_garmin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GarminLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GarminLoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/logout":{"post":{"summary":"Logout","operationId":"logout_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/background-test":{"post":{"summary":"Run Background Test","operationId":"run_background_test_background_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"ActivitySyncRequest":{"properties":{"force_resync":{"type":"boolean","title":"Force Resync","description":"If true, re-download activities even if they exist. Defaults to false.","default":false},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Optional start date (YYYY-MM-DD) to sync activities from. If not provided, syncs recent activities."},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"Optional end date (YYYY-MM-DD) to sync activities up to."}},"type":"object","title":"ActivitySyncRequest"},"GarminLoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"GarminLoginRequest"},"GarminLoginResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"GarminLoginResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SyncJob":{"properties":{"status":{"type":"string","enum":["pending","in_progress","completed","failed"],"title":"Status","default":"pending"},"progress":{"type":"number","title":"Progress","default":0.0},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"job_type":{"anyOf":[{"type":"string","enum":["activities","health","workouts"]},{"type":"null"}],"title":"Job Type"}},"type":"object","title":"SyncJob"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkoutUploadRequest":{"properties":{"workout_id":{"type":"integer","title":"Workout Id","description":"The ID of the workout to upload from CentralDB."}},"type":"object","required":["workout_id"],"title":"WorkoutUploadRequest"}}}}