{"openapi":"3.1.0","info":{"title":"Telegram Hub API","description":"Шлюз для отправки сообщений через Telegram Bot API, автоматической регистрации обратных webhook и доставки Telegram update в приложения.","version":"2.2.0"},"paths":{"/health":{"get":{"tags":["system"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Health Health Get"}}}}},"security":[]}},"/channels":{"get":{"tags":["system"],"summary":"List Channels","operationId":"list_channels_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Channels Channels Get"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/{full_path}":{"options":{"tags":["system"],"summary":"Options Handler","operationId":"options_handler__full_path__options","parameters":[{"name":"full_path","in":"path","required":true,"schema":{"type":"string","title":"Full Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Options Handler  Full Path  Options"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/send":{"post":{"tags":["send"],"summary":"Send Message","operationId":"send_message_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Message Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/send/photo":{"post":{"tags":["send"],"summary":"Send Photo","operationId":"send_photo_send_photo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPhotoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Photo Send Photo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/send/document":{"post":{"tags":["send"],"summary":"Send Document","operationId":"send_document_send_document_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendDocumentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Document Send Document Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/telegram/call":{"post":{"tags":["send"],"summary":"Telegram Call","operationId":"telegram_call_telegram_call_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelegramMethodRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Telegram Call Telegram Call Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/send/media-group":{"post":{"tags":["send"],"summary":"Send Media Group","operationId":"send_media_group_send_media_group_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMediaGroupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Media Group Send Media Group Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/telegram/edit-reply-markup":{"post":{"tags":["send"],"summary":"Edit Reply Markup","operationId":"edit_reply_markup_telegram_edit_reply_markup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditReplyMarkupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Edit Reply Markup Telegram Edit Reply Markup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/telegram/answer-callback":{"post":{"tags":["send"],"summary":"Answer Callback","operationId":"answer_callback_telegram_answer_callback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswerCallbackQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Answer Callback Telegram Answer Callback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/send/batch":{"post":{"tags":["send"],"summary":"Send Batch","operationId":"send_batch_send_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Batch Send Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/webhooks/telegram/{webhook_key}":{"post":{"tags":["webhooks"],"summary":"Telegram Webhook","operationId":"telegram_webhook_webhooks_telegram__webhook_key__post","parameters":[{"name":"webhook_key","in":"path","required":true,"schema":{"type":"string","title":"Webhook Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"TelegramSecret":[]}]}},"/admin/login":{"get":{"tags":["admin"],"summary":"Login Page","operationId":"login_page_admin_login_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[]},"post":{"tags":["admin"],"summary":"Login","operationId":"login_admin_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/admin/logout":{"post":{"tags":["admin"],"summary":"Logout","operationId":"logout_admin_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"AdminBasic":[]}]}},"/admin":{"get":{"tags":["admin"],"summary":"Admin Panel","operationId":"admin_panel_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/overview":{"get":{"tags":["admin"],"summary":"Overview","operationId":"overview_admin_api_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Overview Admin Api Overview Get"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/dashboard":{"get":{"tags":["admin"],"summary":"Dashboard","operationId":"dashboard_admin_api_dashboard_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^(24h|7d|30d)$","default":"24h","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Dashboard Admin Api Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/system":{"get":{"tags":["admin"],"summary":"System Info","operationId":"system_info_admin_api_system_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response System Info Admin Api System Get"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/error-pages/{status_code}":{"get":{"tags":["admin"],"summary":"Error Page Preview","operationId":"error_page_preview_admin_error_pages__status_code__get","parameters":[{"name":"status_code","in":"path","required":true,"schema":{"type":"integer","title":"Status Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/bots":{"get":{"tags":["admin"],"summary":"List Bots","operationId":"list_bots_admin_api_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Bots Admin Api Bots Get"}}}}},"security":[{"AdminBasic":[]}]},"post":{"tags":["admin"],"summary":"Create Bot","operationId":"create_bot_admin_api_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Bot Admin Api Bots Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/bots/{bot_id}":{"patch":{"tags":["admin"],"summary":"Update Bot","operationId":"update_bot_admin_api_bots__bot_id__patch","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"integer","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Bot Admin Api Bots  Bot Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]},"delete":{"tags":["admin"],"summary":"Delete Bot","operationId":"delete_bot_admin_api_bots__bot_id__delete","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"integer","title":"Bot Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/bots/{bot_id}/register-webhook":{"post":{"tags":["admin"],"summary":"Register Webhook","operationId":"register_webhook_admin_api_bots__bot_id__register_webhook_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"integer","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Register Webhook Admin Api Bots  Bot Id  Register Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/bots/{bot_id}/delete-webhook":{"post":{"tags":["admin"],"summary":"Delete Webhook","operationId":"delete_webhook_admin_api_bots__bot_id__delete_webhook_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"integer","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Webhook Admin Api Bots  Bot Id  Delete Webhook Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/events":{"get":{"tags":["admin"],"summary":"List Events","operationId":"list_events_admin_api_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"bot_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bot Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Events Admin Api Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/events/table":{"get":{"tags":["admin"],"summary":"Events Table","operationId":"events_table_admin_api_events_table_get","parameters":[{"name":"draw","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Draw"}},{"name":"start","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Start"}},{"name":"length","in":"query","required":false,"schema":{"type":"integer","maximum":250,"minimum":1,"default":50,"title":"Length"}},{"name":"search[value]","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Search[Value]"}},{"name":"order[0][column]","in":"query","required":false,"schema":{"type":"integer","maximum":6,"minimum":0,"default":0,"title":"Order[0][Column]"}},{"name":"order[0][dir]","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Order[0][Dir]"}},{"name":"bot_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bot Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Events Table Admin Api Events Table Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/events/{event_id}":{"get":{"tags":["admin"],"summary":"Event Detail","operationId":"event_detail_admin_api_events__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Event Detail Admin Api Events  Event Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}},"/admin/api/events/{event_id}/retry":{"post":{"tags":["admin"],"summary":"Retry Event","operationId":"retry_event_admin_api_events__event_id__retry_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"AdminBasic":[]}]}}},"components":{"schemas":{"AnswerCallbackQueryRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"callback_query_id":{"type":"string","minLength":1,"title":"Callback Query Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"show_alert":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Alert","default":false}},"type":"object","required":["callback_query_id"],"title":"AnswerCallbackQueryRequest"},"BatchMessage":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id","description":"Chat ID or @username"},"text":{"type":"string","minLength":1,"title":"Text"},"parse_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parse Mode","default":"Markdown"}},"type":"object","required":["chat_id","text"],"title":"BatchMessage"},"BatchRequest":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/BatchMessage"},"type":"array","maxItems":100,"minItems":1,"title":"Messages"}},"type":"object","required":["messages"],"title":"BatchRequest"},"BotCreate":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"title":"Name"},"bot_token":{"type":"string","maxLength":256,"minLength":10,"title":"Bot Token"},"forward_url":{"type":"string","maxLength":2048,"minLength":8,"title":"Forward Url"},"forward_secret":{"type":"string","maxLength":256,"title":"Forward Secret","default":""},"delivery_mode":{"type":"string","enum":["sync","durable"],"title":"Delivery Mode","default":"sync"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","bot_token","forward_url"],"title":"BotCreate"},"BotUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Name"},"bot_token":{"anyOf":[{"type":"string","maxLength":256,"minLength":10},{"type":"null"}],"title":"Bot Token"},"forward_url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":8},{"type":"null"}],"title":"Forward Url"},"forward_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Forward Secret"},"delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Delivery Mode"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"type":"object","title":"BotUpdate"},"EditReplyMarkupRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id"},"message_id":{"type":"integer","title":"Message Id"},"reply_markup":{"anyOf":[{"type":"object"},{"type":"string"},{"type":"null"}],"title":"Reply Markup"}},"type":"object","required":["chat_id","message_id"],"title":"EditReplyMarkupRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SendDocumentRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id","description":"Chat ID or @username"},"document":{"type":"string","minLength":1,"title":"Document","description":"Document URL or file_id"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"reply_markup":{"anyOf":[{"type":"object"},{"type":"string"},{"type":"null"}],"title":"Reply Markup"}},"type":"object","required":["chat_id","document"],"title":"SendDocumentRequest"},"SendMediaGroupRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id","description":"Chat ID or @username"},"media":{"items":{},"type":"array","maxItems":10,"minItems":2,"title":"Media","description":"Media items (photo or video)"}},"type":"object","required":["chat_id","media"],"title":"SendMediaGroupRequest"},"SendMessageRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id","description":"Chat ID or @username"},"text":{"type":"string","minLength":1,"title":"Text","description":"Message text"},"parse_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parse Mode","description":"Markdown or HTML","default":"Markdown"},"disable_web_page_preview":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disable Web Page Preview","description":"Disable link previews","default":false},"reply_to_message_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply To Message Id","description":"Reply to message ID"},"reply_markup":{"anyOf":[{"type":"object"},{"type":"string"},{"type":"null"}],"title":"Reply Markup","description":"Inline keyboard (dict or JSON string)"}},"type":"object","required":["chat_id","text"],"title":"SendMessageRequest"},"SendPhotoRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"chat_id":{"type":"string","title":"Chat Id","description":"Chat ID or @username"},"photo":{"type":"string","minLength":1,"title":"Photo","description":"Photo URL or file_id"},"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption","description":"Photo caption"},"parse_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parse Mode","description":"Markdown or HTML"},"reply_markup":{"anyOf":[{"type":"object"},{"type":"string"},{"type":"null"}],"title":"Reply Markup"}},"type":"object","required":["chat_id","photo"],"title":"SendPhotoRequest"},"TelegramMethodRequest":{"properties":{"channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel","description":"Configured channel name","default":"default"},"bot_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Token","description":"Bot token (overrides channel lookup)"},"callback_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Callback Url","description":"Where Hub forwards Telegram updates for this bot"},"callback_secret":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback Secret","description":"HMAC secret for forwarded updates"},"callback_delivery_mode":{"anyOf":[{"type":"string","enum":["sync","durable"]},{"type":"null"}],"title":"Callback Delivery Mode","description":"Callback delivery mode; existing routes keep their saved mode when omitted"},"method":{"type":"string","minLength":1,"title":"Method","description":"Telegram Bot API method, e.g. sendMessage"},"params":{"type":"object","title":"Params","description":"Telegram method params"}},"type":"object","required":["method"],"title":"TelegramMethodRequest"},"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":{"BearerAuth":{"type":"http","scheme":"bearer","description":"HUB_API_KEY"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"},"AdminBasic":{"type":"http","scheme":"basic","description":"Логин и пароль администратора"},"TelegramSecret":{"type":"apiKey","in":"header","name":"X-Telegram-Bot-Api-Secret-Token"}}},"tags":[{"name":"send","description":"Отправка сообщений и вызовы Telegram Bot API."},{"name":"webhooks","description":"Приём Telegram update и доставка в приложение."},{"name":"system","description":"Состояние Hub и доступные каналы."},{"name":"admin","description":"Маршруты, журнал событий и диагностика панели."}]}