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-After kertoo 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#

MetodiPolkuSisältö / kyselyHuomiot
GET/page, per_page, filter[*], typePalvelimesi (sivutettu)
GET/permissionsKaikki aliakäyttäjien oikeusavaimet
GET/accountTilisi
PUT/account/emailemail, password
PUT/account/passwordcurrent_password, password, password_confirmation
PUT/account/profile HWfirst_name, last_nameNäyttönimi
PUT/account/language HWlanguage: en-GB en-US de fr es fi; valinnainen currency (auto, USD, EUR…)Paneelin kieli ja hintojen valuutta
POST DELETE/account/avatar HWimage: data-URL (PNG/JPEG/WebP, enintään 512 kt)avatar_url kentässä /account on sen jälkeen polku paneelissa
GET/account/activitypage, filter[event], sortSivutettu
GET PUT/account/notifications HWemail_enabled, email_address, discord_enabled, discord_webhook, notify_deployKoko tilin ilmoitukset
POST/account/notifications/test HWLähettää testin jokaiseen käytössä olevaan kanavaan; results on tyhjä, jos mikään ei ole käytössä
GET PUT/account/curseforge HWkey (null tyhjentää)Oma CurseForge-API-avaimesi
GET PUT/account/factorio HWusername, tokenFactorion modiportaalin tunnukset
GET/account/api-keys
POST/account/api-keysdescription, 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-keysSFTP:tä varten
POST/account/ssh-keysname, public_key
POST/account/ssh-keys/removefingerprint

Palvelimet#

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}include=egg,subusersTiedot, varaukset, käynnistysmuuttujat, region HW
GET/servers/{server}/resourcescurrent_state, suoritin, muisti, levy, verkko, käyntiaika
GET/servers/{server}/activitypage, filter[event]Sivutettu
POST/servers/{server}/powersignal: start stop restart kill204
POST/servers/{server}/commandcommandPalvelimen täytyy olla käynnissä
GET/servers/{server}/websocketKonsolin token, katso Konsoli
POST/servers/{server}/settings/renamename, description
POST/servers/{server}/settings/reinstallAjaa asennusskriptin uudelleen
PUT/servers/{server}/settings/docker-imagedocker_imageYksi eggin imageista
GET/servers/{server}/startupMuuttujat sekä meta.startup_command ja meta.docker_images
PUT/servers/{server}/startup/variablekey, valuekey on ympäristömuuttujan nimi, esim. MINECRAFT_VERSION

Tiedostot#

Kaikki polut ovat suhteessa palvelimen juurihakemistoon. root on hakemisto, jossa files-merkinnät ovat.

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/files/listdirectory
GET/servers/{server}/files/contentsfileRaakateksti. 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/downloadfileattributes.url: allekirjoitettu kertakäyttöinen URL
GET/servers/{server}/files/uploadAllekirjoitettu URL: POST multipart files osoitteeseen url&directory=/path
PUT/servers/{server}/files/renameroot, files[]: {from, to}Myös siirtää
POST/servers/{server}/files/copylocation
POST/servers/{server}/files/deleteroot, files[]
POST/servers/{server}/files/create-folderroot, name
POST/servers/{server}/files/compressroot, files[]Palauttaa arkiston
POST/servers/{server}/files/decompressroot, file
POST/servers/{server}/files/chmodroot, files[]: {file, mode}
POST/servers/{server}/files/pullurl, directory, filename, use_header, foregroundPalvelin lataa URL-osoitteen

Varmuuskopiot#

SDK: hw.backups · MCP: create_backup, restore_backup, list_backups · Raja: 2 varmuuskopiota 10 minuutissa.

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/backupspage, per_pageSivutettu
POST/servers/{server}/backupsname, ignored, is_lockedAjetaan taustalla
GET/servers/{server}/backups/{uuid}completed_at täytetään, kun valmis
GET/servers/{server}/backups/{uuid}/downloadAllekirjoitettu URL
POST/servers/{server}/backups/{uuid}/lockLukitse tai avaa lukitus
POST/servers/{server}/backups/{uuid}/restoretruncatetruncate: true poistaa ensin kaikki tiedostot
DELETE/servers/{server}/backups/{uuid}
GET PUT/servers/{server}/hostwolf/smart-backups HWenabledAutomaattiset varmuuskopiot ennen riskialttiita muutoksia

Peli, pelaajat ja diagnostiikka HW#

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/game/versionssupported, current, versions
POST/servers/{server}/game/versionversion, reset_world, forceVaihtaa ja asentaa uudelleen. 409 downgrade_requires_reset vanhemmille versioille, 422 unknown_version versioille, joita ei ole listassa /game/versions
GET/servers/{server}/hostwolf/game-settingsSelkeä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-settingsvalues: {id: "value"}, restartTotuusarvot ovat "true" / "false"
GET/servers/{server}/hostwolf/diagnostics”Fix my server” -tarkistukset vakavuustasoineen
GET/servers/{server}/playersPaikalla olevat, enimmäismäärä, nimet (Minecraft)
GET/servers/{server}/hostwolf/playersReaaliaikainen pelaajalista RCONin/kyselyn kautta sekä tuetut toiminnot
POST/servers/{server}/hostwolf/players/{action}player: {name, steamid, id}, messageaction: kick ban unban broadcast

