RestAPI-0.2.0.jar
What's new
0.2.0 - 2026-10-16
The first public file, with everything from 0.1.0 below. Needs the Hytale 0.7.0 release server or newer. The suite groups need TrackerAPI 1.1.0, Coinage 1.3.0, Dominion 0.7.0, Feats 1.7.0, Chronicle Stats 1.5.0, Atlas 1.8.0, Lullaby 1.1.0 and SocialBridge 0.2.0.
Added
- Players module. List, detail and inventory, kick, message, title, teleport, give, clear, game mode, heal, kill
and refer, bans with the API key stored on each ban, whitelist, permission groups with protected groups, and
broadcasts. 28 routes, 15
players.*settings, andnames.jsonfor offline name lookups. - Commands over HTTP with their output, a deny list that resolves aliases,
Idempotency-Keyreplays and audit lines before and after each run, plus the server log as JSON and as a Server Sent Events stream with resume. - Plugins, worlds and server control. List, load, unload and reload plugins under the suite lock (never RestAPI
itself), set world time, weather, ticking and pause, save, load and unload worlds, edit
config.json, run backups as jobs, and stop or restart the server with a countdown, cancel and exit code 8 for a supervisor. - Events as Server Sent Events with
Last-Event-IDresume (join, ready, leave, chat, death, command, world, plugin, server), signed webhooks with retries, a Discord format and a private target check, and/metricsin Prometheus format with request counts per route pattern and failed key counts. GET /openapi.jsonwith an OpenAPI 3.1 document of the routes mounted now, suite groups included while bound, and a 16 KB docs page at/docswith no outside scripts, a strict Content-Security-Policy and a Send box that keeps the key in memory only.- RCON (off by default, port 25575, loopback). Any key with the
commandsscope is the password, commands go through the same deny list asPOST /api/commands, long replies are split into packets, and failed logins and connections are capped per address. - Route groups for every suite mod under
/api/<mod>with their own scopes, mounted while the mod runs. Coinage moves throughcoinage.writename the key in the ledger and takeIdempotency-Keyreplays.GET /api/suiteshows what is mounted. /restapi rcon statusand/restapi webhooks list, and/restapi statusprints the RCON line.- Dominion staff routes under
dominion.write: disband, leader, power, unclaim and unclaim all, acting asRestAPI:<key name>, each with an audit line.suite.dominion.writesturns them off. GET /api/dominion/sieges/history,/api/chronicle/boards,/api/chronicle/seriesandseries/{id},/api/atlas/renderand/api/atlas/worlds.?initiator=<name>onGET /api/coinage/ledger, andsuite.chronicle.performanceSeries.- SocialBridge route group under
/api/socialbridge: the Discord user linked to a player and the player linked to a Discord user, andPOST /api/socialbridge/postunder the newsocialbridge.writescope for a line or an embed in one of its channels.siblings.socialbridgecontrols it. 135 routes with all eight suite mods. - After a reload of an older sibling bound under
alwaysthat does not reload its dependents, RestAPI reloads itself once under the suite lock instead of asking for/plugin reload. - A LinkageError in the TrackerAPI listener of the recent events ring drops the subscription at once, so a reload of TrackerAPI never waits on RestAPI.
Changed
- Every suite group binds through its mod's
onEnableandonDisablehooks and needs TrackerAPI 1.1.0, Coinage 1.3.0, Dominion 0.7.0, Feats 1.7.0, Chronicle Stats 1.5.0, Atlas 1.8.0 and Lullaby 1.1.0. A reload of any of them brings RestAPI back through that mod's dependents pass, and the unbind on the way logs at FINE only. Underalwaysan older copy binds with what its API had. - Coinage moves name the API key as the initiator, so
/coinage findand the daily reports show the key. /api/dominion/factionsholds the safe and war zones after the ranked factions, and/api/dominion/siegesgives both sides, the phase and the counts./api/feats/topreadsFeatsApi.top, Chronicle boards come per window and world with server totals and records live, and/api/atlastakes its address from Atlas./api/lullabyreads Lullaby's API and gives who is in bed, who is ready and how many are needed. The copy of Lullaby's sleep rule is gone.- Plugin manager reads off the world threads only try the manager's lock and answer the last known state while a stop or reload holds it. A sibling check that hit a stop used to park on that lock while holding RestAPI's own monitor, and the shutdown waited on it. The scheduler and audit writer now stop within 1.5 s and the webhook drain is 1 s.
0.1.0 - 2026-10-16
First build, not released yet. Needs the Hytale 0.7.0 release server or newer.
Added
GET /api/health, open by default, 503 while the server boots or stops or a world thread stops answering.GET /api/serverwith the server, players, worlds and their tick times, JVM figures, the suite mods found and the mounted route groups.- Named keys with scopes in
keys.json, stored as SHA-256 only. The first start makes anadminkey and prints it once. - Server Sent Events support in the HTTP layer for the streams that come next, capped by
http.maxStreams. - A token bucket rate limit per key, a limit on wrong keys per address, trusted proxies for
X-Forwarded-For, CORS off unless origins are listed, a request body limit and a cap on requests in flight. - The audit log in
audit/audit-<date>.jsonl. - Detection of TrackerAPI, Coinage, Dominion, Feats, Chronicle Stats, Atlas and Lullaby, with
siblings.<id>set to auto, always or never, and their route groups mounted and unmounted with them. /restapi status,reload,keys list,keys create,keys revokeandaudit tail.- 30 settings in
RestAPI.json, every sentence of/restapiinmessages.json.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

