{"openapi":"3.1.0","info":{"title":"Pymageddon API","description":"Pymageddon is a free-to-play MMO survival game that simulates a living ecosystem with predator-prey dynamics. Players control a creature live or deploy a sandboxed Python bot to drive it. Obtain a bearer token from `POST /token` (set `is_guest: true` for an instant guest account). Agent-oriented overview: https://pymageddon.adamland.net/llms.txt","version":"1.0.0"},"paths":{"/token":{"post":{"summary":"Login For Access Token","operationId":"login_for_access_token_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/login_page":{"get":{"summary":"Login Page","operationId":"login_page_login_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/create_player_page":{"get":{"summary":"Create User Page","operationId":"create_user_page_create_player_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/create_bot_page":{"get":{"summary":"Create Bot Page","operationId":"create_bot_page_create_bot_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/new_game":{"post":{"summary":"New Game","operationId":"new_game_new_game_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/NewGame"},{"type":"null"}],"title":"New Game Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/end_game":{"post":{"summary":"End Game","operationId":"end_game_end_game_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/me":{"get":{"summary":"End Game","operationId":"end_game_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/":{"get":{"summary":"Index","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/explorer":{"get":{"summary":"Explorer","operationId":"explorer_explorer_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/explorer/type/{type_name}/":{"get":{"summary":"Explorer Type","operationId":"explorer_type_explorer_type__type_name___get","parameters":[{"name":"type_name","in":"path","required":true,"schema":{"type":"string","title":"Type Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/players":{"get":{"summary":"Players","operationId":"players_players_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/players/{player_name}":{"get":{"summary":"Player","operationId":"player_players__player_name__get","parameters":[{"name":"player_name","in":"path","required":true,"schema":{"type":"string","title":"Player Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/world_map":{"get":{"summary":"World Map","operationId":"world_map_world_map_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/map_image.png":{"get":{"summary":"Get Map Image","operationId":"get_map_image_map_image_png_get","responses":{"200":{"description":"Successful Response"}}}},"/hist_counts_image.png":{"get":{"summary":"Get Map Image","operationId":"get_map_image_hist_counts_image_png_get","responses":{"200":{"description":"Successful Response"}}}},"/refresh_time_plot.png":{"get":{"summary":"Refresh Time Plot","operationId":"refresh_time_plot_refresh_time_plot_png_get","responses":{"200":{"description":"Successful Response"}}}},"/start_game_page":{"get":{"summary":"Start Game Page","operationId":"start_game_page_start_game_page_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/play":{"get":{"summary":"Play","operationId":"play_play_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/create_player":{"post":{"summary":"Create Player","operationId":"create_player_create_player_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/control":{"post":{"summary":"Control","operationId":"control_control_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeysPressed"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/create_bot":{"post":{"summary":"Create Bot","operationId":"create_bot_create_bot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCode"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/score":{"get":{"summary":"Scores","operationId":"scores_score_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/get_map":{"get":{"summary":"Read Item","operationId":"read_item_get_map_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"since_epoch","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Since Epoch"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ping":{"get":{"summary":"Ping","operationId":"ping_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/ping2/{size}":{"get":{"summary":"Ping2","operationId":"ping2_ping2__size__get","parameters":[{"name":"size","in":"path","required":true,"schema":{"type":"integer","title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","operationId":"sitemap_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/player_image/{player_name}":{"get":{"summary":"Player Image","operationId":"player_image_player_image__player_name__get","parameters":[{"name":"player_name","in":"path","required":true,"schema":{"type":"string","title":"Player Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BotCode":{"properties":{"code_str":{"type":"string","title":"Code Str"}},"type":"object","required":["code_str"],"title":"BotCode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeysPressed":{"properties":{"ArrowRight":{"type":"boolean","title":"Arrowright"},"ArrowLeft":{"type":"boolean","title":"Arrowleft"},"ArrowDown":{"type":"boolean","title":"Arrowdown"},"ArrowUp":{"type":"boolean","title":"Arrowup"}},"type":"object","required":["ArrowRight","ArrowLeft","ArrowDown","ArrowUp"],"title":"KeysPressed"},"NewGame":{"properties":{"spectator_follow_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Spectator Follow Index"},"spectator_follow_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spectator Follow Type"}},"type":"object","required":["spectator_follow_index","spectator_follow_type"],"title":"NewGame"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"}},"type":"object","required":["access_token","token_type"],"title":"Token"},"UserCreate":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"verify_password":{"type":"string","title":"Verify Password"}},"type":"object","required":["username","password","verify_password"],"title":"UserCreate"},"UserLogin":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username","default":""},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password","default":""},"is_guest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Guest","default":false}},"type":"object","title":"UserLogin"},"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":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"token"}}}}}}