Modit, lisäosat ja modipaketit HW#

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/addonsTuetut lähteet, asennushakemisto, kehykset, Workshop-tila
GET/servers/{server}/addons/searchsource, q, pageLähteet riippuvat pelistä: modrinth, curseforge, hangar, spigot, umod, thunderstore…
GET/servers/{server}/addons/versionssource, projectMerkitsee yhteensopivat versiot
POST/servers/{server}/addons/installsource, project, versionJätä version pois, niin saat uusimman yhteensopivan
GET/servers/{server}/addons/installedupdates=1Asennetut lisäosat saatavilla olevine päivityksineen sekä käsin lisätyt tiedostot
DELETE/servers/{server}/addons/installed/{id}
POST/servers/{server}/addons/manual/deletefilePoista käsin lisätty tiedosto
POST/servers/{server}/addons/uploadmultipart fileesim. lisäosa .jar-tiedostona
POST/servers/{server}/addons/featuredprojectSuositellut lisäosat yhdellä napsautuksella
PUT/servers/{server}/addons/frameworkframeworkesim. Oxide/Carbon, BepInEx
POST/servers/{server}/addons/cs2repairCS2: Metamod + CounterStrikeSharp
GET PUT/servers/{server}/addons/workshopitems[]Steam Workshopin kohteet tai kokoelma
GET/servers/{server}/addons/modpacksNykyinen modipaketti ja sen viimeisimmän käynnistyksen tulos
GET/servers/{server}/addons/modpacks/searchq, page, category, sourcesource: modrinth tai curseforge
GET/servers/{server}/addons/modpacks/versionsproject, source
POST/servers/{server}/addons/modpacksproject, version, fresh_world, sourceKorvaa modit ja latausohjelman. 404, jos projektia tai versiota ei ole
DELETE/servers/{server}/addons/modpacks

Ajastukset#

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/schedulesSisältää tehtävät
POST/servers/{server}/schedulesname, minute, hour, day_of_month, month, day_of_week, is_active, only_when_onlineCron-kentät, UTC
GET POST DELETE/servers/{server}/schedules/{id}kuten luotaessaPOST päivittää
POST/servers/{server}/schedules/{id}/executeAja nyt
POST/servers/{server}/schedules/{id}/tasksaction (command power backup), payload, time_offset, continue_on_failure
POST DELETE/servers/{server}/schedules/{id}/tasks/{task}kuten luotaessaPOST päivittää

Verkko, tietokannat ja aliakäyttäjät#

MetodiPolkuSisältö / kyselyHuomiot
GET/servers/{server}/network/allocationsPortit
POST/servers/{server}/network/allocationsMää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}/databasesinclude=passwordMyös on_node, remote_ips, remote_anywhere, remote_address
GET/servers/{server}/databases/service HWstatus (none provisioning ready unreachable failed), local_address, public_address, other_servers
POST/servers/{server}/databasesdatabase, remote_ips[], remote_anywhere202 ja palvelun tila, kun ensimmäinen tietokanta käynnistyy (katso alta)
POST/servers/{server}/databases/{id}/rotate-password
POST/servers/{server}/databases/{id}/remote HWremote_ips[] (julkiset IPv4-osoitteet, enintään 10), remote_anywhereKorvaa listan; [] sulkee pääsyn ulkopuolelta
GET/servers/{server}/databases/{id}/export HW.sql.gz-lataus. 6 minuutissa
POST/servers/{server}/databases/{id}/import HWfile (multipart, .sql tai .sql.gz, enintään 50 Mt)204. 6 minuutissa
DELETE/servers/{server}/databases/{id}
GET/servers/{server}/usersAliakäyttäjät
POST/servers/{server}/userspublic_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#

MetodiPolkuSisältö / kyselyHuomiot
GET PUT/servers/{server}/hostwolf/notificationswebhook_url, clear_webhook, eventsDiscord-ilmoitukset: käynnistyi, pysähtyi, kaatui, varmuuskopiot, pelaajat
POST/servers/{server}/hostwolf/notifications/test
GET/servers/{server}/hostwolf/domainOma verkkotunnus ja sen tarvitsemat tietueet
POST/servers/{server}/hostwolf/domain/checkhostnameTarkistaa nykyisen DNS:n
PUT DELETE/servers/{server}/hostwolf/domainhostname
GET/servers/{server}/hostwolf/networkVelocity/BungeeCord-välityspalvelimella: sen merkinnät ja palvelimet, jotka voit liittää
POST/servers/{server}/hostwolf/network/linkservers[]: {id, key}, lobby, restart
POST/servers/{server}/hostwolf/network/unlinkid, restart
POST/servers/{server}/hostwolf/network/fabric-proxyidAsentaa 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.

MetodiPolkuHuomiot
GET/store/catalogPelit, pakettikoot, alueet ja reaaliaikaiset alueittaiset hinnat
GET/store/ordersOdottavat, aktiiviset ja äskettäin epäonnistuneet tilaukset
GET/store/billingKaikki tilaukset hintoineen, uusimisineen, perumisineen ja palautuksineen

Konsoli#

Reaaliaikainen konsoli on websocket nodessa, jossa palvelimesi toimii.

  1. GET /servers/{server}/websocket palauttaa {"data": {"token": "...", "socket": "wss://..."}}.
  2. Yhdistä socket-osoitteeseen otsakkeella Origin: https://panel.hostwolf.net.
  3. Lähetä {"event": "auth", "args": ["<token>"]} ja odota vastausta auth success.
  4. Lähetä {"event": "send logs", "args": [null]}, niin saat viimeisimmän tulosteen uudelleen.

Viestit ovat JSONia muodossa {"event": "...", "args": [...]}.

Tapahtumat, joita vastaanotat:

  • console output
  • status
  • stats (JSON-merkkijono)
  • install output
  • daemon message ja daemon error
  • token expiring: hae uusi token ja lähetä auth uudelleen.
  • token expired

Tapahtumat, joita voit lähettää:

  • send command ja komennon teksti.
  • set state ja start, stop, restart tai kill.
  • send logs
  • send 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.

Jumissa, tai puuttuuko päätepiste? Kerro meille osoitteessa game.hostwolf.net/contact tai support@hostwolf.net.