{"openapi":"3.1.0","info":{"title":"SuperBoldok","description":"Фитнес-трекер: питание, тренировки, анализы, фото, замеры.","version":"0.1.0"},"servers":[{"url":"https://kapitan-orgazm.ru","description":"public"}],"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/meals":{"post":{"tags":["meals"],"summary":"Create","operationId":"create_meals_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MealBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Meal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["meals"],"summary":"List Items","operationId":"list_items_meals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","description":"Кто (всегда 'boldo')","default":"boldo","title":"User Id"},"description":"Кто (всегда 'boldo')"},{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"Фильтр от даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Since"},"description":"Фильтр от даты, ISO 8601. Пусто — без фильтра."},{"name":"until","in":"query","required":false,"schema":{"type":"string","description":"Фильтр до даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Until"},"description":"Фильтр до даты, ISO 8601. Пусто — без фильтра."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Meal"},"title":"Response List Items Meals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/meals/{item_id}":{"get":{"tags":["meals"],"summary":"Get Item","operationId":"get_item_meals__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Meal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["meals"],"summary":"Update Item","operationId":"update_item_meals__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Meal"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["meals"],"summary":"Delete Item","operationId":"delete_item_meals__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workouts":{"post":{"tags":["workouts"],"summary":"Create","operationId":"create_workouts_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkoutBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workout"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workouts"],"summary":"List Items","operationId":"list_items_workouts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","description":"Кто (всегда 'boldo')","default":"boldo","title":"User Id"},"description":"Кто (всегда 'boldo')"},{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"Фильтр от даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Since"},"description":"Фильтр от даты, ISO 8601. Пусто — без фильтра."},{"name":"until","in":"query","required":false,"schema":{"type":"string","description":"Фильтр до даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Until"},"description":"Фильтр до даты, ISO 8601. Пусто — без фильтра."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Workout"},"title":"Response List Items Workouts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workouts/{item_id}":{"get":{"tags":["workouts"],"summary":"Get Item","operationId":"get_item_workouts__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workout"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workouts"],"summary":"Update Item","operationId":"update_item_workouts__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workout"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workouts"],"summary":"Delete Item","operationId":"delete_item_workouts__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/labs":{"post":{"tags":["labs"],"summary":"Create","operationId":"create_labs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResultBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["labs"],"summary":"List Items","operationId":"list_items_labs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","description":"Кто (всегда 'boldo')","default":"boldo","title":"User Id"},"description":"Кто (всегда 'boldo')"},{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"Фильтр от даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Since"},"description":"Фильтр от даты, ISO 8601. Пусто — без фильтра."},{"name":"until","in":"query","required":false,"schema":{"type":"string","description":"Фильтр до даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Until"},"description":"Фильтр до даты, ISO 8601. Пусто — без фильтра."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LabResult"},"title":"Response List Items Labs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/labs/{item_id}":{"get":{"tags":["labs"],"summary":"Get Item","operationId":"get_item_labs__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["labs"],"summary":"Update Item","operationId":"update_item_labs__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["labs"],"summary":"Delete Item","operationId":"delete_item_labs__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos":{"post":{"tags":["photos"],"summary":"Create","operationId":"create_photos_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Photo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["photos"],"summary":"List Items","operationId":"list_items_photos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","description":"Кто (всегда 'boldo')","default":"boldo","title":"User Id"},"description":"Кто (всегда 'boldo')"},{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"Фильтр от даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Since"},"description":"Фильтр от даты, ISO 8601. Пусто — без фильтра."},{"name":"until","in":"query","required":false,"schema":{"type":"string","description":"Фильтр до даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Until"},"description":"Фильтр до даты, ISO 8601. Пусто — без фильтра."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Photo"},"title":"Response List Items Photos Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/photos/{item_id}":{"get":{"tags":["photos"],"summary":"Get Item","operationId":"get_item_photos__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Photo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["photos"],"summary":"Update Item","operationId":"update_item_photos__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Photo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["photos"],"summary":"Delete Item","operationId":"delete_item_photos__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/measurements":{"post":{"tags":["measurements"],"summary":"Create","operationId":"create_measurements_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeasurementBase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Measurement"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["measurements"],"summary":"List Items","operationId":"list_items_measurements_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","description":"Кто (всегда 'boldo')","default":"boldo","title":"User Id"},"description":"Кто (всегда 'boldo')"},{"name":"since","in":"query","required":false,"schema":{"type":"string","description":"Фильтр от даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Since"},"description":"Фильтр от даты, ISO 8601. Пусто — без фильтра."},{"name":"until","in":"query","required":false,"schema":{"type":"string","description":"Фильтр до даты, ISO 8601. Пусто — без фильтра.","default":"","title":"Until"},"description":"Фильтр до даты, ISO 8601. Пусто — без фильтра."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Measurement"},"title":"Response List Items Measurements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/measurements/{item_id}":{"get":{"tags":["measurements"],"summary":"Get Item","operationId":"get_item_measurements__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Measurement"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["measurements"],"summary":"Update Item","operationId":"update_item_measurements__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Measurement"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["measurements"],"summary":"Delete Item","operationId":"delete_item_measurements__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LabResult":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"marker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Marker","description":"напр. 'витамин D' или 'гемоглобин'"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"ref_low":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ref Low"},"ref_high":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ref High"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"type":"object","required":["user_id"],"title":"LabResult"},"LabResultBase":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"marker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Marker","description":"напр. 'витамин D' или 'гемоглобин'"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"ref_low":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ref Low"},"ref_high":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ref High"}},"type":"object","required":["user_id"],"title":"LabResultBase"},"Meal":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Кто (всегда 'boldo')"},"taken_at":{"type":"string","format":"date-time","title":"Taken At","description":"Дата/время приёма пищи (ISO 8601). Если не указано — сейчас."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Тип приёма (завтрак/обед/ужин/перекус) и любые детали"},"kcal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Kcal","description":"Калории, посчитать по составу"},"protein_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Protein G","description":"Белки, г"},"fat_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fat G","description":"Жиры, г"},"carb_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carb G","description":"Углеводы, г"},"items":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Items","description":"JSON-массив продуктов. Формат: [{\"name\":\"куриная грудка\",\"amount\":\"200 г\"},{\"name\":\"рис\",\"amount\":\"150 г\"}]"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"type":"object","required":["user_id"],"title":"Meal"},"MealBase":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Кто (всегда 'boldo')"},"taken_at":{"type":"string","format":"date-time","title":"Taken At","description":"Дата/время приёма пищи (ISO 8601). Если не указано — сейчас."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Тип приёма (завтрак/обед/ужин/перекус) и любые детали"},"kcal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Kcal","description":"Калории, посчитать по составу"},"protein_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Protein G","description":"Белки, г"},"fat_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fat G","description":"Жиры, г"},"carb_g":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Carb G","description":"Углеводы, г"},"items":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Items","description":"JSON-массив продуктов. Формат: [{\"name\":\"куриная грудка\",\"amount\":\"200 г\"},{\"name\":\"рис\",\"amount\":\"150 г\"}]"}},"type":"object","required":["user_id"],"title":"MealBase"},"Measurement":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg"},"waist_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Waist Cm"},"chest_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chest Cm"},"hip_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hip Cm"},"bodyfat_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bodyfat Pct"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"type":"object","required":["user_id"],"title":"Measurement"},"MeasurementBase":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg"},"waist_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Waist Cm"},"chest_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chest Cm"},"hip_cm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hip Cm"},"bodyfat_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bodyfat Pct"}},"type":"object","required":["user_id"],"title":"MeasurementBase"},"Photo":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"angle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Angle","description":"front / side / back"},"weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"type":"object","required":["user_id"],"title":"Photo"},"PhotoBase":{"properties":{"user_id":{"type":"string","title":"User Id"},"taken_at":{"type":"string","format":"date-time","title":"Taken At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"angle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Angle","description":"front / side / back"},"weight_kg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Kg"}},"type":"object","required":["user_id"],"title":"PhotoBase"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Workout":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Кто (всегда 'boldo')"},"taken_at":{"type":"string","format":"date-time","title":"Taken At","description":"Дата/время тренировки (ISO 8601). Если не указано — сейчас."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Ощущения/самочувствие/RPE, что давалось тяжело или легко. НЕ дублировать сюда упражнения."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Тип: силовая/strength, кардио/cardio, растяжка/mobility и т.п."},"duration_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Min","description":"Длительность тренировки в минутах"},"exercises":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exercises","description":"ОБЯЗАТЕЛЬНО заполнять. JSON-массив упражнений ПО ПОРЯДКУ с весами и повторами каждого подхода. Формат: [{\"name\":\"Жим ногами\",\"sets\":[{\"weight\":150,\"reps\":10},{\"weight\":160,\"reps\":8}]},{\"name\":\"Разгибания\",\"sets\":[{\"weight\":40,\"reps\":12}]}]. weight в кг."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"}},"type":"object","required":["user_id"],"title":"Workout"},"WorkoutBase":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Кто (всегда 'boldo')"},"taken_at":{"type":"string","format":"date-time","title":"Taken At","description":"Дата/время тренировки (ISO 8601). Если не указано — сейчас."},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes","description":"Ощущения/самочувствие/RPE, что давалось тяжело или легко. НЕ дублировать сюда упражнения."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"Тип: силовая/strength, кардио/cardio, растяжка/mobility и т.п."},"duration_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Min","description":"Длительность тренировки в минутах"},"exercises":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exercises","description":"ОБЯЗАТЕЛЬНО заполнять. JSON-массив упражнений ПО ПОРЯДКУ с весами и повторами каждого подхода. Формат: [{\"name\":\"Жим ногами\",\"sets\":[{\"weight\":150,\"reps\":10},{\"weight\":160,\"reps\":8}]},{\"name\":\"Разгибания\",\"sets\":[{\"weight\":40,\"reps\":12}]}]. weight в кг."}},"type":"object","required":["user_id"],"title":"WorkoutBase"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}