KehittäjätREST-rajapinta
REST-rajapinnan viite
Perus-URL: https://panel.hostwolf.net/api/client
Tunnistautuminen: lähetä Authorization: Bearer ptlc_... ja Accept: application/json. Luo avaimet kohdassa Tili → API-avaimet. Avaimen voi rajata tiettyihin osoitteisiin; katso sallittujen IP-osoitteiden lista.
Rajapinta on yhteensopiva Pterodactylin asiakasrajapinnan kanssa, joten olemassa olevat Pterodactyl-työkalut ja -kirjastot toimivat sen kanssa. Hostwolfin omat päätepisteet on merkitty HW.
Käytännöt#
Vastaukset. Yksittäiset oliot tulevat käärittyinä muodossa {"object": "server", "attributes": {...}}. Listat tulevat muodossa {"object": "list", "data": [...], "meta": {...}}. Hostwolfin omat rajapinnat palauttavat tavallista JSONia.
Sivutus. Sivutetut listat hyväksyvät ?page= ja ?per_page= (enintään 100 palvelimille, 50 varmuuskopioille) ja palauttavat meta.pagination-kentän, jossa on total, count, per_page, current_page ja total_pages.
Virheet.
{
"errors": [
{ "code": "ValidationException", "status": "422", "detail": "The name field is required." }
]
}
Jotkin Hostwolfin päätepisteet palauttavat sen sijaan {"error": "...", "code": "..."}, esim. 409 downgrade_requires_reset, kun peli vaihdetaan vanhempaan versioon, tai 422 unknown_version versiolle, jota ei ole olemassa.
Tilakoodit:
204: onnistui, ei sisältöä.401: avain puuttuu, on väärä tai peruttu.403: puuttuva oikeus (alikäyttäjät), jäädytetty palvelin tai pyyntö osoitteesta, joka ei ole avaimen sallittujen IP-osoitteiden listalla.404: ei löytynyt.409: palvelin on varattu (asennus, palautus tai siirto käynnissä).422: validointivirhe.429: pyyntöraja täynnä.Retry-Afterkertoo odotusajan sekunteina; katso rajat.502: palvelimen nodeen ei saada yhteyttä, tai palvelimen täytyy olla käynnissä.
Palvelinten tunnukset. {server} on palvelimen identifier, sen paneelin URL-osoitteen 8 merkkiä. Myös koko UUID toimii.
Tili#
SDK: hw.account · hw.servers.list · Paneeli: Tilin asetukset
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | / | page, per_page, filter[*], type | Palvelimesi (sivutettu) |
| GET | /permissions | Kaikki aliakäyttäjien oikeusavaimet | |
| GET | /account | Tilisi | |
| PUT | /account/email | email, password | |
| PUT | /account/password | current_password, password, password_confirmation | |
| PUT | /account/profile HW | first_name, last_name | Näyttönimi |
| PUT | /account/language HW | language: en-GB en-US de fr es fi; valinnainen currency (auto, USD, EUR…) | Paneelin kieli ja hintojen valuutta |
| POST DELETE | /account/avatar HW | image: data-URL (PNG/JPEG/WebP, enintään 512 kt) | avatar_url kentässä /account on sen jälkeen polku paneelissa |
| GET | /account/activity | page, filter[event], sort | Sivutettu |
| GET PUT | /account/notifications HW | email_enabled, email_address, discord_enabled, discord_webhook, notify_deploy | Koko tilin ilmoitukset |
| POST | /account/notifications/test HW | Lähettää testin jokaiseen käytössä olevaan kanavaan; results on tyhjä, jos mikään ei ole käytössä | |
| GET PUT | /account/curseforge HW | key (null tyhjentää) | Oma CurseForge-API-avaimesi |
| GET PUT | /account/factorio HW | username, token | Factorion modiportaalin tunnukset |
| GET | /account/api-keys | ||
| POST | /account/api-keys | description, allowed_ips[] (IP-osoitteita tai CIDR-alueita, enintään 50) | Avain on attributes.identifier, jota seuraa meta.secret_token; näytetään vain kerran |
| DELETE | /account/api-keys/{identifier} | ||
| GET | /account/ssh-keys | SFTP:tä varten | |
| POST | /account/ssh-keys | name, public_key | |
| POST | /account/ssh-keys/remove | fingerprint |
Palvelimet#
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server} | include=egg,subusers | Tiedot, varaukset, käynnistysmuuttujat, region HW |
| GET | /servers/{server}/resources | current_state, suoritin, muisti, levy, verkko, käyntiaika | |
| GET | /servers/{server}/activity | page, filter[event] | Sivutettu |
| POST | /servers/{server}/power | signal: start stop restart kill | 204 |
| POST | /servers/{server}/command | command | Palvelimen täytyy olla käynnissä |
| GET | /servers/{server}/websocket | Konsolin token, katso Konsoli | |
| POST | /servers/{server}/settings/rename | name, description | |
| POST | /servers/{server}/settings/reinstall | Ajaa asennusskriptin uudelleen | |
| PUT | /servers/{server}/settings/docker-image | docker_image | Yksi eggin imageista |
| GET | /servers/{server}/startup | Muuttujat sekä meta.startup_command ja meta.docker_images | |
| PUT | /servers/{server}/startup/variable | key, value | key on ympäristömuuttujan nimi, esim. MINECRAFT_VERSION |
Tiedostot#
Kaikki polut ovat suhteessa palvelimen juurihakemistoon. root on hakemisto, jossa files-merkinnät ovat.
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/files/list | directory | |
| GET | /servers/{server}/files/contents | file | Raakateksti. Puuttuva tiedosto palauttaa solmulta 500; SDK ilmoittaa sen muodossa 404 |
| POST | /servers/{server}/files/write | ?file=; raakateksti sisältönä | Luo tai korvaa |
| GET | /servers/{server}/files/download | file | attributes.url: allekirjoitettu kertakäyttöinen URL |
| GET | /servers/{server}/files/upload | Allekirjoitettu URL: POST multipart files osoitteeseen url&directory=/path | |
| PUT | /servers/{server}/files/rename | root, files[]: {from, to} | Myös siirtää |
| POST | /servers/{server}/files/copy | location | |
| POST | /servers/{server}/files/delete | root, files[] | |
| POST | /servers/{server}/files/create-folder | root, name | |
| POST | /servers/{server}/files/compress | root, files[] | Palauttaa arkiston |
| POST | /servers/{server}/files/decompress | root, file | |
| POST | /servers/{server}/files/chmod | root, files[]: {file, mode} | |
| POST | /servers/{server}/files/pull | url, directory, filename, use_header, foreground | Palvelin lataa URL-osoitteen |
Varmuuskopiot#
SDK: hw.backups · MCP: create_backup, restore_backup, list_backups · Raja: 2 varmuuskopiota 10 minuutissa.
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/backups | page, per_page | Sivutettu |
| POST | /servers/{server}/backups | name, ignored, is_locked | Ajetaan taustalla |
| GET | /servers/{server}/backups/{uuid} | completed_at täytetään, kun valmis | |
| GET | /servers/{server}/backups/{uuid}/download | Allekirjoitettu URL | |
| POST | /servers/{server}/backups/{uuid}/lock | Lukitse tai avaa lukitus | |
| POST | /servers/{server}/backups/{uuid}/restore | truncate | truncate: true poistaa ensin kaikki tiedostot |
| DELETE | /servers/{server}/backups/{uuid} | ||
| GET PUT | /servers/{server}/hostwolf/smart-backups HW | enabled | Automaattiset varmuuskopiot ennen riskialttiita muutoksia |
Peli, pelaajat ja diagnostiikka HW#
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/game/versions | supported, current, versions | |
| POST | /servers/{server}/game/version | version, reset_world, force | Vaihtaa ja asentaa uudelleen. 409 downgrade_requires_reset vanhemmille versioille, 422 unknown_version versioille, joita ei ole listassa /game/versions |
| GET | /servers/{server}/hostwolf/game-settings | Selkeät asetukset asetustiedostoittain ryhmiteltyinä. supported: false peleille, joilla niitä ei ole, kuten Java-Minecraftille (muokkaa sen sijaan tiedostoa server.properties) | |
| PUT | /servers/{server}/hostwolf/game-settings | values: {id: "value"}, restart | Totuusarvot ovat "true" / "false" |
| GET | /servers/{server}/hostwolf/diagnostics | ”Fix my server” -tarkistukset vakavuustasoineen | |
| GET | /servers/{server}/players | Paikalla olevat, enimmäismäärä, nimet (Minecraft) | |
| GET | /servers/{server}/hostwolf/players | Reaaliaikainen pelaajalista RCONin/kyselyn kautta sekä tuetut toiminnot | |
| POST | /servers/{server}/hostwolf/players/{action} | player: {name, steamid, id}, message | action: kick ban unban broadcast |
Modit, lisäosat ja modipaketit HW#
SDK: hw.addons, hw.modpacks · MCP: search_addons, install_addon, install_modpack · Tuetut pelit: pelit
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/addons | Tuetut lähteet, asennushakemisto, kehykset, Workshop-tila | |
| GET | /servers/{server}/addons/search | source, q, page | Lähteet riippuvat pelistä: modrinth, curseforge, hangar, spigot, umod, thunderstore… |
| GET | /servers/{server}/addons/versions | source, project | Merkitsee yhteensopivat versiot |
| POST | /servers/{server}/addons/install | source, project, version | Jätä version pois, niin saat uusimman yhteensopivan |
| GET | /servers/{server}/addons/installed | updates=1 | Asennetut lisäosat saatavilla olevine päivityksineen sekä käsin lisätyt tiedostot |
| DELETE | /servers/{server}/addons/installed/{id} | ||
| POST | /servers/{server}/addons/manual/delete | file | Poista käsin lisätty tiedosto |
| POST | /servers/{server}/addons/upload | multipart file | esim. lisäosa .jar-tiedostona |
| POST | /servers/{server}/addons/featured | project | Suositellut lisäosat yhdellä napsautuksella |
| PUT | /servers/{server}/addons/framework | framework | esim. Oxide/Carbon, BepInEx |
| POST | /servers/{server}/addons/cs2 | repair | CS2: Metamod + CounterStrikeSharp |
| GET PUT | /servers/{server}/addons/workshop | items[] | Steam Workshopin kohteet tai kokoelma |
| GET | /servers/{server}/addons/modpacks | Nykyinen modipaketti ja sen viimeisimmän käynnistyksen tulos | |
| GET | /servers/{server}/addons/modpacks/search | q, page, category, source | source: modrinth tai curseforge |
| GET | /servers/{server}/addons/modpacks/versions | project, source | |
| POST | /servers/{server}/addons/modpacks | project, version, fresh_world, source | Korvaa modit ja latausohjelman. 404, jos projektia tai versiota ei ole |
| DELETE | /servers/{server}/addons/modpacks |
Ajastukset#
SDK: hw.schedules · MCP: create_schedule, list_schedules
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/schedules | Sisältää tehtävät | |
| POST | /servers/{server}/schedules | name, minute, hour, day_of_month, month, day_of_week, is_active, only_when_online | Cron-kentät, UTC |
| GET POST DELETE | /servers/{server}/schedules/{id} | kuten luotaessa | POST päivittää |
| POST | /servers/{server}/schedules/{id}/execute | Aja nyt | |
| POST | /servers/{server}/schedules/{id}/tasks | action (command power backup), payload, time_offset, continue_on_failure | |
| POST DELETE | /servers/{server}/schedules/{id}/tasks/{task} | kuten luotaessa | POST päivittää |
Verkko, tietokannat ja aliakäyttäjät#
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET | /servers/{server}/network/allocations | Portit | |
| POST | /servers/{server}/network/allocations | Määritä automaattisesti uusi portti (jos paketti sallii) | |
| POST | /servers/{server}/network/allocations/{id} | notes | |
| POST | /servers/{server}/network/allocations/{id}/primary | ||
| DELETE | /servers/{server}/network/allocations/{id} | ||
| GET | /servers/{server}/databases | include=password | Myös on_node, remote_ips, remote_anywhere, remote_address |
| GET | /servers/{server}/databases/service HW | status (none provisioning ready unreachable failed), local_address, public_address, other_servers | |
| POST | /servers/{server}/databases | database, remote_ips[], remote_anywhere | 202 ja palvelun tila, kun ensimmäinen tietokanta käynnistyy (katso alta) |
| POST | /servers/{server}/databases/{id}/rotate-password | ||
| POST | /servers/{server}/databases/{id}/remote HW | remote_ips[] (julkiset IPv4-osoitteet, enintään 10), remote_anywhere | Korvaa listan; [] sulkee pääsyn ulkopuolelta |
| GET | /servers/{server}/databases/{id}/export HW | .sql.gz-lataus. 6 minuutissa | |
| POST | /servers/{server}/databases/{id}/import HW | file (multipart, .sql tai .sql.gz, enintään 50 Mt) | 204. 6 minuutissa |
| DELETE | /servers/{server}/databases/{id} | ||
| GET | /servers/{server}/users | Aliakäyttäjät | |
| POST | /servers/{server}/users | public_id, permissions[] | Lisää olemassa olevan Hostwolf-tilin sen julkisella tunnuksella (HW-XXXXXX, tilin omalla sivulla) |
| GET POST DELETE | /servers/{server}/users/{uuid} | permissions[] | POST päivittää |
Tietokannat toimivat palvelimen omalla koneella. Palvelimen ensimmäinen POST /databases käynnistää tietokantapalvelun, mikä kestää noin 40 sekuntia, ja vastaa tietokannan sijaan 202 Accepted sekä palvelun tilan ({"object": "hostwolf_database_service", "attributes": {"status": "provisioning", …}}). Kysele GET /databases, kunnes tietokanta näkyy, tai käytä databases.create(id, name, { wait: true }). Seuraavat tietokannat luodaan heti (200). Pelipalvelimet yhdistävät osoitteeseen host.address (172.18.0.1:3306); remote_address toimii vain sallimistasi remote_ips-osoitteista tai mistä tahansa, kun remote_anywhere on päällä. Katso tietokantaopas.
Palvelimen lisät HW#
| Metodi | Polku | Sisältö / kysely | Huomiot |
|---|---|---|---|
| GET PUT | /servers/{server}/hostwolf/notifications | webhook_url, clear_webhook, events | Discord-ilmoitukset: käynnistyi, pysähtyi, kaatui, varmuuskopiot, pelaajat |
| POST | /servers/{server}/hostwolf/notifications/test | ||
| GET | /servers/{server}/hostwolf/domain | Oma verkkotunnus ja sen tarvitsemat tietueet | |
| POST | /servers/{server}/hostwolf/domain/check | hostname | Tarkistaa nykyisen DNS:n |
| PUT DELETE | /servers/{server}/hostwolf/domain | hostname | |
| GET | /servers/{server}/hostwolf/network | Velocity/BungeeCord-välityspalvelimella: sen merkinnät ja palvelimet, jotka voit liittää | |
| POST | /servers/{server}/hostwolf/network/link | servers[]: {id, key}, lobby, restart | |
| POST | /servers/{server}/hostwolf/network/unlink | id, restart | |
| POST | /servers/{server}/hostwolf/network/fabric-proxy | id | Asentaa FabricProxy-Liten Fabric-taustapalvelimelle |
Paketit ja tilaukset HW#
SDK: hw.store · MCP: get_plans_and_prices, list_orders · Selkeät hinnat: hinnoittelu
Vain luku. Tilaaminen, peruminen ja maksaminen tapahtuvat paneelissa.
| Metodi | Polku | Huomiot |
|---|---|---|
| GET | /store/catalog | Pelit, pakettikoot, alueet ja reaaliaikaiset alueittaiset hinnat |
| GET | /store/orders | Odottavat, aktiiviset ja äskettäin epäonnistuneet tilaukset |
| GET | /store/billing | Kaikki tilaukset hintoineen, uusimisineen, perumisineen ja palautuksineen |
Konsoli#
SDK: hw.console(), hw.tail() · MCP: get_console
Reaaliaikainen konsoli on websocket nodessa, jossa palvelimesi toimii.
GET /servers/{server}/websocketpalauttaa{"data": {"token": "...", "socket": "wss://..."}}.- Yhdistä
socket-osoitteeseen otsakkeellaOrigin: https://panel.hostwolf.net. - Lähetä
{"event": "auth", "args": ["<token>"]}ja odota vastaustaauth success. - Lähetä
{"event": "send logs", "args": [null]}, niin saat viimeisimmän tulosteen uudelleen.
Viestit ovat JSONia muodossa {"event": "...", "args": [...]}.
Tapahtumat, joita vastaanotat:
console outputstatusstats(JSON-merkkijono)install outputdaemon messagejadaemon errortoken expiring: hae uusi token ja lähetäauthuudelleen.token expired
Tapahtumat, joita voit lähettää:
send commandja komennon teksti.set statejastart,stop,restarttaikill.send logssend stats
SDK hoitaa kaiken tämän: hw.console(id) tai hw.tail(id).
SFTP#
Tiedostoihin pääsee myös SFTP:llä. Käytä GET /servers/{server} -kutsun sftp_details-kentän osoitetta ja käyttäjänimeä <your username>.<server identifier>. Kirjaudu paneelin salasanalla tai SSH-avaimella, jonka olet lisännyt kohdassa /account/ssh-keys.