{"openapi":"3.1.0","info":{"title":"foodose","version":"1.0.0","summary":"GLP-1 nutrition targets and a cited food database.","description":"Daily calorie, protein and fibre targets for someone on a GLP-1 receptor agonist, modelled with a dose aware appetite ceiling rather than the standard assumption that appetite is unchanged. Free, anonymous and cacheable. Weight, height and age are never stored. Educational only. Not medical advice, not a diagnosis, and not a substitute for the clinician who prescribes the medication. Not appropriate for pregnancy, breastfeeding, insulin or sulfonylurea use, a history of disordered eating, or anyone under 18.","contact":{"name":"foodose","email":"ceo@foodose.co","url":"https://www.foodose.co"},"license":{"name":"Free to use with attribution to foodose.co"}},"servers":[{"url":"https://www.foodose.co"}],"paths":{"/api/glp1-target":{"get":{"operationId":"calculateGlp1Target","summary":"Daily calorie, protein and fibre targets at a given dose","description":"Runs the published 12 layer calculation: Mifflin St Jeor BMR, activity multiplier, adaptive thermogenesis, goal calories, then the appetite ceiling, a modelled estimate of the most a person is likely to manage per day at that medication and dose. When the ceiling falls below the calorie target the response says so rather than pretending the gap is not there. Call with no parameters to get the contract back. Educational only. Not medical advice, not a diagnosis, and not a substitute for the clinician who prescribes the medication. Not appropriate for pregnancy, breastfeeding, insulin or sulfonylurea use, a history of disordered eating, or anyone under 18.","parameters":[{"name":"weight","in":"query","required":true,"description":"Current weight in kilograms.","schema":{"type":"number","minimum":35,"maximum":250}},{"name":"height","in":"query","required":true,"description":"Height in centimetres.","schema":{"type":"number","minimum":130,"maximum":210}},{"name":"age","in":"query","required":true,"description":"Age in years.","schema":{"type":"integer","minimum":18,"maximum":90}},{"name":"sex","in":"query","description":"Biological sex, which sets the BMR constant.","schema":{"type":"string","enum":["female","male"],"default":"female"}},{"name":"medication","in":"query","description":"GLP-1 receptor agonist. Use 'undecided' for someone not yet on one.","schema":{"type":"string","enum":["ozempic","wegovy","mounjaro","zepbound","saxenda","trulicity","rybelsus","undecided"],"default":"undecided"}},{"name":"dose","in":"query","description":"Current dose in mg. Must be a licensed dose for that medication, otherwise it is treated as 0. Licensed doses: ozempic (Ozempic): 0.25, 0.5, 1, 2; wegovy (Wegovy): 0.25, 0.5, 1, 1.7, 2.4; mounjaro (Mounjaro): 2.5, 5, 7.5, 10, 12.5, 15; zepbound (Zepbound): 2.5, 5, 7.5, 10, 12.5, 15; saxenda (Saxenda): 0.6, 1.2, 1.8, 2.4, 3; trulicity (Trulicity): 0.75, 1.5, 3, 4.5; rybelsus (Rybelsus): 3, 7, 14; undecided (Still deciding): none.","schema":{"type":"number"}},{"name":"activity","in":"query","description":"Daily activity outside deliberate exercise.","schema":{"type":"string","enum":["sedentary","light","moderate","heavy"],"default":"light"}},{"name":"goal","in":"query","schema":{"type":"string","enum":["lose","recomp","maintain"],"default":"lose"}},{"name":"rate","in":"query","description":"Intended loss in kg per week.","schema":{"type":"number","minimum":0.25,"maximum":1,"default":0.5}},{"name":"goalWeight","in":"query","description":"Target weight in kg. Defaults to 85 percent of current weight.","schema":{"type":"number","minimum":35,"maximum":250}},{"name":"startWeight","in":"query","description":"Weight when the medication was started, used for the adaptive thermogenesis adjustment.","schema":{"type":"number","minimum":35,"maximum":250}}],"responses":{"200":{"description":"Targets, the appetite ceiling, and the derivation behind them.","content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"object","description":"Daily targets.","properties":{"calories":{"type":"number"},"protein_g":{"type":"number"},"carbs_g":{"type":"number"},"fat_g":{"type":"number"},"fibre_g":{"type":"number"}}},"trace":{"type":"object","description":"Step by step derivation, so an answer quoting this can quote the reasoning."},"limits":{"type":"string","description":"The conditions under which this figure should not be used."}}}}}}}}},"/api/foods":{"get":{"operationId":"getFoodDatabase","summary":"The full food database as JSON","description":"Per 100 g nutrition for every food foodose uses, the same records the iPhone app reads, each traceable to its USDA FoodData Central entry. Free to use with attribution. Cached for a day.","responses":{"200":{"description":"Food records. Current database version 4.","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string"},"license":{"type":"string"},"updated":{"type":"string","format":"date"},"count":{"type":"integer"},"foods":{"type":"array","items":{"type":"object"}}}}}}}}}}}}