{"openapi":"3.1.0","info":{"title":"Enchant API","description":"The official API for Enchant.cz Minecraft server providing access to member data, statistics, badges, voting, whitelist, applications, player skin rendering tools and much more.","license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"version":"0.1.3"},"paths":{"/badge/list":{"get":{"tags":["Badge"],"summary":"Get a list of all available badges","operationId":"list","responses":{"200":{"description":"Badge list retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Badge"}}}}}}}},"/badge/{nick}/active":{"get":{"tags":["Badge"],"summary":"Get member active badges","operationId":"active","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Active badges retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Badge"}}}}}}}},"/body/{nick}":{"get":{"tags":["Skin"],"summary":"Get rendered body image for a player","operationId":"body","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}},{"name":"yaw","in":"query","description":"Y-axis rotation in degrees (default: 20)","required":false,"schema":{"type":"number","format":"float"}},{"name":"pitch","in":"query","description":"X-axis rotation in degrees (default: 10)","required":false,"schema":{"type":"number","format":"float"}},{"name":"roll","in":"query","description":"Z-axis rotation in degrees (default: 0)","required":false,"schema":{"type":"number","format":"float"}}],"responses":{"200":{"description":"Body image retrieved","content":{"image/png":{}}},"404":{"description":"Skin not found for player"}}}},"/head/{nick}":{"get":{"tags":["Skin"],"summary":"Get rendered head image for a player","operationId":"head","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}},{"name":"size","in":"query","description":"Image size in pixels (multiples of 8, 8-512, default: 64)","required":false,"schema":{"type":"integer","format":"int32","minimum":0}}],"responses":{"200":{"description":"Head image retrieved","content":{"image/png":{}}},"404":{"description":"Skin not found for player"}}}},"/member/list":{"get":{"tags":["Member"],"summary":"List all server members","operationId":"list","responses":{"200":{"description":"Member list retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberEntry"}}}}}}}},"/member/{nick}/info":{"get":{"tags":["Member"],"summary":"Get the member info","operationId":"info","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Member info retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberInfoWithBan"}}}}}}},"/member/{nick}/stats":{"get":{"tags":["Member"],"summary":"Get the member statistics","operationId":"stats","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Member statistics retrieved successfully","content":{"application/json":{"schema":{}}}}}}},"/skin/{nick}":{"get":{"tags":["Skin"],"summary":"Get raw skin texture for a player","operationId":"skin","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Skin texture retrieved","content":{"image/png":{}}},"404":{"description":"Skin not found for player"}}}},"/status/online":{"get":{"tags":["Status"],"summary":"Get the number of players currently online","operationId":"online","responses":{"200":{"description":"Player count retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnlineResponse"}}}}}}},"/status/players":{"get":{"tags":["Status"],"summary":"Get the player list","operationId":"players","responses":{"200":{"description":"Player list retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlayerInfo"}}}}}}}},"/vote/leaderboard":{"get":{"tags":["Vote"],"summary":"Get leaderboard of top voters","operationId":"leaderboard","responses":{"200":{"description":"Leaderboard retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VoteLeaderboardEntry"}}}}}}}},"/vote/services":{"get":{"tags":["Vote"],"summary":"Get voting service list","operationId":"services","responses":{"200":{"description":"Service list retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VoteServiceInfo"}}}}}}}},"/vote/streaks":{"get":{"tags":["Vote"],"summary":"Get daily voting streaks","operationId":"streaks","responses":{"200":{"description":"Streaks retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VoteStreakEntry"}}}}}}}},"/vote/{nick}/next":{"get":{"tags":["Vote"],"summary":"Check when the next vote is available for a player","operationId":"next_vote","parameters":[{"name":"nick","in":"path","description":"Player nickname","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Vote service statuses retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VoteServiceStatus"}}}}}}}},"/wiki/article/{slug}":{"get":{"tags":["Wiki"],"summary":"Get specified wiki article","operationId":"article","parameters":[{"name":"slug","in":"path","description":"Article slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Wiki article retrieved successfully","content":{"application/json":{"schema":{}}}}}}},"/wiki/sections":{"get":{"tags":["Wiki"],"summary":"Get the wiki sections","operationId":"sections","responses":{"200":{"description":"Wiki sections retrieved successfully","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Badge":{"type":"object","description":"Badge list entry","required":["id","title","description","color","order"],"properties":{"color":{"type":"string","description":"MiniMessage color format"},"description":{"type":"string","description":"Description of the badge"},"id":{"type":"string","description":"Badge ID string"},"order":{"type":"integer","format":"int32","description":"Order index","minimum":0},"title":{"type":"string","description":"Badge title"}}},"BodyQuery":{"type":"object","description":"Query parameters for body endpoint","properties":{"pitch":{"type":["number","null"],"format":"float","description":"X-axis rotation in degrees (default: 10)"},"roll":{"type":["number","null"],"format":"float","description":"Z-axis rotation in degrees (default: 0)"},"yaw":{"type":["number","null"],"format":"float","description":"Y-axis rotation in degrees (default: 20)"}}},"HeadQuery":{"type":"object","description":"Query parameters for head endpoint","properties":{"size":{"type":["integer","null"],"format":"int32","description":"Image size in pixels (multiples of 8 from 8 to 512, default: 64)","minimum":0}}},"MemberBan":{"type":"object","description":"Member ban","required":["id","valid_from"],"properties":{"id":{"type":"integer","format":"int32","description":"Ban unique ID","minimum":0},"reason":{"type":["string","null"],"description":"Optional ban reason"},"valid_from":{"type":"string","format":"date-time","description":"Start timestamp"},"valid_to":{"type":["string","null"],"format":"date-time","description":"End timestamp or None if indefinite"}}},"MemberEntry":{"allOf":[{"$ref":"#/components/schemas/MemberInfo","description":"Member info"},{"type":"object","properties":{"inactive_days":{"type":["integer","null"],"format":"int64","description":"Number of days inactive"}}}],"description":"Member list entry"},"MemberInfo":{"type":"object","description":"Member info","required":["id","nick","added_at","active"],"properties":{"active":{"type":"boolean","description":"Indicates whether the member was recently active"},"added_at":{"type":"string","format":"date-time","description":"Timestamp when the member was added"},"id":{"type":"integer","format":"int32","description":"Member unique ID","minimum":0},"last_login":{"type":["string","null"],"format":"date-time","description":"Timestamp of the last login"},"nick":{"type":"string","description":"Member nickname"}}},"MemberInfoWithBan":{"allOf":[{"$ref":"#/components/schemas/MemberInfo","description":"Member info"},{"type":"object","properties":{"ban":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/MemberBan","description":"Optional ban"}]}}}],"description":"Member info with optional ban"},"OnlineResponse":{"type":"object","description":"Response for the online status endpoint","required":["online"],"properties":{"online":{"type":"integer","description":"Number of players currently online","minimum":0}}},"PlayerInfo":{"type":"object","description":"Player info","required":["nick"],"properties":{"nick":{"type":"string","description":"Player nick"},"server":{"type":["string","null"],"description":"Player's current server"}}},"VoteLeaderboardEntry":{"type":"object","description":"Detailed vote entry for leaderboard and ranking","required":["nick","vote_count","included"],"properties":{"included":{"type":"boolean","description":"Whether the player is included in rankings"},"nick":{"type":"string","description":"Player nickname"},"rank":{"type":["integer","null"],"format":"int64","description":"Optional rank position"},"vote_count":{"type":"integer","format":"int64","description":"Total number of votes"}}},"VoteServiceInfo":{"type":"object","description":"Vote service info struct","required":["id","name","rank","vote_count","vote_url"],"properties":{"id":{"type":"string","description":"Service ID"},"name":{"type":"string","description":"Service name"},"rank":{"type":"integer","format":"int32","description":"Server rank","minimum":0},"vote_count":{"type":"integer","format":"int32","description":"Vote count","minimum":0},"vote_url":{"type":"string","description":"Vote service URL"}}},"VoteServiceStatus":{"type":"object","description":"Vote status for a specific service","required":["service","last_vote"],"properties":{"last_vote":{"type":"string","format":"date-time","description":"When the last vote happened"},"next_vote":{"type":["string","null"],"format":"date-time","description":"When the next vote is available"},"service":{"type":"string","description":"Service name"}}},"VoteStreakEntry":{"type":"object","description":"Player vote streak entry","required":["nick","streak_days","voted_today"],"properties":{"badge":{"type":["string","null"],"description":"Streak badge"},"nick":{"type":"string","description":"Player nickname"},"streak_days":{"type":"integer","format":"int64","description":"Number of streak days"},"voted_today":{"type":"boolean","description":"Voted today flag"}}},"WikiArticle":{"allOf":[{"$ref":"#/components/schemas/WikiArticleItem","description":"Article item"},{"type":"object","required":["description","content","authors","last_updated"],"properties":{"authors":{"type":"array","items":{"type":"string"},"description":"Author list"},"content":{"type":"string","description":"Markdown content"},"description":{"type":"string","description":"Article description"},"image":{"type":["string","null"],"description":"Image URL"},"last_updated":{"type":"string","format":"date-time","description":"Article last update date"},"section_title":{"type":["string","null"],"description":"Article's section title"}}}],"description":"Wiki article"},"WikiArticleItem":{"type":"object","description":"Wiki article list item","required":["slug","icon","title"],"properties":{"icon":{"type":"string","description":"Article unicode icon"},"slug":{"type":"string","description":"Article slug"},"title":{"type":"string","description":"Article title"}}},"WikiSection":{"type":"object","description":"Wiki section with articles","required":["articles"],"properties":{"articles":{"type":"array","items":{"$ref":"#/components/schemas/WikiArticleItem"},"description":"Section articles list"},"title":{"type":["string","null"],"description":"Section title"}}}}},"tags":[{"name":"Status","description":"Server status endpoints"},{"name":"Member","description":"Server member endpoints"},{"name":"Badge","description":"Player badge endpoints"},{"name":"Vote","description":"Voting system endpoints"},{"name":"Skin","description":"Player skin rendering endpoints"},{"name":"Wiki","description":"Wiki endpoints"}]}