{"openapi":"3.1.0","info":{"title":"СОПКА Визир","description":"Мониторинг доступности и безопасности сайтов","version":"2.0.0"},"paths":{"/api/v1/health":{"get":{"tags":["services"],"summary":"Healthcheck","operationId":"healthcheck_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/services":{"get":{"tags":["services"],"summary":"List Services","operationId":"list_services_api_v1_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["services"],"summary":"Create Service","operationId":"create_service_api_v1_services_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/services/{service_id}":{"delete":{"tags":["services"],"summary":"Delete Service","operationId":"delete_service_api_v1_services__service_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/services/{service_id}/check":{"post":{"tags":["services"],"summary":"One Shot Check","operationId":"one_shot_check_api_v1_services__service_id__check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OneShotResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/analytics/summary":{"get":{"tags":["services"],"summary":"Analytics Summary","operationId":"analytics_summary_api_v1_analytics_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/kiosk/start":{"post":{"tags":["services"],"summary":"Kiosk Start","description":"Запуск киоск-режима (автоматический показ сайтов)","operationId":"kiosk_start_api_v1_kiosk_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interval","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/kiosk/stop":{"post":{"tags":["services"],"summary":"Kiosk Stop","description":"Остановка киоск-режима","operationId":"kiosk_stop_api_v1_kiosk_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/kiosk/next":{"post":{"tags":["services"],"summary":"Kiosk Next","description":"Принудительное переключение на следующий сайт","operationId":"kiosk_next_api_v1_kiosk_next_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/kiosk/previous":{"post":{"tags":["services"],"summary":"Kiosk Previous","description":"Принудительное переключение на предыдущий сайт","operationId":"kiosk_previous_api_v1_kiosk_previous_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/kiosk/state":{"get":{"tags":["services"],"summary":"Kiosk State Endpoint","description":"Получение текущего состояния киоск-режима","operationId":"kiosk_state_endpoint_api_v1_kiosk_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/audit/{target_url}":{"post":{"tags":["services"],"summary":"Run Security Audit","description":"Запуск полного аудита безопасности для указанного URL","operationId":"run_security_audit_api_v1_audit__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/{target_url}/report":{"get":{"tags":["services"],"summary":"Download Audit Report","description":"Скачать отчёт аудита в DOCX","operationId":"download_audit_report_api_v1_audit__target_url__report_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/audit/headers/{target_url}":{"get":{"tags":["services"],"summary":"Check Headers","description":"Быстрая проверка заголовков безопасности","operationId":"check_headers_api_v1_audit_headers__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cms/{target_url}":{"get":{"tags":["services"],"summary":"Detect Cms","description":"Определение CMS и технологий сайта","operationId":"detect_cms_api_v1_cms__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/compliance/{target_url}":{"get":{"tags":["services"],"summary":"Check Compliance","description":"Проверка соответствия требованиям 8-ФЗ, 152-ФЗ, ФСТЭК","operationId":"check_compliance_api_v1_compliance__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/owasp/scan/{target_url}":{"post":{"tags":["services"],"summary":"Owasp Scan","description":"OWASP Top 10 сканирование","operationId":"owasp_scan_api_v1_owasp_scan__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/owasp/report/{service_id}":{"get":{"tags":["services"],"summary":"Get Owasp Report","description":"Получение последнего OWASP отчёта для сервиса","operationId":"get_owasp_report_api_v1_owasp_report__service_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/owasp/summary/{service_id}":{"get":{"tags":["services"],"summary":"Owasp Summary","description":"Краткая сводка OWASP для сервиса","operationId":"owasp_summary_api_v1_owasp_summary__service_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/owasp/schedule/{service_id}":{"post":{"tags":["services"],"summary":"Schedule Owasp Scan","description":"Запланировать регулярные OWASP сканирования","operationId":"schedule_owasp_scan_api_v1_owasp_schedule__service_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}},{"name":"interval_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Interval Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"summary":"Health Check","description":"Проверка состояния приложения","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/services":{"get":{"tags":["services"],"summary":"List Services","operationId":"list_services_api_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["services"],"summary":"Create Service","operationId":"create_service_api_services_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/services/{service_id}":{"delete":{"tags":["services"],"summary":"Delete Service","operationId":"delete_service_api_services__service_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/services/{service_id}/check":{"post":{"tags":["services"],"summary":"One Shot Check","operationId":"one_shot_check_api_services__service_id__check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OneShotResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/summary":{"get":{"tags":["services"],"summary":"Analytics Summary","operationId":"analytics_summary_api_analytics_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/kiosk/start":{"post":{"tags":["services"],"summary":"Kiosk Start","description":"Запуск киоск-режима (автоматический показ сайтов)","operationId":"kiosk_start_api_kiosk_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interval","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/kiosk/stop":{"post":{"tags":["services"],"summary":"Kiosk Stop","description":"Остановка киоск-режима","operationId":"kiosk_stop_api_kiosk_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/kiosk/next":{"post":{"tags":["services"],"summary":"Kiosk Next","description":"Принудительное переключение на следующий сайт","operationId":"kiosk_next_api_kiosk_next_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/kiosk/previous":{"post":{"tags":["services"],"summary":"Kiosk Previous","description":"Принудительное переключение на предыдущий сайт","operationId":"kiosk_previous_api_kiosk_previous_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/kiosk/state":{"get":{"tags":["services"],"summary":"Kiosk State Endpoint","description":"Получение текущего состояния киоск-режима","operationId":"kiosk_state_endpoint_api_kiosk_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/audit/{target_url}":{"post":{"tags":["services"],"summary":"Run Security Audit","description":"Запуск полного аудита безопасности для указанного URL","operationId":"run_security_audit_api_audit__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/{target_url}/report":{"get":{"tags":["services"],"summary":"Download Audit Report","description":"Скачать отчёт аудита в DOCX","operationId":"download_audit_report_api_audit__target_url__report_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/headers/{target_url}":{"get":{"tags":["services"],"summary":"Check Headers","description":"Быстрая проверка заголовков безопасности","operationId":"check_headers_api_audit_headers__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cms/{target_url}":{"get":{"tags":["services"],"summary":"Detect Cms","description":"Определение CMS и технологий сайта","operationId":"detect_cms_api_cms__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/compliance/{target_url}":{"get":{"tags":["services"],"summary":"Check Compliance","description":"Проверка соответствия требованиям 8-ФЗ, 152-ФЗ, ФСТЭК","operationId":"check_compliance_api_compliance__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/xxe/{target_url}":{"get":{"tags":["services"],"summary":"Check Xxe","description":"Проверка на XXE уязвимость","operationId":"check_xxe_api_audit_xxe__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/ssrf/{target_url}":{"get":{"tags":["services"],"summary":"Check Ssrf","description":"Проверка на SSRF уязвимость","operationId":"check_ssrf_api_audit_ssrf__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/geo/{target_url}":{"get":{"tags":["services"],"summary":"Check Geo","description":"Геолокация хостинга","operationId":"check_geo_api_audit_geo__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/full/{target_url}":{"post":{"tags":["services"],"summary":"Full Security Audit","description":"Полный аудит с геолокацией и всеми тестами","operationId":"full_security_audit_api_audit_full__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crawl/{target_url}":{"post":{"tags":["services"],"summary":"Start Crawl","operationId":"start_crawl_api_crawl__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Depth"}},{"name":"max_pages","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Max Pages"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scan/{service_id}/start":{"post":{"tags":["services"],"summary":"Start Scan","description":"Запуск сканирования в фоне","operationId":"start_scan_api_scan__service_id__start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/task/{task_id}/status":{"get":{"tags":["services"],"summary":"Get Task Status","description":"Получение статуса задачи","operationId":"get_task_status_api_task__task_id__status_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/audit/batch":{"post":{"tags":["services"],"summary":"Batch Audit","description":"Массовый аудит всех сервисов пользователя","operationId":"batch_audit_api_audit_batch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/owasp/scan/{target_url}":{"post":{"tags":["services"],"summary":"Owasp Scan","description":"OWASP Top 10 сканирование","operationId":"owasp_scan_api_owasp_scan__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owasp/report/{service_id}":{"get":{"tags":["services"],"summary":"Get Owasp Report","description":"Получение последнего OWASP отчёта для сервиса","operationId":"get_owasp_report_api_owasp_report__service_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owasp/summary/{service_id}":{"get":{"tags":["services"],"summary":"Owasp Summary","description":"Краткая сводка OWASP для сервиса","operationId":"owasp_summary_api_owasp_summary__service_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/owasp/schedule/{service_id}":{"post":{"tags":["services"],"summary":"Schedule Owasp Scan","description":"Запланировать регулярные OWASP сканирования","operationId":"schedule_owasp_scan_api_owasp_schedule__service_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}},{"name":"interval_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Interval Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","description":"Вход в систему","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/verify":{"get":{"tags":["auth"],"summary":"Verify Token","description":"Проверка токена","operationId":"verify_token_api_auth_verify_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/auth/login-page":{"get":{"tags":["auth"],"summary":"Login Page","operationId":"login_page_api_auth_login_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"List Users","description":"Список всех пользователей (только для админов)","operationId":"list_users_api_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserResponse"},"type":"array","title":"Response List Users Api Admin Users Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin"],"summary":"Create User","description":"Создание нового пользователя (только для админов)","operationId":"create_user_api_admin_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/users/{user_id}":{"put":{"tags":["admin"],"summary":"Update User","description":"Обновление пользователя (только для админов)","operationId":"update_user_api_admin_users__user_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete User","description":"Удаление пользователя (только для админов)","operationId":"delete_user_api_admin_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/services":{"get":{"tags":["admin"],"summary":"Get User Services","description":"Получение всех сервисов пользователя (только для админов)","operationId":"get_user_services_api_admin_users__user_id__services_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServiceResponse"},"title":"Response Get User Services Api Admin Users  User Id  Services Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/groups":{"get":{"tags":["admin"],"summary":"Get User Groups","description":"Получение групп сервисов пользователя (только для админов)","operationId":"get_user_groups_api_admin_users__user_id__groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupResponse"},"title":"Response Get User Groups Api Admin Users  User Id  Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}/channels":{"get":{"tags":["admin"],"summary":"Get User Channels","description":"Получение каналов уведомлений пользователя (только для админов)","operationId":"get_user_channels_api_admin_users__user_id__channels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/me":{"get":{"tags":["admin"],"summary":"Get Me","description":"Информация о текущем пользователе","operationId":"get_me_api_admin_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/security/owasp/scan/{target_url}":{"post":{"tags":["security"],"summary":"Owasp Scan By Url","description":"OWASP Top 10 сканирование по URL","operationId":"owasp_scan_by_url_api_security_owasp_scan__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/owasp/report/{target_url}":{"get":{"tags":["security"],"summary":"Download Owasp Report By Url","description":"Скачать OWASP отчёт в DOCX по URL","operationId":"download_owasp_report_by_url_api_security_owasp_report__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/crawl/{target_url}":{"post":{"tags":["security"],"summary":"Crawl Site","description":"Запуск обхода сайта с рекурсивным сбором:\n- Всех страниц\n- Форм с их полями\n- Эндпоинтов\n- Параметров\n- Email-адресов\n- Телефонов\n- Медиа-ресурсов\n- Структуры сайта","operationId":"crawl_site_api_security_crawl__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Depth"}},{"name":"max_pages","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Max Pages"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/endpoints/{target_url}":{"get":{"tags":["security"],"summary":"Discover Endpoints","description":"Обнаружение всех доступных эндпоинтов на сайте","operationId":"discover_endpoints_api_security_endpoints__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"timeout","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Timeout"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Discover Endpoints Api Security Endpoints  Target Url  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/auth-scan/{target_url}":{"post":{"tags":["security"],"summary":"Auth Scan","description":"Полное сканирование с авторизацией","operationId":"auth_scan_api_security_auth_scan__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/nuclei/{target_url}":{"post":{"tags":["security"],"summary":"Nuclei Scan","description":"Запуск Nuclei сканирования","operationId":"nuclei_scan_api_security_nuclei__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","default":"critical,high,medium,low","title":"Severity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/api-check/{target_url}":{"post":{"tags":["security"],"summary":"Api Security Check","description":"Полная проверка безопасности API","operationId":"api_security_check_api_security_api_check__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/queue/{target_url}":{"post":{"tags":["security"],"summary":"Add To Queue","description":"Добавление задачи в очередь","operationId":"add_to_queue_api_security_queue__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"task_type","in":"query","required":false,"schema":{"type":"string","default":"scan","title":"Task Type"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/queue/{task_id}":{"get":{"tags":["security"],"summary":"Get Queue Status","description":"Получение статуса задачи","operationId":"get_queue_status_api_security_queue__task_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/evidence/{target_url}":{"get":{"tags":["security"],"summary":"Get Evidence","description":"Получение доказательств уязвимостей","operationId":"get_evidence_api_security_evidence__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"severity","in":"query","required":false,"schema":{"type":"string","title":"Severity"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/audit/{target_url}":{"post":{"tags":["security"],"summary":"Run Security Audit","description":"Запуск полного аудита безопасности для указанного URL","operationId":"run_security_audit_api_security_audit__target_url__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/audit/download/{target_url}":{"get":{"tags":["security"],"summary":"Download Audit Report","description":"Скачать отчёт аудита в DOCX","operationId":"download_audit_report_api_security_audit_download__target_url__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"target_url","in":"path","required":true,"schema":{"type":"string","title":"Target Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/kiosk/start":{"post":{"tags":["security"],"summary":"Kiosk Start","operationId":"kiosk_start_api_security_kiosk_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"interval","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Interval"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/security/kiosk/stop":{"post":{"tags":["security"],"summary":"Kiosk Stop","operationId":"kiosk_stop_api_security_kiosk_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/security/kiosk/next":{"post":{"tags":["security"],"summary":"Kiosk Next","operationId":"kiosk_next_api_security_kiosk_next_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/security/kiosk/previous":{"post":{"tags":["security"],"summary":"Kiosk Previous","operationId":"kiosk_previous_api_security_kiosk_previous_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/security/kiosk/state":{"get":{"tags":["security"],"summary":"Kiosk State","operationId":"kiosk_state_api_security_kiosk_state_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/channels":{"get":{"tags":["channels"],"summary":"List Channels","operationId":"list_channels_api_v1_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ChannelOut"},"type":"array","title":"Response List Channels Api V1 Channels Get"}}}}}},"post":{"tags":["channels"],"summary":"Create Channel","operationId":"create_channel_api_v1_channels_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/channels/{channel_id}":{"put":{"tags":["channels"],"summary":"Update Channel","operationId":"update_channel_api_v1_channels__channel_id__put","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["channels"],"summary":"Delete Channel","operationId":"delete_channel_api_v1_channels__channel_id__delete","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notify/channels/bulk":{"post":{"tags":["notify"],"summary":"Upsert Channels","description":"Сохраняем каналы. Если канал с таким type уже есть — обновляем,\nиначе создаём. Обязательно заполняем legacy-поля name/config/is_active,\nчтобы не падать на NOT NULL в существующей БД.","operationId":"upsert_channels_api_v1_notify_channels_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notify/test":{"post":{"tags":["notify"],"summary":"Send Test","description":"Шлём тестовое уведомление во все включённые каналы.","operationId":"send_test_api_v1_notify_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/notify/channels/bulk":{"post":{"tags":["notify"],"summary":"Upsert Channels","description":"Сохраняем каналы. Если канал с таким type уже есть — обновляем,\nиначе создаём. Обязательно заполняем legacy-поля name/config/is_active,\nчтобы не падать на NOT NULL в существующей БД.","operationId":"upsert_channels_api_notify_channels_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/notify/test":{"post":{"tags":["notify"],"summary":"Send Test","description":"Шлём тестовое уведомление во все включённые каналы.","operationId":"send_test_api_notify_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Root","description":"Корневой маршрут — перенаправление на страницу входа","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard":{"get":{"summary":"Dashboard","description":"Главная страница дашборда","operationId":"dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/security":{"get":{"summary":"Security Page","description":"Страница центра безопасности","operationId":"security_page_security_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin":{"get":{"summary":"Admin Panel","description":"Админ-панель","operationId":"admin_panel_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/kiosk.html":{"get":{"summary":"Kiosk Page","description":"Киоск-режим","operationId":"kiosk_page_kiosk_html_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/kiosk":{"get":{"summary":"Kiosk Page","description":"Киоск-режим","operationId":"kiosk_page_kiosk_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Проверка состояния приложения","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AuthResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"type":"object","title":"User"}},"type":"object","required":["access_token","user"],"title":"AuthResponse"},"ChannelIn":{"properties":{"type":{"type":"string","title":"Type"},"enabled":{"type":"boolean","title":"Enabled","default":true},"params":{"type":"object","title":"Params","default":{}}},"type":"object","required":["type"],"title":"ChannelIn"},"ChannelOut":{"properties":{"type":{"type":"string","title":"Type"},"enabled":{"type":"boolean","title":"Enabled","default":true},"params":{"type":"object","title":"Params","default":{}},"id":{"type":"integer","title":"Id"}},"type":"object","required":["type","id"],"title":"ChannelOut"},"EmailConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"host":{"type":"string","title":"Host"},"port":{"type":"integer","title":"Port","default":587},"use_tls":{"type":"boolean","title":"Use Tls","default":true},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"from_addr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Addr"},"to_addrs":{"items":{"type":"string"},"type":"array","title":"To Addrs"}},"type":"object","required":["host"],"title":"EmailConfig"},"GroupResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"color":{"type":"string","title":"Color"},"services_count":{"type":"integer","title":"Services Count"}},"type":"object","required":["id","name","color","services_count"],"title":"GroupResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"NotifyPayload":{"properties":{"telegram":{"anyOf":[{"$ref":"#/components/schemas/TelegramConfig"},{"type":"null"}]},"email":{"anyOf":[{"$ref":"#/components/schemas/EmailConfig"},{"type":"null"}]}},"type":"object","title":"NotifyPayload"},"OneShotResult":{"properties":{"service_id":{"type":"integer","title":"Service Id"},"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"is_available":{"type":"boolean","title":"Is Available"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"},"response_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Response Time Ms"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["service_id","checked_at","is_available"],"title":"OneShotResult"},"ServiceCreate":{"properties":{"name":{"type":"string","title":"Name"},"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url"},"check_interval":{"type":"integer","title":"Check Interval","default":60},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","url"],"title":"ServiceCreate"},"ServiceResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"url":{"type":"string","title":"Url"},"is_active":{"type":"boolean","title":"Is Active"},"last_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Status"},"last_response_time":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Response Time"}},"type":"object","required":["id","name","url","is_active"],"title":"ServiceResponse"},"TelegramConfig":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"token":{"type":"string","title":"Token"},"chat_id":{"type":"string","title":"Chat Id"},"proxy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proxy"}},"type":"object","required":["token","chat_id"],"title":"TelegramConfig"},"UserCreate":{"properties":{"username":{"type":"string","title":"Username"},"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"is_admin":{"type":"boolean","title":"Is Admin","default":false}},"type":"object","required":["username","email","password"],"title":"UserCreate"},"UserResponse":{"properties":{"id":{"type":"integer","title":"Id"},"username":{"type":"string","title":"Username"},"email":{"type":"string","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_admin":{"type":"boolean","title":"Is Admin"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","username","email","is_active","is_admin"],"title":"UserResponse"},"UserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_admin":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Admin"},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"}},"type":"object","title":"UserUpdate"},"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"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}