{"name":"Garmin GPX API","version":"2.0.0","description":"API for downloading and uploading GPX files for Garmin activities","endpoints":{"list_activities":"/activities","get_activity_ids":"/activities/ids","get_activity_stats":"/activities/stats","get_bulk_info":"/activities/bulk-info","download_gpx":"/activities/{activity_id}/gpx (requires auth + gpx-downloader role)","activity_info":"/activities/{activity_id}/info","upload_gpx":"/upload/gpx (POST, requires auth + gpx-uploader role)","auth_config":"/auth/config","current_user":"/auth/me (requires auth)","health_check":"/health","api_docs":"/docs","openapi_spec":"/openapi.json"},"usage_examples":{"list_all_activities":"GET /activities?owner=helge","list_activities_with_gpx":"GET /activities?owner=helge&has_gpx_only=true","get_activity_ids":"GET /activities/ids?owner=helge","get_activity_info":"GET /activities/12345678/info?owner=helge","download_gpx":"GET /activities/12345678/gpx (with Bearer token)","get_stats":"GET /activities/stats?owner=helge","get_bulk_info":"GET /activities/bulk-info?owner=helge","upload_gpx":"POST /upload/gpx (multipart/form-data with 'file' field)","get_auth_config":"GET /auth/config","get_current_user":"GET /auth/me"},"parameters":{"owner":{"description":"Filter activities by owner/user","default":"helge","applies_to":["activities","activities/ids","activities/stats","activities/bulk-info","activities/{id}/info"]}},"authentication":{"type":"Bearer JWT (Keycloak)","roles":{"gpx-downloader":"Required to download GPX files","gpx-uploader":"Required to upload GPX files"},"note":"Activity listing is public. Download and upload require authentication."}}