{"openapi":"3.1.0","info":{"title":"Genshin Wizard API","description":"FastAPI-based API for Genshin Wizard","version":"1.3.5"},"paths":{"/codes/":{"get":{"tags":["codes"],"summary":"Get Codes","description":"Get redemption codes for specified game or all games","operationId":"get_codes_codes__get","parameters":[{"name":"game","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/status/api":{"get":{"tags":["status"],"summary":"Get Api Status","description":"Get API server metrics","operationId":"get_api_status_status_api_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/status/bot":{"get":{"tags":["status"],"summary":"Get Bot Status","description":"Get bot metrics","operationId":"get_bot_status_status_bot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/status/image":{"get":{"tags":["status"],"summary":"Get Image Status","description":"Get image server metrics","operationId":"get_image_status_status_image_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/status/raiden":{"get":{"tags":["status"],"summary":"Get Raiden Status","description":"Get Raiden microservices metrics","operationId":"get_raiden_status_status_raiden_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/status/":{"get":{"tags":["status"],"summary":"Get All Status","description":"Get all server status metrics","operationId":"get_all_status_status__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/info/builds":{"get":{"tags":["info"],"summary":"Get Builds Count","description":"Get total builds maintained within Genshin Wizard bot","operationId":"get_builds_count_info_builds_get","parameters":[{"name":"saved","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Saved"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/info/commands":{"get":{"tags":["info"],"summary":"Get Commands","description":"Get application commands executed by Genshin Wizard","operationId":"get_commands_info_commands_get","parameters":[{"name":"total","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Total"}},{"name":"count","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"locale","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/info/guilds":{"get":{"tags":["info"],"summary":"Get Guilds Count","description":"Get total number of guilds Genshin Wizard has joined (rounded)","operationId":"get_guilds_count_info_guilds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/info/premium":{"get":{"tags":["info"],"summary":"Get Premium Count","description":"Get total number of premium users maintained within Genshin Wizard bot","operationId":"get_premium_count_info_premium_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/info/users":{"get":{"tags":["info"],"summary":"Get Users Count","description":"Get total number of registered users within Genshin Wizard (rounded)","operationId":"get_users_count_info_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/info/wishes":{"get":{"tags":["info"],"summary":"Get Wishes Count","description":"Get total wishes maintained within Genshin Wizard bot","operationId":"get_wishes_count_info_wishes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/info/lootbar":{"get":{"tags":["info"],"summary":"Get Lootbar Supporters","operationId":"get_lootbar_supporters_info_lootbar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/discohook/preview":{"get":{"tags":["discohook"],"summary":"Get Discohook Preview","description":"Create a Discohook viewer link for the specified command type.\n\nArgs:\n    template_type: The type of command template to use (default: server_time)\n    banner_url: Optional custom banner URL to replace the default banner\n    theme: Optional theme parameter ('light' or 'dark') for viewer mode\n\nReturns:\n    Dictionary containing the Discohook viewer URL with base64 encoded template data","operationId":"get_discohook_preview_discohook_preview_get","parameters":[{"name":"template_type","in":"query","required":true,"schema":{"type":"string","description":"The type of command template to use","title":"Template Type"},"description":"The type of command template to use"},{"name":"banner_url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional custom banner URL to replace the default banner","title":"Banner Url"},"description":"Optional custom banner URL to replace the default banner"},{"name":"theme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional theme parameter ('light' or 'dark') for viewer mode","default":"dark","title":"Theme"},"description":"Optional theme parameter ('light' or 'dark') for viewer mode"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/discohook/template/{template_type}":{"post":{"tags":["discohook"],"summary":"Store Template","description":"Store or update a Discohook template in Redis.\n\nArgs:\n    template_type: The type/name of the template\n    template_data: The template data to store\n\nReturns:\n    Success/failure status","operationId":"store_template_discohook_template__template_type__post","parameters":[{"name":"template_type","in":"path","required":true,"schema":{"type":"string","title":"Template Type"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Template Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["discohook"],"summary":"Get Template","description":"Get a specific template from Redis.\n\nArgs:\n    template_type: The type/name of the template to retrieve\n\nReturns:\n    The template data","operationId":"get_template_discohook_template__template_type__get","parameters":[{"name":"template_type","in":"path","required":true,"schema":{"type":"string","title":"Template Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["discohook"],"summary":"Delete Template","description":"Delete a template from Redis.\n\nArgs:\n    template_type: The type/name of the template to delete\n\nReturns:\n    Success/failure status","operationId":"delete_template_discohook_template__template_type__delete","parameters":[{"name":"template_type","in":"path","required":true,"schema":{"type":"string","title":"Template Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/discohook/templates":{"get":{"tags":["discohook"],"summary":"List Templates","description":"Get a list of all available template types.\n\nReturns:\n    List of available template names","operationId":"list_templates_discohook_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/callback/topgg":{"post":{"tags":["callback"],"summary":"Topgg Callback","description":"Handles Top.gg webhook callbacks.","operationId":"topgg_callback_callback_topgg_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/callback/kofi":{"post":{"tags":["callback"],"summary":"Kofi Callback","description":"Handles Ko-fi donation callbacks.","operationId":"kofi_callback_callback_kofi_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/callback/patreon":{"post":{"tags":["callback"],"summary":"Patreon Callback","description":"Handles Patreon donation callbacks.","operationId":"patreon_callback_callback_patreon_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/callback/discordbotlist":{"post":{"tags":["callback"],"summary":"Discord Bot List Bot Callback","description":"Handles Discord Bot List webhook callbacks for bot votes.","operationId":"discord_bot_list_bot_callback_callback_discordbotlist_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/callback/stripe":{"post":{"tags":["callback"],"summary":"Stripe Callback","description":"Handles Stripe webhook callbacks.","operationId":"stripe_callback_callback_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"}}}},"/":{"get":{"summary":"Root","description":"Root endpoint","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"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"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}