{"openapi":"3.1.0","info":{"title":"Honedly Public API","version":"1.0.0","description":"The Honedly public/partner API. Every endpoint is token-only: send `Authorization: Bearer <jwt>` where the JWT is an IdP-issued (sso.honedly.com) EdDSA token — a first-party session token, or a partner OAuth **id_token**. Scoped endpoints additionally require the named OAuth scope.","contact":{"name":"Honedly","url":"https://honedly.com"}},"servers":[{"url":"https://api.honedly.com","description":"Production"}],"tags":[{"name":"me","description":"The authenticated user's own data (meals, workouts, progress)."},{"name":"ai","description":"AI Coach chat + macro estimation (Pro / Pro+, `ai:write`)."}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"An EdDSA JWT issued by sso.honedly.com and verified offline against its JWKS. A first-party session token (from GET /api/auth/token) carries no scopes — it authorizes only GET /api/v1/me. Partner integrations present the OIDC **id_token** whose `scope` claim grants the read/AI scopes."}},"schemas":{"MealType":{"type":"string","enum":["breakfast","lunch","dinner","shake","snack"]},"MealItem":{"type":"object","properties":{"fdcId":{"anyOf":[{"type":"number"},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":200},"grams":{"type":"number","minimum":0,"maximum":5000},"calories":{"type":"number","minimum":0,"maximum":10000},"protein":{"type":"number","minimum":0,"maximum":1000},"carbs":{"type":"number","minimum":0,"maximum":1000},"fat":{"type":"number","minimum":0,"maximum":1000},"fiber":{"anyOf":[{"type":"number","minimum":0,"maximum":500},{"type":"null"}]},"sugar":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"saturatedFat":{"anyOf":[{"type":"number","minimum":0,"maximum":500},{"type":"null"}]},"sodium":{"anyOf":[{"type":"number","minimum":0,"maximum":50000},{"type":"null"}]},"potassium":{"anyOf":[{"type":"number","minimum":0,"maximum":50000},{"type":"null"}]},"calcium":{"anyOf":[{"type":"number","minimum":0,"maximum":20000},{"type":"null"}]},"iron":{"anyOf":[{"type":"number","minimum":0,"maximum":500},{"type":"null"}]},"vitaminA":{"anyOf":[{"type":"number","minimum":0,"maximum":50000},{"type":"null"}]},"vitaminC":{"anyOf":[{"type":"number","minimum":0,"maximum":20000},{"type":"null"}]},"vitaminD":{"anyOf":[{"type":"number","minimum":0,"maximum":1000},{"type":"null"}]},"cholesterol":{"anyOf":[{"type":"number","minimum":0,"maximum":10000},{"type":"null"}]}},"required":["fdcId","name","grams","calories","protein","carbs","fat"],"additionalProperties":false},"Meal":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/MealType"},"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"fiber":{"anyOf":[{"type":"number"},{"type":"null"}]},"sugar":{"anyOf":[{"type":"number"},{"type":"null"}]},"saturatedFat":{"anyOf":[{"type":"number"},{"type":"null"}]},"sodium":{"anyOf":[{"type":"number"},{"type":"null"}]},"items":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/MealItem"}},{"type":"null"}]},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","name","type","calories","protein","carbs","fat","loggedAt"],"additionalProperties":false},"MealTemplate":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/MealType"},"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"items":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/MealItem"}},{"type":"null"}]}},"required":["id","name","type","calories","protein","carbs","fat"],"additionalProperties":false},"MealsListResponse":{"type":"object","properties":{"meals":{"type":"array","items":{"$ref":"#/components/schemas/Meal"}}},"required":["meals"],"additionalProperties":false},"MealCreateResponse":{"type":"object","properties":{"meal":{"$ref":"#/components/schemas/Meal"},"newlyUnlocked":{"type":"array","items":{"type":"string"}}},"required":["meal","newlyUnlocked"],"additionalProperties":false},"MealUpdateResponse":{"type":"object","properties":{"meal":{"$ref":"#/components/schemas/Meal"}},"required":["meal"],"additionalProperties":false},"OkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"MealTemplatesResponse":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/MealTemplate"}}},"required":["templates"],"additionalProperties":false},"MealTemplateCreateBody":{"type":"object","properties":{"name":{"type":"string"},"type":{"$ref":"#/components/schemas/MealType"},"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"items":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/MealItem"}},{"type":"null"}]}},"required":["name","type","calories","protein","carbs","fat"],"additionalProperties":false},"MealTemplateCreateResponse":{"type":"object","properties":{"template":{"$ref":"#/components/schemas/MealTemplate"}},"required":["template"],"additionalProperties":false},"MealTemplateLogResponse":{"type":"object","properties":{"meal":{"$ref":"#/components/schemas/Meal"}},"required":["meal"],"additionalProperties":false},"CopyYesterdaySuccess":{"type":"object","properties":{"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["created"],"additionalProperties":false},"CopyYesterdayConflict":{"type":"object","properties":{"needsConfirm":{"type":"boolean"},"existingToday":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["needsConfirm","existingToday","available"],"additionalProperties":false},"ParsedMealItem":{"type":"object","properties":{"name":{"type":"string"},"grams":{"type":"number"},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"fiber":{"anyOf":[{"type":"number"},{"type":"null"}]},"sugar":{"anyOf":[{"type":"number"},{"type":"null"}]},"saturatedFat":{"anyOf":[{"type":"number"},{"type":"null"}]},"sodium":{"anyOf":[{"type":"number"},{"type":"null"}]},"potassium":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcium":{"anyOf":[{"type":"number"},{"type":"null"}]},"iron":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminA":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminC":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminD":{"anyOf":[{"type":"number"},{"type":"null"}]},"cholesterol":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["name","grams","calories","protein","carbs","fat"],"additionalProperties":false},"ParsedMeal":{"type":"object","properties":{"suggestedName":{"type":"string"},"mealType":{"$ref":"#/components/schemas/MealType"},"items":{"type":"array","items":{"$ref":"#/components/schemas/ParsedMealItem"}},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["suggestedName","mealType","items"],"additionalProperties":false},"ParsedMealResponse":{"type":"object","properties":{"meal":{"$ref":"#/components/schemas/ParsedMeal"}},"required":["meal"],"additionalProperties":false},"Per100g":{"type":"object","properties":{"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"fiber":{"anyOf":[{"type":"number"},{"type":"null"}]},"sugar":{"anyOf":[{"type":"number"},{"type":"null"}]},"saturatedFat":{"anyOf":[{"type":"number"},{"type":"null"}]},"sodium":{"anyOf":[{"type":"number"},{"type":"null"}]},"potassium":{"anyOf":[{"type":"number"},{"type":"null"}]},"calcium":{"anyOf":[{"type":"number"},{"type":"null"}]},"iron":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminA":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminC":{"anyOf":[{"type":"number"},{"type":"null"}]},"vitaminD":{"anyOf":[{"type":"number"},{"type":"null"}]},"cholesterol":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"Food":{"type":"object","properties":{"fdcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"per100g":{"$ref":"#/components/schemas/Per100g"},"defaultGrams":{"anyOf":[{"type":"number"},{"type":"null"}]},"foodCategory":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["fdcId","name","source","per100g"],"additionalProperties":false},"FoodSearchResponse":{"type":"object","properties":{"foods":{"type":"array","items":{"$ref":"#/components/schemas/Food"}},"source":{"type":"string"}},"required":["foods","source"],"additionalProperties":false},"BarcodeResponse":{"type":"object","properties":{"food":{"$ref":"#/components/schemas/Food"}},"required":["food"],"additionalProperties":false},"LabelResult":{"type":"object","properties":{"ok":{"type":"boolean"},"productName":{"anyOf":[{"type":"string"},{"type":"null"}]},"kcalPerServing":{"anyOf":[{"type":"number"},{"type":"null"}]},"proteinG":{"anyOf":[{"type":"number"},{"type":"null"}]},"carbsG":{"anyOf":[{"type":"number"},{"type":"null"}]},"fatG":{"anyOf":[{"type":"number"},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["ok"],"additionalProperties":false},"LabelScanResponse":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/LabelResult"}},"required":["result"],"additionalProperties":false},"RestaurantResult":{"type":"object","properties":{"name":{"type":"string"},"restaurant":{"anyOf":[{"type":"string"},{"type":"null"}]},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"servingDescription":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","calories","protein","carbs","fat"],"additionalProperties":false},"RestaurantLookupResponse":{"type":"object","properties":{"result":{"$ref":"#/components/schemas/RestaurantResult"}},"required":["result"],"additionalProperties":false},"Entitlement":{"type":"string","enum":["free","pro","pro_plus"]},"TwoFactorMethod":{"type":"string","enum":["totp","email","recovery"]},"NativeLoginResponse":{"type":"object","properties":{"token":{"type":"string"},"pending2FA":{"type":"boolean"},"mustEnroll2FA":{"type":"boolean"}},"required":["token","pending2FA","mustEnroll2FA"],"additionalProperties":false},"TwoFactorVerifyResponse":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":false},"MeUser":{"type":"object","properties":{"id":{"type":"string"},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailVerified":{"type":"boolean"},"sex":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","emailVerified"],"additionalProperties":false},"Me":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/MeUser"},"entitlement":{"$ref":"#/components/schemas/Entitlement"},"isPro":{"type":"boolean"},"isProPlus":{"type":"boolean"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"anyOf":[{"type":"string"},{"type":"null"}]},"currentPeriodEnd":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"cancelAtPeriodEnd":{"type":"boolean"},"isAdmin":{"type":"boolean"},"permissions":{"type":"array","items":{"type":"string"}},"minSupportedVersion":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["user","entitlement","isPro","isProPlus","plan","status","currentPeriodEnd","cancelAtPeriodEnd","isAdmin","permissions","minSupportedVersion"],"additionalProperties":false},"MacroTotals":{"type":"object","properties":{"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"DayGoals":{"type":"object","properties":{"calorieGoal":{"anyOf":[{"type":"number"},{"type":"null"}]},"proteinGoal":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["calorieGoal","proteinGoal"],"additionalProperties":false},"MealRow":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","name","type","calories","protein","carbs","fat","loggedAt"],"additionalProperties":false},"WorkoutRow":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"duration":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"intensity":{"type":"string"},"caloriesBurned":{"anyOf":[{"type":"number"},{"type":"null"}]},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","type","duration","intensity","loggedAt"],"additionalProperties":false},"DaySnapshot":{"type":"object","properties":{"iso":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"totals":{"$ref":"#/components/schemas/MacroTotals"},"goals":{"anyOf":[{"$ref":"#/components/schemas/DayGoals"},{"type":"null"}]},"meals":{"type":"array","items":{"$ref":"#/components/schemas/MealRow"}},"workouts":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutRow"}}},"required":["iso","totals","meals","workouts"],"additionalProperties":false},"ProgressDay":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"workouts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","calories","protein","carbs","fat","workouts"],"additionalProperties":false},"ProgressGoals":{"type":"object","properties":{"calorieGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["calorieGoal","proteinGoal"],"additionalProperties":false},"ProgressResponse":{"type":"object","properties":{"daily":{"type":"array","items":{"$ref":"#/components/schemas/ProgressDay"}},"goals":{"$ref":"#/components/schemas/ProgressGoals"},"proteinConsistency":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["daily","proteinConsistency"],"additionalProperties":false},"ProgressPhoto":{"type":"object","properties":{"id":{"type":"string"},"path":{"anyOf":[{"type":"string"},{"type":"null"}]},"mimeType":{"type":"string"},"weightLbs":{"anyOf":[{"type":"number"},{"type":"null"}]},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","path","mimeType","weightLbs","loggedAt"],"additionalProperties":false},"ProgressPhotosResponse":{"type":"object","properties":{"photos":{"type":"array","items":{"$ref":"#/components/schemas/ProgressPhoto"}}},"required":["photos"],"additionalProperties":false},"ProgressPhotoCreateResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"ProgressPhotoDeleteResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"PRRow":{"type":"object","properties":{"exercise":{"type":"string"},"bestE1RM":{"type":"number"},"reps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightLbs":{"type":"number"},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"workoutId":{"type":"string"}},"required":["exercise","bestE1RM","reps","weightLbs","loggedAt","workoutId"],"additionalProperties":false},"PRsResponse":{"type":"object","properties":{"prs":{"type":"array","items":{"$ref":"#/components/schemas/PRRow"}}},"required":["prs"],"additionalProperties":false},"HeartRatePoint":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"restingBpm":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["date","restingBpm"],"additionalProperties":false},"SleepPoint":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"totalMin":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","totalMin"],"additionalProperties":false},"BodyMetricsResponse":{"type":"object","properties":{"heartRate":{"type":"array","items":{"$ref":"#/components/schemas/HeartRatePoint"}},"sleep":{"type":"array","items":{"$ref":"#/components/schemas/SleepPoint"}}},"required":["heartRate","sleep"],"additionalProperties":false},"DietPhase":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"startDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endDate":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","kind","startDate","endDate"],"additionalProperties":false},"DietPhasesResponse":{"type":"object","properties":{"phases":{"type":"array","items":{"$ref":"#/components/schemas/DietPhase"}}},"required":["phases"],"additionalProperties":false},"ReadinessFactors":{"type":"object","properties":{"sleep":{"anyOf":[{"type":"number"},{"type":"null"}]},"hr":{"anyOf":[{"type":"number"},{"type":"null"}]},"load":{"anyOf":[{"type":"number"},{"type":"null"}]},"mood":{"anyOf":[{"type":"number"},{"type":"null"}]},"cycle":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["sleep","hr","load","mood","cycle"],"additionalProperties":false},"Readiness":{"type":"object","properties":{"score":{"type":"number"},"factors":{"$ref":"#/components/schemas/ReadinessFactors"},"intensity":{"type":"string"},"hasEnoughData":{"type":"boolean"}},"required":["score","factors","intensity","hasEnoughData"],"additionalProperties":false},"ReadinessResponse":{"type":"object","properties":{"readiness":{"anyOf":[{"$ref":"#/components/schemas/Readiness"},{"type":"null"}]}},"required":["readiness"],"additionalProperties":false},"Recovery":{"type":"object","properties":{"provider":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"strain":{"anyOf":[{"type":"number"},{"type":"null"}]},"recoveryPct":{"anyOf":[{"type":"number"},{"type":"null"}]},"hrvMs":{"anyOf":[{"type":"number"},{"type":"null"}]},"spo2":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["provider","date","strain","recoveryPct","hrvMs","spo2"],"additionalProperties":false},"RecoveryResponse":{"type":"object","properties":{"recovery":{"anyOf":[{"$ref":"#/components/schemas/Recovery"},{"type":"null"}]}},"required":["recovery"],"additionalProperties":false},"StepDay":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"steps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","steps"],"additionalProperties":false},"StepsBlock":{"type":"object","properties":{"today":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last7":{"type":"array","items":{"$ref":"#/components/schemas/StepDay"}}},"required":["today","last7"],"additionalProperties":false},"StepsResponse":{"type":"object","properties":{"steps":{"$ref":"#/components/schemas/StepsBlock"}},"required":["steps"],"additionalProperties":false},"SleepBlock":{"type":"object","properties":{"today":{"anyOf":[{"type":"number"},{"type":"null"}]},"last7":{"type":"array","items":{"type":"number"}}},"required":["today","last7"],"additionalProperties":false},"SleepResponse":{"type":"object","properties":{"sleep":{"$ref":"#/components/schemas/SleepBlock"}},"required":["sleep"],"additionalProperties":false},"TimeInZone":{"type":"object","properties":{"z1":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"z2":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"z3":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"z4":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"z5":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["z1","z2","z3","z4","z5"],"additionalProperties":false},"HrZones":{"type":"object","properties":{"timeInZone":{"$ref":"#/components/schemas/TimeInZone"},"maxHr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["timeInZone","maxHr"],"additionalProperties":false},"HrZonesResponse":{"type":"object","properties":{"hrZones":{"$ref":"#/components/schemas/HrZones"}},"required":["hrZones"],"additionalProperties":false},"IntegrationProvider":{"type":"object","properties":{"slug":{"type":"string"},"displayName":{"type":"string"},"description":{"type":"string"},"isConfigured":{"type":"boolean"},"kind":{"type":"string"}},"required":["slug","displayName","description","isConfigured","kind"],"additionalProperties":false},"ConnectedIntegration":{"type":"object","properties":{"provider":{"type":"string"},"connectedAt":{"type":"string"},"lastSyncedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["provider","connectedAt","lastSyncedAt","lastError"],"additionalProperties":false},"IntegrationsResponse":{"type":"object","properties":{"providers":{"type":"array","items":{"$ref":"#/components/schemas/IntegrationProvider"}},"connected":{"type":"array","items":{"$ref":"#/components/schemas/ConnectedIntegration"}}},"required":["providers","connected"],"additionalProperties":false},"FreezeHistoryRow":{"type":"object","properties":{"id":{"type":"string"},"earnedAt":{"type":"string"},"earnedReason":{"anyOf":[{"type":"string"},{"type":"null"}]},"consumedAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"consumedForDate":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","earnedAt","earnedReason","consumedAt","consumedForDate"],"additionalProperties":false},"FreezesResponse":{"type":"object","properties":{"balance":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"freeCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proCap":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"history":{"type":"array","items":{"$ref":"#/components/schemas/FreezeHistoryRow"}}},"required":["balance","cap","freeCap","proCap","history"],"additionalProperties":false},"RefeedBody":{"type":"object","properties":{"cadence":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["cadence"],"additionalProperties":false},"RefeedResponse":{"type":"object","properties":{"refeedCadence":{"anyOf":[{"type":"string"},{"type":"null"}]},"refeedDay":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["refeedCadence","refeedDay"],"additionalProperties":false},"HouseholdMember":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","email","name"],"additionalProperties":false},"HouseholdInvite":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"expiresAt":{"type":"string"}},"required":["id","email","expiresAt"],"additionalProperties":false},"Household":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"members":{"type":"array","items":{"$ref":"#/components/schemas/HouseholdMember"}},"invites":{"type":"array","items":{"$ref":"#/components/schemas/HouseholdInvite"}}},"required":["id","name","members","invites"],"additionalProperties":false},"HouseholdResponse":{"type":"object","properties":{"household":{"anyOf":[{"$ref":"#/components/schemas/Household"},{"type":"null"}]}},"required":["household"],"additionalProperties":false},"FastingWindow":{"type":"object","properties":{"id":{"type":"string"},"startedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"goalHrs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","startedAt","endedAt","goalHrs"],"additionalProperties":false},"FastingResponse":{"type":"object","properties":{"open":{"$ref":"#/components/schemas/FastingWindow"},"recent":{"type":"array","items":{"$ref":"#/components/schemas/FastingWindow"}}},"required":["recent"],"additionalProperties":false},"FastingStartResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"DailyNote":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"mood":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sleepHrs":{"anyOf":[{"type":"number"},{"type":"null"}]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date","mood","sleepHrs","note"],"additionalProperties":false},"DailyNoteResponse":{"type":"object","properties":{"note":{"$ref":"#/components/schemas/DailyNote"}},"additionalProperties":false},"MicroRollups":{"type":"object","properties":{"fiber":{"anyOf":[{"type":"number"},{"type":"null"}]},"sugar":{"anyOf":[{"type":"number"},{"type":"null"}]},"saturatedFat":{"anyOf":[{"type":"number"},{"type":"null"}]},"sodium":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["fiber","sugar","saturatedFat","sodium"],"additionalProperties":false},"MicroGoals":{"type":"object","properties":{"fiber":{"type":"number"},"sugar":{"type":"number"},"saturatedFat":{"type":"number"},"sodium":{"type":"number"}},"required":["fiber","sugar","saturatedFat","sodium"],"additionalProperties":false},"MicroMeta":{"type":"object","properties":{"label":{"type":"string"},"unit":{"type":"string"},"goalKind":{"type":"string"}},"required":["label","unit","goalKind"],"additionalProperties":false},"MicrosResponse":{"type":"object","properties":{"rollups":{"$ref":"#/components/schemas/MicroRollups"},"longTail":{"description":"Arbitrary JSON value"},"goals":{"$ref":"#/components/schemas/MicroGoals"},"meta":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/components/schemas/MicroMeta"}}},"required":["rollups","longTail","goals","meta"],"additionalProperties":false},"TodaysProgramSession":{"type":"object","properties":{"label":{"type":"string"},"type":{"type":"string"},"intensity":{"type":"string"},"duration":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["label","type","intensity"],"additionalProperties":false},"TodaysProgram":{"type":"object","properties":{"programName":{"type":"string"},"programSlug":{"type":"string"},"subscriptionId":{"type":"string"},"weekLabel":{"type":"string"},"dayKey":{"type":"string"},"session":{"anyOf":[{"$ref":"#/components/schemas/TodaysProgramSession"},{"type":"null"}]},"alreadyLoggedToday":{"type":"boolean"}},"required":["programName","programSlug","subscriptionId","weekLabel","dayKey","session","alreadyLoggedToday"],"additionalProperties":false},"TodaysProgramResponse":{"type":"object","properties":{"todaysProgram":{"anyOf":[{"$ref":"#/components/schemas/TodaysProgram"},{"type":"null"}]}},"required":["todaysProgram"],"additionalProperties":false},"DashCycleSnapshot":{"type":"object","properties":{"phase":{"type":"string"},"cycleDay":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"cycleLength":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"predictedNextPeriodStart":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},{"type":"null"}]},"hasPrediction":{"type":"boolean"}},"required":["phase","cycleDay","cycleLength","predictedNextPeriodStart","hasPrediction"],"additionalProperties":false},"DashCycleToday":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"flow":{"anyOf":[{"type":"string"},{"type":"null"}]},"symptoms":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["date","flow","symptoms"],"additionalProperties":false},"DashCycleResponse":{"type":"object","properties":{"showCycle":{"type":"boolean"},"cycle":{"anyOf":[{"$ref":"#/components/schemas/DashCycleSnapshot"},{"type":"null"}]},"today":{"anyOf":[{"$ref":"#/components/schemas/DashCycleToday"},{"type":"null"}]}},"required":["showCycle","cycle","today"],"additionalProperties":false},"ActivityDay":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"meals":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"workouts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","meals","workouts"],"additionalProperties":false},"ActivityStreakResponse":{"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/ActivityDay"}}},"required":["days"],"additionalProperties":false},"MacroConsistencyDay":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"hitCalorie":{"type":"boolean"},"hitProtein":{"type":"boolean"},"caloriePct":{"type":"number"},"proteinPct":{"type":"number"}},"required":["date","hitCalorie","hitProtein","caloriePct","proteinPct"],"additionalProperties":false},"MacroConsistencyResponse":{"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/MacroConsistencyDay"}}},"required":["days"],"additionalProperties":false},"TopFood":{"type":"object","properties":{"name":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalCalories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","count","totalCalories"],"additionalProperties":false},"TopFoodsResponse":{"type":"object","properties":{"foods":{"type":"array","items":{"$ref":"#/components/schemas/TopFood"}}},"required":["foods"],"additionalProperties":false},"DashPR":{"type":"object","properties":{"exercise":{"type":"string"},"weightLbs":{"type":"number"},"reps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"achievedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["exercise","weightLbs","reps","achievedAt"],"additionalProperties":false},"PrTrackerResponse":{"type":"object","properties":{"prs":{"type":"array","items":{"$ref":"#/components/schemas/DashPR"}}},"required":["prs"],"additionalProperties":false},"SupplementAdherence":{"type":"object","properties":{"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perfectDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scheduledCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["percent","perfectDays","windowDays","scheduledCount"],"additionalProperties":false},"SupplementAdherenceResponse":{"type":"object","properties":{"adherence":{"anyOf":[{"$ref":"#/components/schemas/SupplementAdherence"},{"type":"null"}]}},"required":["adherence"],"additionalProperties":false},"RecipeBucket":{"type":"string","enum":["ready","almost","far"]},"RecipeIngredient":{"type":"object","properties":{"name":{"type":"string"},"grams":{"type":"number"},"optional":{"type":"boolean"}},"required":["name","grams"],"additionalProperties":false},"RecipeSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"servings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prepMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cookMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"caloriesPerServing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinPerServing":{"type":"number"},"carbsPerServing":{"type":"number"},"fatPerServing":{"type":"number"},"proteinSource":{"anyOf":[{"type":"string"},{"type":"null"}]},"difficulty":{"anyOf":[{"type":"string"},{"type":"null"}]},"mealType":{"anyOf":[{"type":"string"},{"type":"null"}]},"cuisine":{"anyOf":[{"type":"string"},{"type":"null"}]},"equipment":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"dietary":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"source":{"type":"string"},"score":{"type":"number"},"bucket":{"$ref":"#/components/schemas/RecipeBucket"},"missing":{"type":"array","items":{"type":"string"}}},"required":["id","name","description","servings","prepMinutes","cookMinutes","caloriesPerServing","proteinPerServing","carbsPerServing","fatPerServing","proteinSource","difficulty","mealType","cuisine","equipment","dietary","tags","source","score","bucket","missing"],"additionalProperties":false},"RecipeListResponse":{"type":"object","properties":{"recipes":{"type":"array","items":{"$ref":"#/components/schemas/RecipeSummary"}}},"required":["recipes"],"additionalProperties":false},"RecipeMatch":{"type":"object","properties":{"recipeId":{"type":"string"},"matched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"required":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"optionalMatched":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"optionalTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"score":{"type":"number"},"missing":{"type":"array","items":{"type":"string"}}},"required":["recipeId","matched","required","optionalMatched","optionalTotal","score","missing"],"additionalProperties":false},"RecipeDetail":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"servings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prepMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instructions":{"type":"string"},"ingredients":{"type":"array","items":{"$ref":"#/components/schemas/RecipeIngredient"}},"tags":{"type":"array","items":{"type":"string"}},"caloriesPerServing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinPerServing":{"type":"number"},"carbsPerServing":{"type":"number"},"fatPerServing":{"type":"number"},"source":{"type":"string"}},"required":["id","name","description","servings","prepMinutes","instructions","ingredients","tags","caloriesPerServing","proteinPerServing","carbsPerServing","fatPerServing","source"],"additionalProperties":false},"RecipeDetailResponse":{"type":"object","properties":{"recipe":{"$ref":"#/components/schemas/RecipeDetail"},"match":{"$ref":"#/components/schemas/RecipeMatch"}},"required":["recipe","match"],"additionalProperties":false},"RecipeOkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"RecipeIdResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"RecipeFromUrlResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"GeneratedRecipeStub":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"GenerateRecipesResponse":{"type":"object","properties":{"created":{"type":"array","items":{"$ref":"#/components/schemas/GeneratedRecipeStub"}}},"required":["created"],"additionalProperties":false},"RateResponse":{"type":"object","properties":{"stars":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comment":{"anyOf":[{"type":"string"},{"type":"null"}]},"ratingAvg":{"anyOf":[{"type":"number"},{"type":"null"}]},"ratingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["stars","comment","ratingAvg","ratingCount"],"additionalProperties":false},"RatingAggregateResponse":{"type":"object","properties":{"ratingAvg":{"anyOf":[{"type":"number"},{"type":"null"}]},"ratingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ratingAvg","ratingCount"],"additionalProperties":false},"SaveRecipeResponse":{"type":"object","properties":{"id":{"type":"string"},"alreadySaved":{"type":"boolean"}},"required":["id"],"additionalProperties":false},"FavoriteResponse":{"type":"object","properties":{"favorited":{"type":"boolean"}},"required":["favorited"],"additionalProperties":false},"PublishResponse":{"type":"object","properties":{"isPublic":{"type":"boolean"},"publicSlug":{"type":"string"}},"required":["isPublic","publicSlug"],"additionalProperties":false},"HiddenRecipe":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"photoPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"hiddenAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","name","description","source","photoPath","hiddenAt"],"additionalProperties":false},"HiddenRecipesResponse":{"type":"object","properties":{"hidden":{"type":"array","items":{"$ref":"#/components/schemas/HiddenRecipe"}}},"required":["hidden"],"additionalProperties":false},"RecipeCollection":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPublic":{"type":"boolean"},"publicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"coverPhotoPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","name","description","isPublic","publicSlug","coverPhotoPath","createdAt","updatedAt"],"additionalProperties":false},"CollectionListResponse":{"type":"object","properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/RecipeCollection"}}},"required":["collections"],"additionalProperties":false},"CollectionDetailResponse":{"type":"object","properties":{"collection":{"$ref":"#/components/schemas/RecipeCollection"}},"required":["collection"],"additionalProperties":false},"CreateCollectionResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"CoverPhotoResponse":{"type":"object","properties":{"coverPhotoPath":{"type":"string"}},"required":["coverPhotoPath"],"additionalProperties":false},"PlanEntry":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"type":{"type":"string"},"recipeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"servings":{"type":"number"},"loggedMealId":{"anyOf":[{"type":"string"},{"type":"null"}]},"recurrenceId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","date","type","recipeId","templateId","name","servings","loggedMealId"],"additionalProperties":false},"PlanWeek":{"type":"object","properties":{"start":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"end":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/PlanEntry"}}},"required":["start","end","entries"],"additionalProperties":false},"PlanEntryResponse":{"type":"object","properties":{"entry":{"$ref":"#/components/schemas/PlanEntry"}},"required":["entry"],"additionalProperties":false},"PlanOkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"PlanLibraryRecipe":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"mealType":{"anyOf":[{"type":"string"},{"type":"null"}]},"isFavorite":{"type":"boolean"},"caloriesPerServing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinPerServing":{"type":"number"},"carbsPerServing":{"type":"number"},"fatPerServing":{"type":"number"}},"required":["id","name","mealType","isFavorite","caloriesPerServing","proteinPerServing","carbsPerServing","fatPerServing"],"additionalProperties":false},"PlanLibrary":{"type":"object","properties":{"recipes":{"type":"array","items":{"$ref":"#/components/schemas/PlanLibraryRecipe"}}},"required":["recipes"],"additionalProperties":false},"SwapCurrent":{"type":"object","properties":{"name":{"type":"string"},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"}},"required":["name","calories","protein","carbs","fat"],"additionalProperties":false},"SwapIngredient":{"type":"object","properties":{"name":{"type":"string"},"grams":{"type":"number"}},"required":["name","grams"],"additionalProperties":false},"SwapSuggestion":{"type":"object","properties":{"name":{"type":"string"},"type":{"$ref":"#/components/schemas/MealType"},"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"ingredients":{"type":"array","items":{"$ref":"#/components/schemas/SwapIngredient"}}},"required":["name","type","calories","protein","carbs","fat","ingredients"],"additionalProperties":false},"SwapSuggestionsResponse":{"type":"object","properties":{"current":{"$ref":"#/components/schemas/SwapCurrent"},"suggestions":{"type":"array","items":{"$ref":"#/components/schemas/SwapSuggestion"}}},"required":["current","suggestions"],"additionalProperties":false},"SwapEntry":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"SwapEntryResponse":{"type":"object","properties":{"entry":{"$ref":"#/components/schemas/SwapEntry"}},"required":["entry"],"additionalProperties":false},"PlanTargetMacros":{"type":"object","properties":{"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"PlanGenerateResponse":{"type":"object","properties":{"id":{"type":"string"},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"validationErrors":{"type":"array","items":{"type":"string"}}},"required":["id","attempts","validationErrors"],"additionalProperties":false},"GeneratedPlanTargetMacros":{"type":"object","properties":{"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"anyOf":[{"type":"number"},{"type":"null"}]},"fat":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"GeneratedPlanResponse":{"type":"object","properties":{"id":{"type":"string"},"weekStart":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"targetMacros":{"$ref":"#/components/schemas/GeneratedPlanTargetMacros"},"inputs":{"description":"Arbitrary JSON value"},"draft":{"description":"Arbitrary JSON value"},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}]},"acceptedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"discardedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","weekStart","targetMacros","inputs","draft","rationale","acceptedAt","discardedAt","createdAt"],"additionalProperties":false},"PlanDraftMacros":{"type":"object","properties":{"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"PlanDraftMeal":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/MealType"},"recipeId":{"type":"string"},"servings":{"type":"number"},"macros":{"$ref":"#/components/schemas/PlanDraftMacros"},"name":{"type":"string"},"prepMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"unavailable":{"type":"boolean"}},"required":["type","recipeId","servings","macros","name","prepMinutes","unavailable"],"additionalProperties":false},"PlanDraftDay":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"meals":{"type":"array","items":{"$ref":"#/components/schemas/PlanDraftMeal"}}},"required":["date","meals"],"additionalProperties":false},"PlanDraftView":{"type":"object","properties":{"days":{"type":"array","items":{"$ref":"#/components/schemas/PlanDraftDay"}}},"required":["days"],"additionalProperties":false},"PlanDraftEditResponse":{"type":"object","properties":{"draft":{"$ref":"#/components/schemas/PlanDraftView"}},"required":["draft"],"additionalProperties":false},"PlanAcceptResponse":{"type":"object","properties":{"insertedEntryCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"navigateToWeekIso":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["insertedEntryCount","navigateToWeekIso"],"additionalProperties":false},"Recurrence":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"recipeId":{"anyOf":[{"type":"string"},{"type":"null"}]},"templateId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"servings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rrule":{"type":"string"},"startsOn":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endsOn":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","type","recipeId","templateId","name","servings","rrule","startsOn","endsOn"],"additionalProperties":false},"CreateRecurrenceResponse":{"type":"object","properties":{"recurrence":{"$ref":"#/components/schemas/Recurrence"},"occurrencesCreated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["recurrence","occurrencesCreated"],"additionalProperties":false},"GroceryExtra":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"householdId":{"anyOf":[{"type":"string"},{"type":"null"}]},"weekStart":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"name":{"type":"string"},"grams":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","userId","householdId","weekStart","name","grams","createdAt"],"additionalProperties":false},"GroceryExtraResponse":{"type":"object","properties":{"item":{"$ref":"#/components/schemas/GroceryExtra"}},"required":["item"],"additionalProperties":false},"GroceryExtraCreateBody":{"type":"object","properties":{"weekStart":{"type":"string"},"name":{"type":"string"},"grams":{"type":"number"}},"required":["weekStart","name","grams"],"additionalProperties":false},"PantryItem":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"householdId":{"anyOf":[{"type":"string"},{"type":"null"}]},"fdcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"per100g":{"anyOf":[{"type":"string"},{"type":"null"}]},"addedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","userId","householdId","fdcId","name","category","per100g","addedAt"],"additionalProperties":false},"PantryListResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PantryItem"}}},"required":["items"],"additionalProperties":false},"PantryItemResponse":{"type":"object","properties":{"item":{"$ref":"#/components/schemas/PantryItem"}},"required":["item"],"additionalProperties":false},"PantryPer100g":{"type":"object","properties":{"calories":{"type":"number"},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"}},"required":["calories","protein","carbs","fat"],"additionalProperties":false},"PantryCreateBody":{"type":"object","properties":{"name":{"type":"string"},"fdcId":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"per100g":{"$ref":"#/components/schemas/PantryPer100g"}},"required":["name"],"additionalProperties":false},"ScannedPantryItem":{"type":"object","properties":{"name":{"type":"string"},"category":{"type":"string"},"isFood":{"type":"boolean"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rawText":{"type":"string"}},"required":["name","category","isFood","count"],"additionalProperties":false},"PantryScanResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ScannedPantryItem"}},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["items","skipped"],"additionalProperties":false},"PrepBatchTask":{"type":"object","properties":{"step":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"task":{"type":"string"},"whenLabel":{"type":"string"},"minutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tools":{"type":"array","items":{"type":"string"}},"storage":{"type":"string"},"forRecipes":{"type":"array","items":{"type":"string"}}},"required":["step","task","whenLabel","minutes","forRecipes"],"additionalProperties":false},"PrepFinishingPlan":{"type":"object","properties":{"recipeName":{"type":"string"},"dayLabel":{"type":"string"},"steps":{"type":"array","items":{"type":"string"}},"minutesActive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["recipeName","dayLabel","steps","minutesActive"],"additionalProperties":false},"PrepPlan":{"type":"object","properties":{"summary":{"type":"string"},"batchTasks":{"type":"array","items":{"$ref":"#/components/schemas/PrepBatchTask"}},"finishingPlans":{"type":"array","items":{"$ref":"#/components/schemas/PrepFinishingPlan"}},"shoppingNote":{"type":"string"}},"required":["summary","batchTasks","finishingPlans"],"additionalProperties":false},"PrepPlanResponse":{"type":"object","properties":{"plan":{"$ref":"#/components/schemas/PrepPlan"},"recipeCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["plan","recipeCount"],"additionalProperties":false},"JournalSentiment":{"type":"string","enum":["positive","neutral","negative","mixed"]},"JournalEntry":{"type":"object","properties":{"id":{"type":"string"},"recordedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"durationSec":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasAudio":{"type":"boolean"},"transcript":{"type":"string"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"hiddenFromCoach":{"type":"boolean"}},"required":["id","recordedAt","durationSec","hasAudio","transcript","summary","sentiment","tags","hiddenFromCoach"],"additionalProperties":false},"JournalListResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntry"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["entries","nextCursor"],"additionalProperties":false},"JournalDetail":{"type":"object","properties":{"id":{"type":"string"},"recordedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"durationSec":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"audioPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"transcript":{"type":"string"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"hiddenFromCoach":{"type":"boolean"}},"required":["id","recordedAt","durationSec","audioPath","transcript","summary","sentiment","tags","hiddenFromCoach"],"additionalProperties":false},"JournalUploadResponse":{"type":"object","properties":{"id":{"type":"string"},"transcript":{"type":"string"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"durationSec":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"audioRetained":{"type":"boolean"}},"required":["id","transcript","summary","sentiment","tags","durationSec","language","audioRetained"],"additionalProperties":false},"JournalPatchBody":{"type":"object","properties":{"transcript":{"type":"string"},"hiddenFromCoach":{"type":"boolean"}},"additionalProperties":false},"JournalOkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"WorkoutIntensity":{"type":"string","enum":["low","medium","high"]},"ExerciseSet":{"type":"object","properties":{"id":{"type":"string"},"workoutId":{"type":"string"},"exercise":{"type":"string"},"setNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightLbs":{"anyOf":[{"type":"number"},{"type":"null"}]},"rpe":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","workoutId","exercise","setNumber","reps","weightLbs","rpe","notes"],"additionalProperties":false},"Workout":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"duration":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"intensity":{"$ref":"#/components/schemas/WorkoutIntensity"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"caloriesBurned":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"programSubscriptionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"programDayKey":{"anyOf":[{"type":"string"},{"type":"null"}]},"sets":{"type":"array","items":{"$ref":"#/components/schemas/ExerciseSet"}}},"required":["id","type","duration","intensity","notes","caloriesBurned","loggedAt","programSubscriptionId","programDayKey"],"additionalProperties":false},"WorkoutListResponse":{"type":"object","properties":{"workouts":{"type":"array","items":{"$ref":"#/components/schemas/Workout"}}},"required":["workouts"],"additionalProperties":false},"WorkoutCreateResponse":{"type":"object","properties":{"workout":{"$ref":"#/components/schemas/Workout"},"newlyUnlocked":{"type":"array","items":{"type":"string"}}},"required":["workout","newlyUnlocked"],"additionalProperties":false},"DeleteOkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"Exercise":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"muscleGroups":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","category","description","muscleGroups"],"additionalProperties":false},"ExerciseListResponse":{"type":"object","properties":{"exercises":{"type":"array","items":{"$ref":"#/components/schemas/Exercise"}}},"required":["exercises"],"additionalProperties":false},"ExerciseSetInput":{"type":"object","properties":{"exercise":{"type":"string","minLength":1,"maxLength":80},"setNumber":{"type":"integer","minimum":1,"maximum":50},"reps":{"type":"integer","minimum":1,"maximum":100},"weightLbs":{"anyOf":[{"type":"number","minimum":0,"maximum":2000},{"type":"null"}]},"rpe":{"anyOf":[{"type":"integer","minimum":1,"maximum":10},{"type":"null"}]}},"required":["exercise","setNumber","reps"],"additionalProperties":false},"WorkoutInput":{"type":"object","properties":{"type":{"type":"string","minLength":2,"maxLength":40,"pattern":"^[a-z0-9_-]+$"},"duration":{"type":"integer","minimum":0,"maximum":600},"intensity":{"$ref":"#/components/schemas/WorkoutIntensity"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"sets":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/ExerciseSetInput"}},{"type":"null"}]},"loggedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}},"required":["type","duration","intensity"],"additionalProperties":false},"WorkoutTemplateSet":{"type":"object","properties":{"exercise":{"type":"string"},"setNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reps":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightLbs":{"anyOf":[{"type":"number"},{"type":"null"}]},"rpe":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["exercise","setNumber","reps"],"additionalProperties":false},"WorkoutTemplate":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"sets":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutTemplateSet"}}},"required":["id","name","type","notes","createdAt","sets"],"additionalProperties":false},"WorkoutTemplatesResponse":{"type":"object","properties":{"templates":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutTemplate"}}},"required":["templates"],"additionalProperties":false},"WorkoutTemplateCreateBody":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"sets":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutTemplateSet"}}},"required":["name","type","sets"],"additionalProperties":false},"WorkoutTemplateCreateResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"WorkoutTemplateLogResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"WeightLog":{"type":"object","properties":{"id":{"type":"string"},"weight":{"type":"number"},"bodyFatPct":{"anyOf":[{"type":"number"},{"type":"null"}]},"waistIn":{"anyOf":[{"type":"number"},{"type":"null"}]},"chestIn":{"anyOf":[{"type":"number"},{"type":"null"}]},"armsIn":{"anyOf":[{"type":"number"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","weight","bodyFatPct","waistIn","chestIn","armsIn","notes","loggedAt"],"additionalProperties":false},"WeightLogsResponse":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/WeightLog"}}},"required":["logs"],"additionalProperties":false},"WeightLogCreate":{"type":"object","properties":{"weight":{"type":"number","minimum":20,"maximum":1000},"bodyFatPct":{"anyOf":[{"type":"number","minimum":2,"maximum":70},{"type":"null"}]},"waistIn":{"anyOf":[{"type":"number","minimum":10,"maximum":90},{"type":"null"}]},"chestIn":{"anyOf":[{"type":"number","minimum":20,"maximum":90},{"type":"null"}]},"armsIn":{"anyOf":[{"type":"number","minimum":5,"maximum":40},{"type":"null"}]},"notes":{"type":"string"},"loggedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["weight"],"additionalProperties":false},"WeightLogCreateResponse":{"type":"object","properties":{"log":{"$ref":"#/components/schemas/WeightLog"},"newlyUnlocked":{"type":"array","items":{"type":"string"}}},"required":["log","newlyUnlocked"],"additionalProperties":false},"HydrationLog":{"type":"object","properties":{"id":{"type":"string"},"cups":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loggedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","cups","loggedAt"],"additionalProperties":false},"HydrationDay":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logs":{"type":"array","items":{"$ref":"#/components/schemas/HydrationLog"}}},"required":["total","logs"],"additionalProperties":false},"HydrationLogCreate":{"type":"object","properties":{"cups":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"loggedAt":{"type":"string"}},"required":["cups"],"additionalProperties":false},"HydrationLogCreateResponse":{"type":"object","properties":{"log":{"$ref":"#/components/schemas/HydrationLog"}},"required":["log"],"additionalProperties":false},"Supplement":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dose":{"anyOf":[{"type":"string"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]},"defaultTime":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","name","dose","unit","defaultTime","notes","archived","createdAt","updatedAt"],"additionalProperties":false},"SupplementsResponse":{"type":"object","properties":{"supplements":{"type":"array","items":{"$ref":"#/components/schemas/Supplement"}}},"required":["supplements"],"additionalProperties":false},"SupplementResponse":{"type":"object","properties":{"supplement":{"$ref":"#/components/schemas/Supplement"}},"required":["supplement"],"additionalProperties":false},"SupplementCreate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"dose":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"unit":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"defaultTime":{"anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"archived":{"type":"boolean"}},"required":["name"],"additionalProperties":false},"SupplementUpdate":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"dose":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"unit":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"defaultTime":{"anyOf":[{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"archived":{"type":"boolean"}},"additionalProperties":false},"SupplementLog":{"type":"object","properties":{"id":{"type":"string"},"supplementId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"dose":{"anyOf":[{"type":"string"},{"type":"null"}]},"unit":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"takenAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","supplementId","name","dose","unit","notes","takenAt"],"additionalProperties":false},"SupplementLogsResponse":{"type":"object","properties":{"logs":{"type":"array","items":{"$ref":"#/components/schemas/SupplementLog"}}},"required":["logs"],"additionalProperties":false},"SupplementLogCreate":{"type":"object","properties":{"supplementId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":80},"dose":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"unit":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"takenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["name"],"additionalProperties":false},"SupplementLogCreateResponse":{"type":"object","properties":{"log":{"$ref":"#/components/schemas/SupplementLog"}},"required":["log"],"additionalProperties":false},"MesocycleWeekConfig":{"type":"object","properties":{"weekIndex":{"type":"integer","minimum":1,"maximum":20},"volumeMultiplier":{"type":"number","minimum":0.1,"maximum":3},"intensityMultiplier":{"type":"number","minimum":0.1,"maximum":2},"isDeload":{"default":false,"type":"boolean"},"notes":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]}},"required":["weekIndex","volumeMultiplier","intensityMultiplier","isDeload"],"additionalProperties":false},"MesocycleRow":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deloadWeek":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"startDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"targetEndDate":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","goal","weeks","deloadWeek","startDate","targetEndDate","endedAt","notes"],"additionalProperties":false},"Mesocycle":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"goal":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deloadWeek":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"startDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"targetEndDate":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"weeksConfig":{"type":"array","items":{"$ref":"#/components/schemas/MesocycleWeekConfig"}}},"required":["id","name","goal","weeks","deloadWeek","startDate","targetEndDate","endedAt","notes","weeksConfig"],"additionalProperties":false},"MesocyclesResponse":{"type":"object","properties":{"mesocycles":{"type":"array","items":{"$ref":"#/components/schemas/Mesocycle"}}},"required":["mesocycles"],"additionalProperties":false},"MesocycleGoal":{"type":"string","enum":["hypertrophy","strength","peak","general"]},"MesocycleCreateBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"goal":{"$ref":"#/components/schemas/MesocycleGoal"},"weeks":{"type":"integer","minimum":1,"maximum":20},"deloadWeek":{"anyOf":[{"type":"integer","minimum":1,"maximum":20},{"type":"null"}]},"startDate":{"type":"string","minLength":1},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"templateSlug":{"type":"string","maxLength":40},"weeksConfig":{"maxItems":20,"type":"array","items":{"$ref":"#/components/schemas/MesocycleWeekConfig"}}},"required":["name","goal","weeks","startDate"],"additionalProperties":false},"MesocycleCreateResponse":{"type":"object","properties":{"mesocycle":{"$ref":"#/components/schemas/Mesocycle"}},"required":["mesocycle"],"additionalProperties":false},"MesocycleUpdateResponse":{"type":"object","properties":{"mesocycle":{"$ref":"#/components/schemas/MesocycleRow"}},"required":["mesocycle"],"additionalProperties":false},"HealthSyncTokenResponse":{"type":"object","properties":{"token":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["token"],"additionalProperties":false},"HealthSyncRecord":{"type":"object","properties":{"type":{"type":"string"},"value":{"type":"string"},"unit":{"type":"string"},"startDate":{"type":"string"},"endDate":{"type":"string"}},"required":["type","value","startDate"],"additionalProperties":false},"HealthSyncRequest":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/HealthSyncRecord"}}},"required":["records"],"additionalProperties":false},"HealthSyncResult":{"type":"object","properties":{"weightsImported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightsSkipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"stepsImported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"heartRateImported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sleepImported":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["weightsImported","weightsSkipped","stepsImported","heartRateImported","sleepImported"],"additionalProperties":false},"MuscleVolume":{"type":"object","properties":{"muscle":{"type":"string"},"sets":{"type":"number"},"tonnage":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["muscle","sets","tonnage"],"additionalProperties":false},"MuscleVolumeResponse":{"type":"object","properties":{"muscles":{"type":"array","items":{"$ref":"#/components/schemas/MuscleVolume"}}},"required":["muscles"],"additionalProperties":false},"TrendPoint":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"value":{"type":"number"}},"required":["date","value"],"additionalProperties":false},"CaloriesTrendResponse":{"type":"object","properties":{"points":{"type":"array","items":{"$ref":"#/components/schemas/TrendPoint"}}},"required":["points"],"additionalProperties":false},"CoachBrief":{"type":"object","properties":{"id":{"type":"string"},"briefDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"headline":{"type":"string"},"bullets":{"type":"array","items":{"type":"string"}},"warnings":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"tone":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","briefDate","headline","bullets","warnings","tone","createdAt"],"additionalProperties":false},"CoachBriefResponse":{"type":"object","properties":{"brief":{"anyOf":[{"$ref":"#/components/schemas/CoachBrief"},{"type":"null"}]},"reason":{"type":"string"}},"required":["brief"],"additionalProperties":false},"ReasoningInput":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false},"CoachReasoning":{"type":"object","properties":{"inputs":{"type":"array","items":{"$ref":"#/components/schemas/ReasoningInput"}},"math":{"type":"string"},"confidence":{"type":"string"}},"required":["inputs"],"additionalProperties":false},"InsightItem":{"type":"object","properties":{"text":{"type":"string"},"reasoning":{"$ref":"#/components/schemas/CoachReasoning"}},"required":["text"],"additionalProperties":false},"WeeklyInsight":{"type":"object","properties":{"summary":{"type":"string"},"observations":{"type":"array","items":{"$ref":"#/components/schemas/InsightItem"}},"suggestions":{"type":"array","items":{"$ref":"#/components/schemas/InsightItem"}},"tone":{"type":"string"}},"required":["summary","observations","suggestions","tone"],"additionalProperties":false},"WeeklyInsightResponse":{"type":"object","properties":{"insight":{"anyOf":[{"$ref":"#/components/schemas/WeeklyInsight"},{"type":"null"}]},"reason":{"type":"string"}},"required":["insight"],"additionalProperties":false},"TdeeFit":{"type":"object","properties":{"id":{"type":"string"},"fittedTdee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proposedGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}]},"avgKcalIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightDeltaKg":{"type":"number"},"windowStart":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"windowEnd":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"confidence":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","fittedTdee","proposedGoal","rationale","avgKcalIn","weightDeltaKg","windowStart","windowEnd","confidence","createdAt"],"additionalProperties":false},"TdeeCurrentResponse":{"type":"object","properties":{"fit":{"anyOf":[{"$ref":"#/components/schemas/TdeeFit"},{"type":"null"}]}},"required":["fit"],"additionalProperties":false},"TdeeAdjustmentRow":{"type":"object","properties":{"id":{"type":"string"},"fromKcal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toKcal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"reason":{"type":"string"},"weeklyDelta":{"anyOf":[{"type":"number"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","fromKcal","toKcal","reason","weeklyDelta","createdAt"],"additionalProperties":false},"TdeeFitRow":{"type":"object","properties":{"id":{"type":"string"},"fittedTdee":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proposedGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rationale":{"anyOf":[{"type":"string"},{"type":"null"}]},"avgKcalIn":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weightDeltaKg":{"type":"number"},"weightLogCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mealDayCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"windowStart":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"windowEnd":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"confidence":{"type":"string"},"appliedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"dismissedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","fittedTdee","proposedGoal","rationale","avgKcalIn","weightDeltaKg","weightLogCount","mealDayCount","windowStart","windowEnd","confidence","appliedAt","dismissedAt","createdAt"],"additionalProperties":false},"TdeeHistoryResponse":{"type":"object","properties":{"currentGoal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"adaptiveTdeeEnabled":{"type":"boolean"},"adjustments":{"type":"array","items":{"$ref":"#/components/schemas/TdeeAdjustmentRow"}},"fits":{"type":"array","items":{"$ref":"#/components/schemas/TdeeFitRow"}}},"required":["currentGoal","adaptiveTdeeEnabled","adjustments","fits"],"additionalProperties":false},"TdeeSettingsBody":{"type":"object","properties":{"adaptiveTdeeEnabled":{"type":"boolean"}},"required":["adaptiveTdeeEnabled"],"additionalProperties":false},"TdeeSettingsResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"adaptiveTdeeEnabled":{"type":"boolean"}},"required":["ok","adaptiveTdeeEnabled"],"additionalProperties":false},"TdeeApplyBody":{"type":"object","properties":{"fitId":{"type":"string"}},"required":["fitId"],"additionalProperties":false},"TdeeApplyResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"newGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["ok","newGoal"],"additionalProperties":false},"TdeeDismissBody":{"type":"object","properties":{"fitId":{"type":"string"}},"required":["fitId"],"additionalProperties":false},"PlateauAlert":{"type":"object","properties":{"id":{"type":"string"},"ruleId":{"type":"string"},"severity":{"type":"string"},"evidence":{"description":"Arbitrary JSON value"},"narrative":{"type":"string"},"recommendedAction":{"type":"string"},"triggeredAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","ruleId","severity","evidence","narrative","recommendedAction","triggeredAt"],"additionalProperties":false},"PlateauActiveResponse":{"type":"object","properties":{"alerts":{"type":"array","items":{"$ref":"#/components/schemas/PlateauAlert"}}},"required":["alerts"],"additionalProperties":false},"PlateauSideEffect":{"type":"object","properties":{"fromKcal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"toKcal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"delta":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["fromKcal","toKcal","delta"],"additionalProperties":false},"PlateauActedResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"alreadyActed":{"type":"boolean"},"appliedSideEffect":{"anyOf":[{"$ref":"#/components/schemas/PlateauSideEffect"},{"type":"null"}]}},"required":["ok"],"additionalProperties":false},"CoachNudge":{"type":"object","properties":{"id":{"type":"string"},"triggerId":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"deepLink":{"type":"string"},"pushedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"openedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"dismissedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","triggerId","title","body","deepLink","pushedAt","openedAt","dismissedAt","createdAt"],"additionalProperties":false},"NudgesInboxResponse":{"type":"object","properties":{"nudges":{"type":"array","items":{"$ref":"#/components/schemas/CoachNudge"}}},"required":["nudges"],"additionalProperties":false},"NudgesSettingsBody":{"type":"object","properties":{"coachNudgesEnabled":{"type":"boolean"}},"required":["coachNudgesEnabled"],"additionalProperties":false},"NudgesSettingsResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"coachNudgesEnabled":{"type":"boolean"}},"required":["ok","coachNudgesEnabled"],"additionalProperties":false},"DietaryStyle":{"type":"string","enum":["omnivore","vegetarian","vegan","pescatarian","keto","paleo","carnivore"]},"PrimaryGoal":{"type":"string","enum":["fat_loss","muscle_gain","performance","health"]},"TrainingStyle":{"type":"string","enum":["powerlifting","bodybuilding","general","endurance"]},"CoachProfile":{"type":"object","properties":{"userId":{"type":"string"},"injuries":{"type":"array","items":{"type":"string"}},"allergies":{"type":"array","items":{"type":"string"}},"dietaryStyle":{"anyOf":[{"$ref":"#/components/schemas/DietaryStyle"},{"type":"null"}]},"dislikes":{"type":"array","items":{"type":"string"}},"trainingExperienceYears":{"anyOf":[{"type":"number"},{"type":"null"}]},"primaryGoal":{"anyOf":[{"$ref":"#/components/schemas/PrimaryGoal"},{"type":"null"}]},"trainingStyle":{"anyOf":[{"$ref":"#/components/schemas/TrainingStyle"},{"type":"null"}]},"customNotes":{"anyOf":[{"type":"string"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["userId","injuries","allergies","dietaryStyle","dislikes","trainingExperienceYears","primaryGoal","trainingStyle","customNotes","updatedAt"],"additionalProperties":false},"MemoryPin":{"type":"object","properties":{"id":{"type":"string"},"content":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"type":"string"},"isUserAuthored":{"type":"boolean"},"approvedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"pinnedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"hiddenAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"sourceContext":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","content","category","source","isUserAuthored","approvedAt","pinnedAt","hiddenAt","sourceContext","createdAt"],"additionalProperties":false},"CoachProfilePinsResponse":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/CoachProfile"},"coachNudgesEnabled":{"type":"boolean"},"pins":{"type":"array","items":{"$ref":"#/components/schemas/MemoryPin"}}},"required":["profile","coachNudgesEnabled","pins"],"additionalProperties":false},"CoachProfileUpdateResponse":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/CoachProfile"}},"required":["profile"],"additionalProperties":false},"CoachProfilePatchBody":{"type":"object","properties":{"injuries":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"allergies":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"dietaryStyle":{"anyOf":[{"$ref":"#/components/schemas/DietaryStyle"},{"type":"null"}]},"dislikes":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":60}},"trainingExperienceYears":{"anyOf":[{"type":"number","minimum":0,"maximum":60},{"type":"null"}]},"primaryGoal":{"anyOf":[{"$ref":"#/components/schemas/PrimaryGoal"},{"type":"null"}]},"trainingStyle":{"anyOf":[{"$ref":"#/components/schemas/TrainingStyle"},{"type":"null"}]},"customNotes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"additionalProperties":false},"CreatePinBody":{"type":"object","properties":{"content":{"type":"string"}},"required":["content"],"additionalProperties":false},"CreatePinResponse":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"MemoryPinPatchResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"deleted":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"OKResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"ChallengeMetric":{"type":"string","enum":["steps","workouts","protein-avg","streak","calorie-adherence","protein-adherence","workout-pr-count","sleep-avg"]},"ChallengeVisibility":{"type":"string","enum":["public","followers","invite","pro_only"]},"ChallengeSummary":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"metric":{"$ref":"#/components/schemas/ChallengeMetric"},"visibility":{"type":"string"},"isOfficial":{"type":"boolean"},"startDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"creatorId":{"type":"string"},"joined":{"type":"boolean"},"isCreator":{"type":"boolean"},"joinCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","metric","visibility","isOfficial","startDate","endDate","creatorId","joined","isCreator"],"additionalProperties":false},"ChallengeDetail":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"metric":{"$ref":"#/components/schemas/ChallengeMetric"},"visibility":{"type":"string"},"isOfficial":{"type":"boolean"},"joinCode":{"anyOf":[{"type":"string"},{"type":"null"}]},"startDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endDate":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"creatorId":{"type":"string"},"joined":{"type":"boolean"},"isCreator":{"type":"boolean"}},"required":["id","name","description","metric","visibility","isOfficial","startDate","endDate","creatorId"],"additionalProperties":false},"ChallengeListResponse":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/ChallengeSummary"}}},"required":["challenges"],"additionalProperties":false},"ChallengeDetailResponse":{"type":"object","properties":{"challenge":{"$ref":"#/components/schemas/ChallengeDetail"}},"required":["challenge"],"additionalProperties":false},"LeaderboardEntry":{"type":"object","properties":{"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"type":"string"},"isYou":{"type":"boolean"},"displayName":{"type":"string"},"publicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"score":{"type":"number"},"lastComputedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"joinedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["rank","userId","isYou","displayName","publicSlug","score","lastComputedAt","joinedAt"],"additionalProperties":false},"LeaderboardResponse":{"type":"object","properties":{"leaderboard":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntry"}}},"required":["leaderboard"],"additionalProperties":false},"JoinChallengeResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"score":{"type":"number"}},"required":["ok","score"],"additionalProperties":false},"JoinByCodeResponse":{"type":"object","properties":{"challengeId":{"type":"string"},"alreadyJoined":{"type":"boolean"},"score":{"type":"number"}},"required":["challengeId","alreadyJoined","score"],"additionalProperties":false},"JoinBody":{"type":"object","properties":{"joinCode":{"anyOf":[{"type":"string"},{"type":"null"}]}},"additionalProperties":false},"JoinByCodeBody":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":false},"CreateChallengeBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"metric":{"$ref":"#/components/schemas/ChallengeMetric"},"visibility":{"default":"followers","$ref":"#/components/schemas/ChallengeVisibility"},"requiresProToJoin":{"default":false,"type":"boolean"},"maxParticipants":{"anyOf":[{"type":"integer","minimum":2,"maximum":500},{"type":"null"}]},"startDate":{"type":"string","minLength":1},"endDate":{"type":"string","minLength":1}},"required":["name","metric","visibility","requiresProToJoin","startDate","endDate"],"additionalProperties":false},"ChallengeUpdateBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"additionalProperties":false},"ChallengeEndEarlyResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"alreadyEnded":{"type":"boolean"},"endedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["ok"],"additionalProperties":false},"ProgramSummary":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysPerWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"builtin":{"type":"boolean"},"isProOnly":{"type":"boolean"}},"required":["id","slug","name","description","weeks","daysPerWeek","builtin"],"additionalProperties":false},"ProgramStub":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"ProgramSubscription":{"type":"object","properties":{"id":{"type":"string"},"programId":{"type":"string"},"startedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"program":{"$ref":"#/components/schemas/ProgramStub"}},"required":["id","programId","startedAt","endedAt","program"],"additionalProperties":false},"ProgramBrowseResponse":{"type":"object","properties":{"programs":{"type":"array","items":{"$ref":"#/components/schemas/ProgramSummary"}},"subscriptions":{"type":"array","items":{"$ref":"#/components/schemas/ProgramSubscription"}}},"required":["programs","subscriptions"],"additionalProperties":false},"MyProgram":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysPerWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"coverPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceProgramId":{"anyOf":[{"type":"string"},{"type":"null"}]},"clonedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"isProOnly":{"type":"boolean"}},"required":["id","slug","name","description","weeks","daysPerWeek","coverPath","sourceProgramId","clonedAt","updatedAt"],"additionalProperties":false},"MyProgramsResponse":{"type":"object","properties":{"programs":{"type":"array","items":{"$ref":"#/components/schemas/MyProgram"}}},"required":["programs"],"additionalProperties":false},"ProgramDetail":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysPerWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"builtin":{"type":"boolean"},"schedule":{"type":"string"},"isPublished":{"type":"boolean"},"isProOnly":{"type":"boolean"},"coverPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"authoredBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"programVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ownerUserId":{"anyOf":[{"type":"string"},{"type":"null"}]},"sourceProgramId":{"anyOf":[{"type":"string"},{"type":"null"}]},"clonedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","slug","name","description","weeks","daysPerWeek","builtin","schedule","isPublished","isProOnly","coverPath","authoredBy","programVersion","ownerUserId","sourceProgramId","clonedAt","createdAt","updatedAt"],"additionalProperties":false},"ProgramDetailResponse":{"type":"object","properties":{"program":{"$ref":"#/components/schemas/ProgramDetail"}},"required":["program"],"additionalProperties":false},"ProgramSubscriptionRow":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"programId":{"type":"string"},"startedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"endedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","userId","programId","startedAt","endedAt"],"additionalProperties":false},"ProgramSubscribeResponse":{"type":"object","properties":{"subscription":{"$ref":"#/components/schemas/ProgramSubscriptionRow"}},"required":["subscription"],"additionalProperties":false},"ProgramIdSlugResponse":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}},"required":["id","slug"],"additionalProperties":false},"ProgramSubscribeBody":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"ProgramUnsubscribeBody":{"type":"object","properties":{"subscriptionId":{"type":"string"}},"required":["subscriptionId"],"additionalProperties":false},"ProgramCreateBody":{"type":"object","properties":{"name":{"type":"string"},"weeks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"daysPerWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"primaryLiftKeys":{"type":"array","items":{"type":"string"}}},"required":["name","weeks","daysPerWeek"],"additionalProperties":false},"ProgramCoverResponse":{"type":"object","properties":{"coverPath":{"type":"string"}},"required":["coverPath"],"additionalProperties":false},"FeedKind":{"type":"string","enum":["workout","achievement","weight"]},"SocialUser":{"type":"object","properties":{"slug":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatarSeed":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["slug","displayName","avatarSeed"],"additionalProperties":false},"FeedItem":{"type":"object","properties":{"id":{"type":"string"},"kind":{"$ref":"#/components/schemas/FeedKind"},"at":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"user":{"$ref":"#/components/schemas/SocialUser"},"payload":{"description":"Arbitrary JSON value"}},"required":["id","kind","at","user","payload"],"additionalProperties":false},"FeedResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/FeedItem"}},"disabled":{"type":"boolean"}},"required":["items"],"additionalProperties":false},"DiscoverUser":{"type":"object","properties":{"slug":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatarSeed":{"anyOf":[{"type":"string"},{"type":"null"}]},"customAvatarPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"memberSince":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"recentActivityCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isFollowing":{"type":"boolean"}},"required":["slug","displayName","bio","avatarSeed","customAvatarPath","memberSince","recentActivityCount","followerCount","isFollowing"],"additionalProperties":false},"DiscoverRecipe":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"descriptionPreview":{"type":"string"},"publicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"prepMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cookMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"caloriesPerServing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinPerServing":{"type":"number"},"source":{"type":"string"},"ratingAvg":{"anyOf":[{"type":"number"},{"type":"null"}]},"ratingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"authorName":{"type":"string"},"authorPublicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","descriptionPreview","publicSlug","prepMinutes","cookMinutes","caloriesPerServing","proteinPerServing","source","ratingAvg","ratingCount","authorName","authorPublicSlug"],"additionalProperties":false},"DiscoverResponse":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/DiscoverUser"}},"recipes":{"type":"array","items":{"$ref":"#/components/schemas/DiscoverRecipe"}}},"required":["users","recipes"],"additionalProperties":false},"PublicProfileWeight":{"type":"object","properties":{"start":{"type":"number"},"latest":{"type":"number"},"deltaLbs":{"type":"number"}},"required":["start","latest","deltaLbs"],"additionalProperties":false},"PublicProfileAchievement":{"type":"object","properties":{"code":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"earnedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["code","title","description","earnedAt"],"additionalProperties":false},"PublicProfileRecipe":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"descriptionPreview":{"type":"string"},"publicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"prepMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cookMinutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"caloriesPerServing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinPerServing":{"type":"number"},"source":{"type":"string"},"ratingAvg":{"anyOf":[{"type":"number"},{"type":"null"}]},"ratingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","descriptionPreview","publicSlug","prepMinutes","cookMinutes","caloriesPerServing","proteinPerServing","source","ratingAvg","ratingCount"],"additionalProperties":false},"PublicProfile":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"memberSince":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"isOwnProfile":{"type":"boolean"},"isFollowing":{"type":"boolean"},"followsViewer":{"type":"boolean"},"followerCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followingCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"streakDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"totalMeals":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"totalWorkouts":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"weight":{"anyOf":[{"$ref":"#/components/schemas/PublicProfileWeight"},{"type":"null"}]},"achievements":{"type":"array","items":{"$ref":"#/components/schemas/PublicProfileAchievement"}},"recipes":{"type":"array","items":{"$ref":"#/components/schemas/PublicProfileRecipe"}}},"required":["slug","name","bio","memberSince","isOwnProfile","isFollowing","followsViewer","followerCount","followingCount","streakDays","totalMeals","totalWorkouts","weight","achievements","recipes"],"additionalProperties":false},"PublicProfileResponse":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/PublicProfile"}},"required":["profile"],"additionalProperties":false},"FollowBody":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"additionalProperties":false},"EarnedAchievement":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"code":{"type":"string"},"earnedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"meta":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","userId","code","earnedAt","meta"],"additionalProperties":false},"AchievementsResponse":{"type":"object","properties":{"achievements":{"type":"array","items":{"$ref":"#/components/schemas/EarnedAchievement"}}},"required":["achievements"],"additionalProperties":false},"AppNotification":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"payload":{"anyOf":[{"description":"Arbitrary JSON value"},{"type":"null"}]},"readAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","type","payload","readAt","createdAt"],"additionalProperties":false},"NotificationsResponse":{"type":"object","properties":{"notifications":{"type":"array","items":{"$ref":"#/components/schemas/AppNotification"}}},"required":["notifications"],"additionalProperties":false},"UnreadCountResponse":{"type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["count"],"additionalProperties":false},"MarkReadBody":{"type":"object","properties":{"all":{"type":"boolean"},"ids":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ProfileGender":{"type":"string","enum":["male","female"]},"SettingsSex":{"type":"string","enum":["male","female"]},"SettingsActivity":{"type":"string","enum":["sedentary","light","moderate","active","very_active"]},"SettingsGoalKind":{"type":"string","enum":["lose","maintain","gain"]},"CycleFlowVocab":{"type":"string","enum":["none","spotting","light","medium","heavy"]},"Profile":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"bio":{"anyOf":[{"type":"string"},{"type":"null"}]},"gender":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"type":"string"},"customAvatarPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicSlug":{"anyOf":[{"type":"string"},{"type":"null"}]},"publicEnabled":{"type":"boolean"},"showMeals":{"type":"boolean"},"showWorkouts":{"type":"boolean"},"showRecipes":{"type":"boolean"},"showWeight":{"type":"boolean"},"showStreak":{"type":"boolean"},"showAchievements":{"type":"boolean"}},"required":["displayName","bio","gender","timezone","customAvatarPath","publicSlug","publicEnabled","showMeals","showWorkouts","showRecipes","showWeight","showStreak","showAchievements"],"additionalProperties":false},"ProfileResponse":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/Profile"}},"additionalProperties":false},"ProfileUpdate":{"type":"object","properties":{"displayName":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"bio":{"anyOf":[{"type":"string","maxLength":280},{"type":"null"}]},"gender":{"anyOf":[{"$ref":"#/components/schemas/ProfileGender"},{"type":"null"}]},"timezone":{"type":"string","minLength":1,"maxLength":60},"publicEnabled":{"type":"boolean"},"showMeals":{"type":"boolean"},"showWorkouts":{"type":"boolean"},"showRecipes":{"type":"boolean"},"showWeight":{"type":"boolean"},"showStreak":{"type":"boolean"},"showAchievements":{"type":"boolean"}},"additionalProperties":false},"AvatarProfile":{"type":"object","properties":{"customAvatarPath":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["customAvatarPath"],"additionalProperties":false},"AvatarResponse":{"type":"object","properties":{"profile":{"$ref":"#/components/schemas/AvatarProfile"}},"required":["profile"],"additionalProperties":false},"UserSettings":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"calorieGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proteinGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hydrationGoal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sex":{"anyOf":[{"type":"string"},{"type":"null"}]},"heightIn":{"anyOf":[{"type":"number"},{"type":"null"}]},"age":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"activity":{"anyOf":[{"type":"string"},{"type":"null"}]},"useDynamicCalorieGoal":{"type":"boolean"},"goalKind":{"type":"string"},"goalRate":{"type":"number"},"cycleTrackingEnabled":{"type":"boolean"}},"required":["id","email","name","calorieGoal","proteinGoal","hydrationGoal","sex","heightIn","age","activity","useDynamicCalorieGoal","goalKind","goalRate","cycleTrackingEnabled"],"additionalProperties":false},"SettingsResponse":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserSettings"}},"additionalProperties":false},"SettingsUpdate":{"type":"object","properties":{"calorieGoal":{"type":"integer","minimum":800,"maximum":8000},"proteinGoal":{"type":"integer","minimum":20,"maximum":500},"hydrationGoal":{"type":"integer","minimum":0,"maximum":40},"name":{"type":"string","maxLength":60},"newPassword":{"type":"string"},"sex":{"anyOf":[{"$ref":"#/components/schemas/SettingsSex"},{"type":"null"}]},"heightIn":{"anyOf":[{"type":"number","minimum":40,"maximum":96},{"type":"null"}]},"age":{"anyOf":[{"type":"integer","minimum":13,"maximum":120},{"type":"null"}]},"activity":{"anyOf":[{"$ref":"#/components/schemas/SettingsActivity"},{"type":"null"}]},"useDynamicCalorieGoal":{"type":"boolean"},"goalKind":{"$ref":"#/components/schemas/SettingsGoalKind"},"goalRate":{"type":"number","minimum":-3,"maximum":3},"eatBackEnabled":{"type":"boolean"},"eatBackPercent":{"type":"integer","minimum":0,"maximum":100},"cycleTrackingEnabled":{"type":"boolean"}},"required":["calorieGoal","proteinGoal","hydrationGoal"],"additionalProperties":false},"CycleEntry":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"flow":{"anyOf":[{"type":"string"},{"type":"null"}]},"symptoms":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","date","flow","symptoms","notes","createdAt","updatedAt"],"additionalProperties":false},"CycleEntriesResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/CycleEntry"}}},"required":["entries"],"additionalProperties":false},"CycleEntryResponse":{"type":"object","properties":{"entry":{"$ref":"#/components/schemas/CycleEntry"}},"required":["entry"],"additionalProperties":false},"CycleDeleteResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"CycleEntryUpdate":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"flow":{"anyOf":[{"$ref":"#/components/schemas/CycleFlowVocab"},{"type":"null"}]},"symptoms":{"anyOf":[{"maxItems":20,"type":"array","items":{"type":"string","maxLength":40}},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["date"],"additionalProperties":false},"FeedbackTicketSummary":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"status":{"type":"string"},"preview":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"lastReplyAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","subject","status","preview","createdAt","lastReplyAt"],"additionalProperties":false},"FeedbackTicketsResponse":{"type":"object","properties":{"tickets":{"type":"array","items":{"$ref":"#/components/schemas/FeedbackTicketSummary"}}},"required":["tickets"],"additionalProperties":false},"FeedbackTicketDetail":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"body":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"screenshotPath":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","subject","body","status","createdAt","screenshotPath"],"additionalProperties":false},"FeedbackReply":{"type":"object","properties":{"id":{"type":"string"},"authorType":{"type":"string"},"body":{"type":"string"},"via":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"screenshotPath":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","authorType","body","via","createdAt","screenshotPath"],"additionalProperties":false},"FeedbackThreadResponse":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/FeedbackTicketDetail"},"replies":{"type":"array","items":{"$ref":"#/components/schemas/FeedbackReply"}}},"required":["ticket","replies"],"additionalProperties":false},"FeedbackSubmitResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"emailed":{"type":"boolean"}},"required":["ok","emailed"],"additionalProperties":false},"AdminStats":{"type":"object","properties":{"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newUsers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSubscriptions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"mealsLogged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"workoutsLogged":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["days","totalUsers","newUsers","activeSubscriptions","mealsLogged","workoutsLogged"],"additionalProperties":false},"AdminUserRow":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"isAdmin":{"type":"boolean"},"onboardedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"isTestAccount":{"type":"boolean"}},"required":["id","email","name","displayName","createdAt","isAdmin","onboardedAt","isTestAccount"],"additionalProperties":false},"AdminUsersResponse":{"type":"object","properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/AdminUserRow"}}},"required":["users"],"additionalProperties":false},"AdminAuditRow":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string"},"severity":{"type":"string"},"targetType":{"anyOf":[{"type":"string"},{"type":"null"}]},"targetId":{"anyOf":[{"type":"string"},{"type":"null"}]},"ipAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"adminEmail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","action","severity","targetType","targetId","ipAddress","createdAt","adminEmail"],"additionalProperties":false},"AdminAuditResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/AdminAuditRow"}}},"required":["entries"],"additionalProperties":false},"AdminJobRow":{"type":"object","properties":{"id":{"type":"string"},"jobName":{"type":"string"},"startedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"ok":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","jobName","startedAt","finishedAt","ok","durationMs","error"],"additionalProperties":false},"AdminJobsResponse":{"type":"object","properties":{"runs":{"type":"array","items":{"$ref":"#/components/schemas/AdminJobRow"}}},"required":["runs"],"additionalProperties":false},"AdminFlag":{"type":"object","properties":{"key":{"type":"string"},"enabled":{"type":"boolean"},"description":{"type":"string"},"updatedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["key","enabled","description","updatedAt"],"additionalProperties":false},"AdminFlagsResponse":{"type":"object","properties":{"flags":{"type":"array","items":{"$ref":"#/components/schemas/AdminFlag"}}},"required":["flags"],"additionalProperties":false},"FlagPatchBody":{"type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"AdminFeedbackRow":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"preview":{"type":"string"},"status":{"type":"string"},"userEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"userName":{"anyOf":[{"type":"string"},{"type":"null"}]},"appVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"replyCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"lastReplyAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","subject","preview","status","userEmail","userName","appVersion","replyCount","createdAt","lastReplyAt"],"additionalProperties":false},"AdminFeedbackResponse":{"type":"object","properties":{"tickets":{"type":"array","items":{"$ref":"#/components/schemas/AdminFeedbackRow"}}},"required":["tickets"],"additionalProperties":false},"AdminChallengeRow":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"metric":{"type":"string"},"visibility":{"type":"string"},"startDate":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"endDate":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","name","metric","visibility","startDate","endDate"],"additionalProperties":false},"AdminChallengesResponse":{"type":"object","properties":{"challenges":{"type":"array","items":{"$ref":"#/components/schemas/AdminChallengeRow"}}},"required":["challenges"],"additionalProperties":false},"AdminProgramRow":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"programVersion":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isPublished":{"type":"boolean"},"isProOnly":{"type":"boolean"},"builtin":{"type":"boolean"}},"required":["id","slug","name","programVersion","isPublished","isProOnly","builtin"],"additionalProperties":false},"AdminProgramsResponse":{"type":"object","properties":{"programs":{"type":"array","items":{"$ref":"#/components/schemas/AdminProgramRow"}}},"required":["programs"],"additionalProperties":false},"AdminAchievementRow":{"type":"object","properties":{"id":{"type":"string"},"code":{"type":"string"},"title":{"type":"string"},"category":{"type":"string"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}]},"isActive":{"type":"boolean"}},"required":["id","code","title","category","tier","isActive"],"additionalProperties":false},"AdminAchievementsResponse":{"type":"object","properties":{"achievements":{"type":"array","items":{"$ref":"#/components/schemas/AdminAchievementRow"}}},"required":["achievements"],"additionalProperties":false},"AdminReportRow":{"type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string"},"category":{"type":"string"},"status":{"type":"string"},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"reporterEmail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","targetType","category","status","createdAt","reporterEmail"],"additionalProperties":false},"AdminReportsResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/AdminReportRow"}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["entries","total","pageCount"],"additionalProperties":false},"AdminCorrectionRow":{"type":"object","properties":{"id":{"type":"string"},"targetType":{"type":"string"},"field":{"type":"string"},"status":{"type":"string"},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"reporterEmail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","targetType","field","status","createdAt","reporterEmail"],"additionalProperties":false},"AdminCorrectionsResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/AdminCorrectionRow"}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["entries","total","pageCount"],"additionalProperties":false},"AdminEmailRow":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"audience":{"type":"string"},"status":{"type":"string"},"sentAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"recipientCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]}},"required":["id","subject","audience","status","sentAt","recipientCount","createdAt"],"additionalProperties":false},"AdminEmailResponse":{"type":"object","properties":{"broadcasts":{"type":"array","items":{"$ref":"#/components/schemas/AdminEmailRow"}}},"required":["broadcasts"],"additionalProperties":false},"AdminExportRow":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"requestedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"builtAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"userEmail":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","status","requestedAt","builtAt","sizeBytes","expiresAt","error","userEmail"],"additionalProperties":false},"AdminExportsResponse":{"type":"object","properties":{"exports":{"type":"array","items":{"$ref":"#/components/schemas/AdminExportRow"}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["exports","total","pageCount"],"additionalProperties":false},"AdminDripStep":{"type":"object","properties":{"step":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"templateId":{"type":"string"},"enrolledHere":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uniqueOpens":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"uniqueClicks":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["step","templateId","enrolledHere","sent","uniqueOpens","uniqueClicks"],"additionalProperties":false},"AdminDripCampaign":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"totalEnrolled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"completed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unsubscribed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"steps":{"type":"array","items":{"$ref":"#/components/schemas/AdminDripStep"}}},"required":["id","name","totalEnrolled","active","completed","unsubscribed","steps"],"additionalProperties":false},"AdminDripSend":{"type":"object","properties":{"sentAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"campaignId":{"type":"string"},"step":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userId":{"type":"string"},"mailgunMessageId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sentAt","campaignId","step","userId","mailgunMessageId"],"additionalProperties":false},"AdminDripResponse":{"type":"object","properties":{"campaigns":{"type":"array","items":{"$ref":"#/components/schemas/AdminDripCampaign"}},"recent":{"type":"array","items":{"$ref":"#/components/schemas/AdminDripSend"}}},"required":["campaigns","recent"],"additionalProperties":false},"AdminIntegrationProvider":{"type":"object","properties":{"slug":{"type":"string"},"displayName":{"anyOf":[{"type":"string"},{"type":"null"}]},"isConfigured":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"connections":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errored":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSyncedAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"webhooks24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"webhookErrors24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["slug","displayName","isConfigured","connections","errored","lastSyncedAt","webhooks24h","webhookErrors24h"],"additionalProperties":false},"AdminWebhookFailure":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"receivedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"error":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","provider","receivedAt","error"],"additionalProperties":false},"AdminIntegrationsResponse":{"type":"object","properties":{"providers":{"type":"array","items":{"$ref":"#/components/schemas/AdminIntegrationProvider"}},"recentFailures":{"type":"array","items":{"$ref":"#/components/schemas/AdminWebhookFailure"}},"recentSyncRuns":{"type":"array","items":{"$ref":"#/components/schemas/AdminJobRow"}}},"required":["providers","recentFailures","recentSyncRuns"],"additionalProperties":false},"AdminBillingRange":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"}},"required":["from","to"],"additionalProperties":false},"AdminActiveByPlan":{"type":"object","properties":{"monthly":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearly":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["monthly","yearly"],"additionalProperties":false},"AdminHouseholdSeats":{"type":"object","properties":{"active":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancelingAtPeriodEnd":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["active","cancelingAtPeriodEnd"],"additionalProperties":false},"AdminDaySeries":{"type":"object","properties":{"day":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"value":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["day","value"],"additionalProperties":false},"AdminBillingSubRow":{"type":"object","properties":{"subscriptionId":{"type":"string"},"stripeSubscriptionId":{"type":"string"},"userId":{"anyOf":[{"type":"string"},{"type":"null"}]},"userEmail":{"anyOf":[{"type":"string"},{"type":"null"}]},"plan":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"cancelAtPeriodEnd":{"type":"boolean"},"canceledAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"currentPeriodEnd":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"updatedAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["subscriptionId","stripeSubscriptionId","userId","userEmail","plan","status","cancelAtPeriodEnd","canceledAt","currentPeriodEnd","createdAt","updatedAt"],"additionalProperties":false},"AdminBillingSnapshot":{"type":"object","properties":{"range":{"$ref":"#/components/schemas/AdminBillingRange"},"mrrUsd":{"type":"number"},"householdMrrUsd":{"type":"number"},"activeSubsByPlan":{"$ref":"#/components/schemas/AdminActiveByPlan"},"activeTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeTrials":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pastDueCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newSubs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cancellations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newSignups":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"conversionPct":{"anyOf":[{"type":"number"},{"type":"null"}]},"householdSeats":{"$ref":"#/components/schemas/AdminHouseholdSeats"},"householdSeatsTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"series":{"type":"array","items":{"$ref":"#/components/schemas/AdminDaySeries"}},"pastDueList":{"type":"array","items":{"$ref":"#/components/schemas/AdminBillingSubRow"}},"recentActivations":{"type":"array","items":{"$ref":"#/components/schemas/AdminBillingSubRow"}},"recentCancellations":{"type":"array","items":{"$ref":"#/components/schemas/AdminBillingSubRow"}}},"required":["range","mrrUsd","householdMrrUsd","activeSubsByPlan","activeTotal","activeTrials","pastDueCount","newSubs","cancellations","newSignups","conversionPct","householdSeats","householdSeatsTotal","series","pastDueList","recentActivations","recentCancellations"],"additionalProperties":false},"NativePushRegisterBody":{"type":"object","properties":{"platform":{"type":"string"},"token":{"type":"string"}},"required":["platform","token"],"additionalProperties":false},"NativePushRegisterResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"ReminderRule":{"type":"object","properties":{"id":{"type":"string"},"ruleId":{"type":"string"},"enabled":{"type":"boolean"},"hour":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"days":{"type":"string"},"label":{"type":"string"},"description":{"type":"string"},"kind":{"type":"string"}},"required":["id","ruleId","enabled","hour","minute","days","label","description","kind"],"additionalProperties":false},"ReminderRulesResponse":{"type":"object","properties":{"rules":{"type":"array","items":{"$ref":"#/components/schemas/ReminderRule"}}},"required":["rules"],"additionalProperties":false},"ReminderUpsertBody":{"type":"object","properties":{"ruleId":{"type":"string"},"enabled":{"type":"boolean"},"hour":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"days":{"type":"string"}},"required":["ruleId"],"additionalProperties":false},"ReminderUpdatedRule":{"type":"object","properties":{"id":{"type":"string"},"ruleId":{"type":"string"},"enabled":{"type":"boolean"},"hour":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minute":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"days":{"type":"string"}},"required":["id","ruleId","enabled","hour","minute","days"],"additionalProperties":false},"ReminderUpsertResponse":{"type":"object","properties":{"rule":{"$ref":"#/components/schemas/ReminderUpdatedRule"}},"required":["rule"],"additionalProperties":false},"ReportRow":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"status":{"type":"string"},"builtAt":{"anyOf":[{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},{"type":"null"}]},"sizeBytes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"error":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasCoachCommentary":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"downloadUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","kind","periodStart","periodEnd","status","builtAt","sizeBytes","expiresAt","error","hasCoachCommentary","createdAt","downloadUrl"],"additionalProperties":false},"ReportsHistoryResponse":{"type":"object","properties":{"reports":{"type":"array","items":{"$ref":"#/components/schemas/ReportRow"}}},"required":["reports"],"additionalProperties":false},"ReportGenerateBody":{"type":"object","properties":{"kind":{"type":"string"},"periodStart":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"},"periodEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"A YYYY-MM-DD date"}},"required":["kind","periodStart","periodEnd"],"additionalProperties":false},"ReportQueuedRow":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"}},"required":["id","status","expiresAt"],"additionalProperties":false},"ReportGenerateResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"report":{"$ref":"#/components/schemas/ReportQueuedRow"}},"required":["ok","report"],"additionalProperties":false},"ApiMeResponse":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"timezone":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"ISO-8601 datetime string"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["id","email","name","timezone","createdAt","scopes"],"additionalProperties":false},"ApiChatRole":{"type":"string","enum":["user","assistant"]},"ApiCoachChatMessage":{"type":"object","properties":{"role":{"$ref":"#/components/schemas/ApiChatRole"},"content":{"type":"string","minLength":1,"maxLength":8000}},"required":["role","content"],"additionalProperties":false},"ApiCoachChatRequest":{"type":"object","properties":{"messages":{"minItems":1,"maxItems":50,"type":"array","items":{"$ref":"#/components/schemas/ApiCoachChatMessage"}}},"required":["messages"],"additionalProperties":false},"ApiCoachChatResponse":{"type":"object","properties":{"reply":{"type":"string"},"model":{"type":"string"}},"required":["reply","model"],"additionalProperties":false},"ApiNutritionLabelRequest":{"type":"object","properties":{"text":{"type":"string","minLength":3,"maxLength":2000},"imageBase64":{"type":"string","minLength":100,"maxLength":15000000},"mimeType":{"type":"string","pattern":"^image\\/(jpeg|jpg|png|gif|webp)$"}},"additionalProperties":false},"ApiNutritionLabelResponse":{"type":"object","properties":{"calories":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"protein":{"type":"number"},"carbs":{"type":"number"},"fat":{"type":"number"},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["calories","protein","carbs","fat","confidence"],"additionalProperties":false},"ApiError":{"type":"object","properties":{"error":{"type":"string"},"error_description":{"anyOf":[{"type":"string"},{"type":"null"}]},"scope":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["error"],"additionalProperties":false}}},"paths":{"/api/v1/me":{"get":{"tags":["me"],"operationId":"getMe","summary":"Get the authenticated user","description":"Returns the caller's basic profile resolved from the bearer token's `sub`, plus the OAuth scopes the token was granted. Requires only a valid token (no scope).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiMeResponse"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/v1/me/meals":{"get":{"tags":["me"],"operationId":"getMyMeals","summary":"List logged meals for a day","description":"The caller's logged meals for a single day, resolved in the caller's local timezone. Same wire shape the native apps consume (`MealsListResponse`).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealsListResponse"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"insufficient_scope — the token lacks the \"read:meals\" scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-required-scope":"read:meals","parameters":[{"name":"date","in":"query","required":false,"description":"The day to fetch (YYYY-MM-DD). Defaults to today in the caller's timezone.","schema":{"type":"string","format":"date"},"example":"2026-06-28"}]}},"/api/v1/me/workouts":{"get":{"tags":["me"],"operationId":"getMyWorkouts","summary":"List logged workouts","description":"The caller's logged workouts. A `date`-scoped query embeds each workout's exercise sets; a `from`/`to` range query returns the lean list. Optional `type` filters by activity.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkoutListResponse"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"insufficient_scope — the token lacks the \"read:workouts\" scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-required-scope":"read:workouts","parameters":[{"name":"date","in":"query","required":false,"description":"A single day (YYYY-MM-DD). Embeds each workout's `sets[]`.","schema":{"type":"string","format":"date"},"example":"2026-06-28"},{"name":"from","in":"query","required":false,"description":"Range start (YYYY-MM-DD). Ignored when `date` is set.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Range end (YYYY-MM-DD). Ignored when `date` is set.","schema":{"type":"string","format":"date"}},{"name":"type","in":"query","required":false,"description":"Filter by workout type, e.g. `strength`, `cardio`, `climbing`.","schema":{"type":"string"}}]}},"/api/v1/me/progress":{"get":{"tags":["me"],"operationId":"getMyProgress","summary":"List weight & measurement logs","description":"The caller's weight + body-measurement log, most recent first (same `{ logs: [...] }` envelope as GET /api/weight).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeightLogsResponse"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"insufficient_scope — the token lacks the \"read:progress\" scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-required-scope":"read:progress","parameters":[{"name":"days","in":"query","required":false,"description":"Trailing window in days.","schema":{"type":"integer","default":90,"minimum":1,"maximum":365}},{"name":"limit","in":"query","required":false,"description":"Maximum rows to return.","schema":{"type":"integer","default":200,"minimum":1,"maximum":1000}}]}},"/api/v1/ai/coach/chat":{"post":{"tags":["ai"],"operationId":"aiCoachChat","summary":"AI Coach chat","description":"Non-streaming AI Coach chat. Gated by tier + monthly AI budget and rate-limited per user (20 req/min). Send the running conversation; receive the coach's next reply.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCoachChatResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"insufficient_scope — the token lacks the \"ai:write\" scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limited — retry after the `Retry-After` header"}},"x-required-scope":"ai:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiCoachChatRequest"}}}}}},"/api/v1/ai/nutrition-label":{"post":{"tags":["ai"],"operationId":"aiNutritionLabel","summary":"AI macro estimator","description":"Estimate macros from a food description (`text`) or a photo (`imageBase64`) — a plate, a packaged item, or its nutrition-facts panel. Rate-limited per user (10 req/min).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNutritionLabelResponse"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"Missing or invalid bearer token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"insufficient_scope — the token lacks the \"ai:write\" scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limited — retry after the `Retry-After` header"}},"x-required-scope":"ai:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNutritionLabelRequest"}}}}}}}}