{"message":"Todo API","version":"2.0.0","documentation":"/openapi","endpoints":{"health":{"health":"GET /health","ready":"GET /health/ready","live":"GET /health/live"},"auth":{"signUp":"POST /api/auth/sign-up/email","signIn":"POST /api/auth/sign-in/email","signOut":"POST /api/auth/sign-out","getSession":"GET /api/auth/session","googleSignIn":"GET /api/auth/sign-in/google","googleCallback":"GET /api/auth/callback/google"},"todos":{"list":"GET /todos","get":"GET /todos/:id","create":"POST /todos","update":"PATCH /todos/:id","delete":"DELETE /todos/:id"},"profile":{"get":"GET /profile","create":"POST /profile","update":"PATCH /profile","replace":"PUT /profile","delete":"DELETE /profile","weightHistory":"GET /profile/weight-history","addWeight":"POST /profile/weight-history","deleteWeight":"DELETE /profile/weight-history/:id"},"exercises":{"list":"GET /exercises","get":"GET /exercises/:id","create":"POST /exercises","batchCreate":"POST /exercises/batch","update":"PATCH /exercises/:id","delete":"DELETE /exercises/:id"},"routines":{"list":"GET /routines","get":"GET /routines/:id","create":"POST /routines","update":"PUT /routines/:id","delete":"DELETE /routines/:id"},"sessions":{"list":"GET /sessions","byDate":"GET /sessions/date/:date","active":"GET /sessions/active","startBlank":"POST /sessions/blank/start"},"habits":{"list":"GET /habits","listWithStats":"GET /habits?stats=true","get":"GET /habits/:id","create":"POST /habits","update":"PATCH /habits/:id","delete":"DELETE /habits/:id","stats":"GET /habits/:id/stats","entries":"GET /habits/:id/entries","createEntry":"POST /habits/:id/entries","updateEntry":"PATCH /habits/:id/entries/:date","deleteEntry":"DELETE /habits/:id/entries/:date"},"foods":{"list":"GET /foods (with overrides)","get":"GET /foods/:id (with overrides)","create":"POST /foods","update":"PUT /foods/:id (smart: base or override)","delete":"DELETE /foods/:id (owned only)","batchImport":"POST /foods/batch"},"recipes":{"list":"GET /recipes","get":"GET /recipes/:id","create":"POST /recipes","update":"PATCH /recipes/:id","delete":"DELETE /recipes/:id"},"meals":{"list":"GET /meals","get":"GET /meals/:id","create":"POST /meals","update":"PUT /meals/:id","delete":"DELETE /meals/:id"},"logger":{"today":"GET /logger","byDate":"GET /logger?date=YYYY-MM-DD","byRange":"GET /logger?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD"},"dailyNotes":{"get":"GET /daily-notes/:date","upsert":"PUT /daily-notes/:date"},"strava":{"status":"GET /strava/status","authUrl":"GET /strava/auth-url","callback":"POST /strava/callback","activities":"GET /strava/activities","import":"POST /strava/import/:activityId","disconnect":"DELETE /strava/disconnect"},"garmin":{"status":"GET /garmin/status","authUrl":"GET /garmin/auth-url","callback":"POST /garmin/callback","activities":"GET /garmin/activities","import":"POST /garmin/import/:activityId","importBulk":"POST /garmin/import/bulk","disconnect":"DELETE /garmin/disconnect"},"fitbit":{"status":"GET /fitbit/status","authUrl":"GET /fitbit/auth-url","callback":"POST /fitbit/callback","activities":"GET /fitbit/activities","import":"POST /fitbit/import/:activityId","importBulk":"POST /fitbit/import/bulk","disconnect":"DELETE /fitbit/disconnect"},"healthPush":{"push":"POST /health-push","list":"GET /health-push"},"analytics":{"dashboard":"GET /analytics/dashboard","workoutFrequency":"GET /analytics/workouts/frequency","workoutVolume":"GET /analytics/workouts/volume","muscleGroups":"GET /analytics/workouts/muscle-groups","consistency":"GET /analytics/workouts/consistency","strengthProgress":"GET /analytics/strength/progress","prs":"GET /analytics/strength/prs","topExercises":"GET /analytics/strength/top-exercises","calories":"GET /analytics/nutrition/calories","macros":"GET /analytics/nutrition/macros","adherence":"GET /analytics/nutrition/adherence","weight":"GET /analytics/body/weight","measurements":"GET /analytics/body/measurements","goalProgress":"GET /analytics/body/goal-progress","habitsCompletion":"GET /analytics/habits/completion","habitsStreaks":"GET /analytics/habits/streaks"},"social":{"createPost":"POST /social/posts","getPost":"GET /social/posts/:postId","updatePost":"PUT /social/posts/:postId","deletePost":"DELETE /social/posts/:postId","feed":"GET /social/feed","userFeed":"GET /social/feed/user/:userId","friends":"GET /social/friends","incomingRequests":"GET /social/friends/requests/incoming","outgoingRequests":"GET /social/friends/requests/outgoing","sendRequest":"POST /social/friends/request","acceptRequest":"POST /social/friends/accept/:friendshipId","rejectRequest":"POST /social/friends/reject/:friendshipId","removeFriend":"DELETE /social/friends/:friendshipId","blockUser":"POST /social/friends/block/:userId","unblockUser":"DELETE /social/friends/block/:userId","searchUsers":"GET /social/friends/search?q=","createComment":"POST /social/posts/:postId/comments","getComments":"GET /social/posts/:postId/comments","deleteComment":"DELETE /social/comments/:commentId","likePost":"POST /social/posts/:postId/like","unlikePost":"DELETE /social/posts/:postId/like"},"sharing":{"createShare":"POST /sharing/create","myShares":"GET /sharing/my-shares","deleteShare":"DELETE /sharing/:shareCode","viewPublicShare":"GET /public/share/:shareCode","importShare":"POST /public/share/:shareCode/import"},"subscription":{"status":"GET /subscription/status","linkRevenueCat":"POST /subscription/link-revenuecat","webhook":"POST /webhooks/revenuecat"}}}