{"base_url":"https://api.stoapp.ru","public":[{"method":"GET","path":"/","description":"Карта API"},{"method":"GET","path":"/health","description":"Состояние сервиса и БД"},{"method":"GET","path":"/details/latest","description":"Последняя запись реквизитов"},{"method":"GET","path":"/prices/latest","description":"Последний актуальный тариф"},{"method":"GET","path":"/contacts","description":"Список контактов","params":[{"name":"type","in":"query","type":"string","required":false},{"name":"priority","in":"query","type":"integer","required":false},{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"POST","path":"/bot-logs","description":"Создать запись журнала","params":[{"name":"telegram_id","in":"body","type":"integer","required":true},{"name":"action","in":"body","type":"string","required":true},{"name":"result","in":"body","type":"string","required":true}]},{"method":"GET","path":"/bot-logs/stats","description":"Группировка журнала по action и result","params":[{"name":"created_from","in":"query","type":"string","required":false},{"name":"created_to","in":"query","type":"string","required":false}]},{"method":"POST","path":"/ai-history","description":"Сохранить запрос/ответ ИИ в историю","params":[{"name":"telegram_id","in":"body","type":"integer","required":true},{"name":"request","in":"body","type":"string","required":true},{"name":"response","in":"body","type":"string","required":true}]},{"method":"GET","path":"/ai-history/latest","description":"Последние 5 записей ИИ за 14 дней по telegram_id (для контекста GigaChat)","params":[{"name":"telegram_id","in":"query","type":"integer","required":false}]},{"method":"POST","path":"/bot-users","description":"Регистрация / обновление пользователя бота (upsert по telegram_id)","params":[{"name":"telegram_id","in":"body","type":"integer","required":true},{"name":"username","in":"body","type":"string","required":true},{"name":"first_name","in":"body","type":"string","required":false},{"name":"last_name","in":"body","type":"string","required":false},{"name":"phone","in":"body","type":"string","required":false},{"name":"birthdate","in":"body","type":"string","required":false}]}],"protected":[{"method":"GET","path":"/ai-history","description":"История запросов к ИИ","params":[{"name":"telegram_id","in":"query","type":"integer","required":false},{"name":"created_from","in":"query","type":"string","required":false},{"name":"created_to","in":"query","type":"string","required":false},{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"GET","path":"/ai-history/{id:[0-9]+}","description":"Запись истории ИИ по ID"},{"method":"PUT","path":"/ai-history/{id:[0-9]+}","description":"Обновить запись истории ИИ","params":[{"name":"telegram_id","in":"body","type":"integer","required":false},{"name":"request","in":"body","type":"string","required":false},{"name":"response","in":"body","type":"string","required":false}]},{"method":"DELETE","path":"/ai-history/{id:[0-9]+}","description":"Удалить запись истории ИИ"},{"method":"GET","path":"/bot-logs","description":"Список записей журнала бота","params":[{"name":"telegram_id","in":"query","type":"integer","required":false},{"name":"action","in":"query","type":"string","required":false},{"name":"result","in":"query","type":"string","required":false},{"name":"created_from","in":"query","type":"string","required":false},{"name":"created_to","in":"query","type":"string","required":false},{"name":"updated_from","in":"query","type":"string","required":false},{"name":"updated_to","in":"query","type":"string","required":false},{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"GET","path":"/bot-logs/{id:[0-9]+}","description":"Запись журнала по ID"},{"method":"PUT","path":"/bot-logs/{id:[0-9]+}","description":"Обновить запись журнала","params":[{"name":"telegram_id","in":"body","type":"integer","required":true},{"name":"action","in":"body","type":"string","required":true},{"name":"result","in":"body","type":"string","required":true}]},{"method":"DELETE","path":"/bot-logs/{id:[0-9]+}","description":"Удалить запись журнала"},{"method":"GET","path":"/bot-users","description":"Список пользователей бота","params":[{"name":"telegram_id","in":"query","type":"integer","required":false},{"name":"username","in":"query","type":"string","required":false},{"name":"phone","in":"query","type":"string","required":false},{"name":"created_from","in":"query","type":"string","required":false},{"name":"created_to","in":"query","type":"string","required":false},{"name":"updated_from","in":"query","type":"string","required":false},{"name":"updated_to","in":"query","type":"string","required":false},{"name":"last_login_from","in":"query","type":"string","required":false},{"name":"last_login_to","in":"query","type":"string","required":false},{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"GET","path":"/bot-users/{id:[0-9]+}","description":"Пользователь бота по ID"},{"method":"PUT","path":"/bot-users/{id:[0-9]+}","description":"Обновить пользователя бота","params":[{"name":"username","in":"body","type":"string","required":false},{"name":"first_name","in":"body","type":"string","required":false},{"name":"last_name","in":"body","type":"string","required":false},{"name":"phone","in":"body","type":"string","required":false},{"name":"birthdate","in":"body","type":"string","required":false}]},{"method":"DELETE","path":"/bot-users/{id:[0-9]+}","description":"Удалить пользователя бота"},{"method":"GET","path":"/contacts/{id:[0-9]+}","description":"Контакт по ID"},{"method":"POST","path":"/contacts","description":"Создать контакт","params":[{"name":"type","in":"body","type":"string","required":true},{"name":"value","in":"body","type":"string","required":true},{"name":"description","in":"body","type":"string","required":false},{"name":"priority","in":"body","type":"integer","required":false}]},{"method":"PUT","path":"/contacts/{id:[0-9]+}","description":"Обновить контакт","params":[{"name":"type","in":"body","type":"string","required":false},{"name":"value","in":"body","type":"string","required":false},{"name":"description","in":"body","type":"string","required":false},{"name":"priority","in":"body","type":"integer","required":false}]},{"method":"DELETE","path":"/contacts/{id:[0-9]+}","description":"Удалить контакт"},{"method":"GET","path":"/details","description":"Список реквизитов","params":[{"name":"name","in":"query","type":"string","required":false},{"name":"inn","in":"query","type":"string","required":false},{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"GET","path":"/details/{id:[0-9]+}","description":"Реквизиты по ID"},{"method":"POST","path":"/details","description":"Создать реквизиты","params":[{"name":"name","in":"body","type":"string","required":true},{"name":"inn","in":"body","type":"string","required":true},{"name":"kpp","in":"body","type":"string","required":false},{"name":"personal_acc","in":"body","type":"string","required":false},{"name":"bank_name","in":"body","type":"string","required":false},{"name":"bik","in":"body","type":"string","required":false},{"name":"corresp_acc","in":"body","type":"string","required":false}]},{"method":"PUT","path":"/details/{id:[0-9]+}","description":"Обновить реквизиты","params":[{"name":"name","in":"body","type":"string","required":false},{"name":"inn","in":"body","type":"string","required":false},{"name":"kpp","in":"body","type":"string","required":false},{"name":"personal_acc","in":"body","type":"string","required":false},{"name":"bank_name","in":"body","type":"string","required":false},{"name":"bik","in":"body","type":"string","required":false},{"name":"corresp_acc","in":"body","type":"string","required":false}]},{"method":"DELETE","path":"/details/{id:[0-9]+}","description":"Удалить реквизиты"},{"method":"GET","path":"/prices","description":"Список тарифов","params":[{"name":"limit","in":"query","type":"integer","required":false},{"name":"offset","in":"query","type":"integer","required":false}]},{"method":"GET","path":"/prices/{id:[0-9]+}","description":"Тариф по ID"},{"method":"POST","path":"/prices","description":"Создать тариф","params":[{"name":"fee","in":"body","type":"number","required":true},{"name":"electricity","in":"body","type":"number","required":true}]},{"method":"PUT","path":"/prices/{id:[0-9]+}","description":"Обновить тариф","params":[{"name":"fee","in":"body","type":"number","required":false},{"name":"electricity","in":"body","type":"number","required":false}]},{"method":"DELETE","path":"/prices/{id:[0-9]+}","description":"Удалить тариф"}]}
