{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/shutdown":{"get":{"summary":"Shutdown","operationId":"shutdown_shutdown_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"SecretKeyHeader":[]}]}},"/api/status":{"get":{"summary":"Status","operationId":"status_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/status":{"get":{"summary":"Status","operationId":"status_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/debug":{"get":{"summary":"Debug","operationId":"debug_debug_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/cluster/route-info":{"get":{"summary":"Cluster Route Info","description":"Aggregate every node's /route-info into one cluster-wide view.\n\nDiscord's global rate limit is 50 requests per second per bot token, and\nthat budget is shared by the whole cluster. Each node runs its own disnake\nHTTPClient and paces itself as if it owned all of it, so a single node's\nnumbers cannot tell us whether we are near the ceiling. Only the sum can.","operationId":"cluster_route_info_cluster_route_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"SecretKeyHeader":[]}]}},"/api/stats":{"get":{"summary":"Stats","operationId":"stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stats":{"get":{"summary":"Stats","operationId":"stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthcheck":{"get":{"summary":"Healthcheck","operationId":"healthcheck_healthcheck_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/internal/broadcast":{"post":{"summary":"Internal Broadcast","description":"Fan out a realtime event to every connected bot node.\n\nEach bot node runs the same broadcast locally; nodes with no subscribers\nfor the room do nothing, so it's safe to hit them all.","operationId":"internal_broadcast_internal_broadcast_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BroadcastRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"SecretKeyHeader":[]}]}},"/{path}":{"trace":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__trace","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"options":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__options","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__head","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__patch","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__delete","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__put","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__post","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Main","description":"Intercept all requests. If the request should goto a specific id, we will resolve based on the\nrequest details.","operationId":"main__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BroadcastRequest":{"properties":{"room":{"type":"string","title":"Room"},"type":{"type":"string","title":"Type"},"data":{"additionalProperties":true,"type":"object","title":"Data"}},"type":"object","required":["room","type","data"],"title":"BroadcastRequest","description":"Server-push event fan-out payload. Authenticated with the shared cluster SECRET."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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":{"SecretKeyHeader":{"type":"apiKey","in":"header","name":"Authorization"}}}}