{"message":"Enami Backend API","version":"1.0.0","endpoints":{"auth":{"login":"GET /auth/strava/mobile?expo_redirect_uri=<uri>&deviceId=<id>","callback":"GET /auth/strava/mobile/callback","logout":"GET /auth/strava/mobile/logout?athlete_id=<id>&deviceId=<id>","refresh":"POST /auth/strava/mobile/refresh-token"},"activities":{"getMyActivities":"GET /api/activities/me (requires Bearer token)"},"athletes":{"trainingLoad":"GET /api/athletes/training-load/me (requires Bearer token)","recommendations":"GET /api/athletes/recommendations/me (requires Bearer token)"},"trainingLoad":{"scores":"GET /api/training-load/scores/me (requires Bearer token)","metrics":"GET /api/training-load/metrics/me (requires Bearer token)","current":"GET /api/training-load/current/me (requires Bearer token)","recalculate":"POST /api/training-load/recalculate/me (requires Bearer token)","thresholds":{"get":"GET /api/training-load/thresholds/me (requires Bearer token)","update":"PUT /api/training-load/thresholds/me (requires Bearer token)"}},"subscriptions":{"verify":"POST /api/subscriptions/verify (requires Bearer token)","get":"GET /api/subscriptions/me (requires Bearer token)","history":"GET /api/subscriptions/history?limit=50 (requires Bearer token)"},"pushToken":{"register":"POST /api/push-token (requires Bearer token)","delete":"DELETE /api/push-token (requires Bearer token)"},"explanation":{"generate":"POST /api/explanation (requires Bearer token)","status":"GET /api/explanation/status"},"webhook":{"stravaVerify":"GET /webhook","stravaEvents":"POST /webhook","revenueCat":"POST /webhook/revenuecat","revenueCatTest":"POST /webhook/revenuecat/test/:athleteId (requires Bearer token)"}}}