{"name":"DuckDuckRob Public API","version":"v1","description":"Read-only JSON for everything the profiler shows publicly.","documentation":"https://ogn.tropixmc.dev/docs/api","openapi":"https://ogn.tropixmc.dev/api/v1/openapi.json","rateLimit":{"requests":120,"windowSeconds":60},"endpoints":[{"method":"GET","path":"/api/v1","summary":"Index of every endpoint, plus the rate limit in force."},{"method":"GET","path":"/api/v1/openapi.json","summary":"OpenAPI 3.1 description of this API, for code generators and clients."},{"method":"GET","path":"/api/v1/health","summary":"Liveness check with the current row counts."},{"method":"GET","path":"/api/v1/stats","summary":"Site-wide totals: players, messages, donations, quotes, guilds, warps, crashes."},{"method":"GET","path":"/api/v1/online","summary":"How many players are on the RPG server right now. Count only, never names."},{"method":"GET","path":"/api/v1/players","summary":"The player directory, busiest first."},{"method":"GET","path":"/api/v1/players/{name}","summary":"One player: identity, activity, server figures, guild, donations, badges, joke stats."},{"method":"GET","path":"/api/v1/players/{name}/activity","summary":"Hour-of-day histogram, a message-count series, and the money/petals history."},{"method":"GET","path":"/api/v1/players/{name}/words","summary":"Vocabulary metrics with top words, bigrams and emojis. Off unless the player opted in."},{"method":"GET","path":"/api/v1/players/{name}/messages","summary":"A deterministic sample of the player's stored messages. Off unless the player opted in."},{"method":"GET","path":"/api/v1/players/{name}/friends","summary":"Friend edges: who this player added, who added them, plus the computed best friend."},{"method":"GET","path":"/api/v1/search","summary":"Substring search over usernames and seen nicknames."},{"method":"GET","path":"/api/v1/traits","summary":"The filterable joke traits and every value each one can take."},{"method":"GET","path":"/api/v1/traits/{field}","summary":"Every player whose trait matches a value."},{"method":"GET","path":"/api/v1/leaderboards","summary":"Every public leaderboard and its key."},{"method":"GET","path":"/api/v1/leaderboards/{stat}","summary":"One leaderboard, ranked. Accepts the aliases the site and the Discord bot accept."},{"method":"GET","path":"/api/v1/guilds","summary":"Tracked guilds, strongest first."},{"method":"GET","path":"/api/v1/guilds/{name}","summary":"One guild with its roster, allies and enemies."},{"method":"GET","path":"/api/v1/warps","summary":"Player warps, most visited first."},{"method":"GET","path":"/api/v1/warps/{name}","summary":"One player warp in full."},{"method":"GET","path":"/api/v1/donations","summary":"Donation totals with the ranked donor board and the recent feed."},{"method":"GET","path":"/api/v1/quotes","summary":"The quotebook, newest first."},{"method":"GET","path":"/api/v1/wealth","summary":"Balance distribution: median, mean, Gini, top shares, magnitude histogram, richest players."}]}