# Nutrition Service API Documentation ## Overview Nutrition Service предоставляет API для отслеживания питания, подсчета калорий и получения информации о продуктах питания через интеграцию с FatSecret API. Сервис позволяет пользователям контролировать свой рацион и отслеживать потребление воды. **Base URL:** `/api/v1/nutrition` ## Authentication Все эндпоинты требуют JWT аутентификацию. **Headers:** ``` Authorization: Bearer ``` ## API Endpoints ### 🔍 Поиск продуктов #### Найти продукты по названию ```http GET /api/v1/nutrition/foods?query=яблоко Authorization: Bearer ``` **Параметры:** - `query` (string, required): Поисковый запрос для поиска продуктов - `page` (number, optional): Номер страницы результатов, по умолчанию 1 - `page_size` (number, optional): Количество результатов на странице, по умолчанию 20 **Response:** ```json { "results": [ { "food_id": "123456", "name": "Яблоко, сырое, с кожурой", "brand": "", "calories": 52, "serving_size": "100г", "nutrients": { "carbohydrates": 13.8, "protein": 0.3, "fat": 0.2, "fiber": 2.4 } } ], "total": 25, "page": 1, "page_size": 20 } ``` ### 📝 Записи о питании #### Добавить запись о питании ```http POST /api/v1/nutrition/entries Authorization: Bearer ``` **Body:** ```json { "food_id": "123456", "date": "2025-10-16", "meal_type": "lunch", "quantity": 1.0, "serving_size": "100г", "notes": "Красное яблоко" } ``` **Варианты типов приема пищи (meal_type):** - `breakfast` - завтрак - `lunch` - обед - `dinner` - ужин - `snack` - перекус #### Получить записи о питании ```http GET /api/v1/nutrition/entries?date=2025-10-16 Authorization: Bearer ``` **Параметры:** - `date` (string, optional): Дата в формате YYYY-MM-DD - `start_date` (string, optional): Начальная дата для получения записей за период - `end_date` (string, optional): Конечная дата для получения записей за период - `meal_type` (string, optional): Фильтр по типу приема пищи #### Удалить запись о питании ```http DELETE /api/v1/nutrition/entries/{entry_id} Authorization: Bearer ``` ### 💧 Отслеживание воды #### Добавить запись о потреблении воды ```http POST /api/v1/nutrition/water Authorization: Bearer ``` **Body:** ```json { "date": "2025-10-16", "amount_ml": 250, "time": "12:30:00" } ``` #### Получить записи о потреблении воды ```http GET /api/v1/nutrition/water?date=2025-10-16 Authorization: Bearer ``` ### 📊 Сводки и статистика #### Получить дневную сводку по питанию ```http GET /api/v1/nutrition/daily-summary?date=2025-10-16 Authorization: Bearer ``` **Response:** ```json { "date": "2025-10-16", "total_calories": 1578, "total_carbohydrates": 175.3, "total_proteins": 78.2, "total_fats": 52.8, "total_water": 1200, "entries": [ { "id": 123, "food_name": "Яблоко, сырое, с кожурой", "meal_type": "lunch", "calories": 52, "quantity": 1.0, "serving_size": "100г" } ] } ``` #### Получить недельную аналитику ```http GET /api/v1/nutrition/weekly-summary?start_date=2025-10-10 Authorization: Bearer ``` ## Интеграция с FatSecret API Сервис использует FatSecret API для получения информации о питательной ценности продуктов. Ключи API хранятся в конфигурации сервера и не требуют дополнительной настройки со стороны клиента. ## Примеры использования ### JavaScript ```javascript // Пример поиска продуктов async function searchFoods(query) { const response = await fetch(`http://localhost:8000/api/v1/nutrition/foods?query=${query}`, { headers: { 'Authorization': `Bearer ${token}` } }); return response.json(); } // Пример добавления записи о питании async function addNutritionEntry(entryData) { const response = await fetch('http://localhost:8000/api/v1/nutrition/entries', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify(entryData) }); return response.json(); } ```