{"openapi":"3.1.0","info":{"title":"啡啡 Telegram 中转 API","description":"主密钥管理机器人；各机器人使用独立 Bearer 调用密钥。","version":"1.3.0"},"paths":{"/v1/devices/pairings":{"post":{"tags":["手机绑定"],"summary":"Pair","operationId":"pair_v1_devices_pairings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/devices/me/pairing":{"post":{"tags":["手机绑定"],"summary":"Refresh Pairing","operationId":"refresh_pairing_v1_devices_me_pairing_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/devices/me":{"get":{"tags":["手机绑定"],"summary":"Me","operationId":"me_v1_devices_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["手机绑定"],"summary":"Revoke","operationId":"revoke_v1_devices_me_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/devices/me/confirm":{"post":{"tags":["手机绑定"],"summary":"Confirm","operationId":"confirm_v1_devices_me_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmRequest"}}},"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":[]}]}},"/v1/devices/me/messages/{event_id}":{"get":{"tags":["手机推送"],"summary":"Delivery Status","operationId":"delivery_status_v1_devices_me_messages__event_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/devices/me/messages":{"post":{"tags":["手机推送"],"summary":"Send","operationId":"send_v1_devices_me_messages_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceMessage"}}},"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":[]}]}},"/healthz":{"get":{"tags":["服务状态"],"summary":"Health","operationId":"health_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/bots":{"get":{"tags":["管理员"],"summary":"Bots","operationId":"bots_v1_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["管理员"],"summary":"Register","operationId":"register_v1_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterBot"}}},"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":[]}]}},"/v1/bots/{bot_id}":{"get":{"tags":["机器人"],"summary":"Bot Details","operationId":"bot_details_v1_bots__bot_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/keys/rotate":{"post":{"tags":["管理员"],"summary":"Rotate","operationId":"rotate_v1_bots__bot_id__keys_rotate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/webhook":{"post":{"tags":["管理员"],"summary":"Enable Webhook","operationId":"enable_webhook_v1_bots__bot_id__webhook_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOptions"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["管理员"],"summary":"Webhook Status","operationId":"webhook_status_v1_bots__bot_id__webhook_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["管理员"],"summary":"Disable Webhook","operationId":"disable_webhook_v1_bots__bot_id__webhook_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/telegram/{bot_id}":{"post":{"tags":["Telegram 回调"],"summary":"Webhook","operationId":"webhook_telegram__bot_id__post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/methods/{method}":{"post":{"tags":["Telegram API"],"summary":"Call","operationId":"call_v1_bots__bot_id__methods__method__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"method","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9]{0,63}$","title":"Method"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/files/{file_path}":{"get":{"tags":["Telegram API"],"summary":"Download","operationId":"download_v1_bots__bot_id__files__file_path__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/updates/claim":{"post":{"tags":["收件箱"],"summary":"Claim","operationId":"claim_v1_bots__bot_id__updates_claim_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Claim"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/updates/{sequence}/ack":{"post":{"tags":["收件箱"],"summary":"Acknowledge","operationId":"acknowledge_v1_bots__bot_id__updates__sequence__ack_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sequence","in":"path","required":true,"schema":{"type":"integer","title":"Sequence"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Lease"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/updates/{sequence}/renew":{"post":{"tags":["收件箱"],"summary":"Renew","operationId":"renew_v1_bots__bot_id__updates__sequence__renew_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sequence","in":"path","required":true,"schema":{"type":"integer","title":"Sequence"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Renew"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bots/{bot_id}/sessions/{key}":{"get":{"tags":["会话"],"summary":"Get Session","operationId":"get_session_v1_bots__bot_id__sessions__key__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9:_.-]{1,240}$","title":"Key"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["会话"],"summary":"Set Session","operationId":"set_session_v1_bots__bot_id__sessions__key__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9:_.-]{1,240}$","title":"Key"}},{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionWrite"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Claim":{"properties":{"consumer_id":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[A-Za-z0-9_.-]+$","title":"Consumer Id"},"limit":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Limit","default":10},"lease_seconds":{"type":"integer","maximum":300.0,"minimum":10.0,"title":"Lease Seconds","default":60}},"type":"object","required":["consumer_id"],"title":"Claim"},"ConfirmRequest":{"properties":{"telegram_user_id":{"type":"integer","title":"Telegram User Id"}},"additionalProperties":false,"type":"object","required":["telegram_user_id"],"title":"ConfirmRequest"},"DeviceMessage":{"properties":{"event_id":{"type":"string","maxLength":100,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Event Id"},"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["event_id","text"],"title":"DeviceMessage"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Lease":{"properties":{"lease_token":{"type":"string","maxLength":100,"minLength":1,"title":"Lease Token"}},"type":"object","required":["lease_token"],"title":"Lease"},"PairRequest":{"properties":{"bot_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Bot Id","default":"feifeidns"},"auto_activate":{"type":"boolean","title":"Auto Activate","default":false}},"additionalProperties":false,"type":"object","title":"PairRequest"},"RegisterBot":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,62}$","title":"Id"},"token":{"type":"string","maxLength":256,"minLength":1,"format":"password","title":"Token","writeOnly":true}},"type":"object","required":["id","token"],"title":"RegisterBot"},"Renew":{"properties":{"lease_token":{"type":"string","maxLength":100,"minLength":1,"title":"Lease Token"},"lease_seconds":{"type":"integer","maximum":300.0,"minimum":10.0,"title":"Lease Seconds","default":60}},"type":"object","required":["lease_token"],"title":"Renew"},"SessionWrite":{"properties":{"state":{"additionalProperties":true,"type":"object","title":"State"},"version":{"type":"integer","minimum":0.0,"title":"Version"},"ttl_seconds":{"type":"integer","maximum":2592000.0,"minimum":60.0,"title":"Ttl Seconds","default":86400}},"type":"object","required":["state","version"],"title":"SessionWrite"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookOptions":{"properties":{"replace_existing":{"type":"boolean","title":"Replace Existing","default":false}},"type":"object","title":"WebhookOptions"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}