Stufe 2 · Fortgeschrittener Leitfaden
Deine Instanz kann eine kleine HTTP-API bereitstellen, damit Skripte, Spiel-Engines und prozedurale Werkzeuge ganze Karten lesen und schreiben können, ganz ohne Browser. So lässt du Unity eine Karte erzeugen, sicherst Karten nach Zeitplan oder bearbeitest sie aus deiner eigenen Pipeline. Die Authentifizierung ist ein einzelnes Token, das du kontrollierst.
Öffne Einstellungen, suche Automatisierungs-API und klicke Token erzeugen. Kopiere das Token an einen sicheren Ort: Es ist der Schlüssel zu deinen Karten. Du kannst es jederzeit neu erzeugen (was das alte sofort ungültig macht) oder die API ganz deaktivieren. Wenn du es lieber über die Umgebung setzt, gib API_TOKEN an, dann übernimmt es: Das Feld in den Einstellungen wird schreibgeschützt.
Jede Anfrage trägt dein Token im Authorization-Header. Anfragen ohne gültiges Token werden abgewiesen. Halte das Token geheim: Wer es hat, kann deine Karten lesen und überschreiben.
Authorization: Bearer YOUR_TOKEN
Jeder Endpunkt liegt unter /api/v1 auf deiner eigenen Instanz, wo auch immer du sie betreibst (zum Beispiel http://localhost:8080 lokal, oder die Domain deines Servers). Die Beispiele unten verwenden https://your-instance.example.com als Platzhalter, ersetze ihn durch deine Adresse.
GET /api/v1/maps
Liefert jede Karte der Instanz mit Dateigröße und Zeitpunkt der letzten Änderung.
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-instance.example.com/api/v1/maps
GET /api/v1/maps/{name}
Liefert die vollständige Karte als JSON, in derselben Form wie bei einem Export. Speichere sie in einer Datei, lade sie in Unity oder vergleiche sie in der Versionsverwaltung.
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://your-instance.example.com/api/v1/maps/world -o world.json
PUT /api/v1/maps/{name}
Lädt eine ganze Karte aus dem JSON-Body hoch. Ist die Karte neu, wird sie erstellt (201); existiert sie bereits, wird sie ersetzt (200). Wer diese Karte gerade im Browser bearbeitet, wird auf die neue Version neu geladen. So schreibt ein Generator, Unity oder ein prozedurales Werkzeug eine Karte zurück.
curl -X PUT \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
--data @world.json \
https://your-instance.example.com/api/v1/maps/world
DELETE /api/v1/maps/{name}
Entfernt eine Karte dauerhaft. Es gibt kein Rückgängig, sichere sie also zuerst per Lesezugriff, falls du sie noch einmal brauchen könntest.
curl -X DELETE \
-H "Authorization: Bearer YOUR_TOKEN" \
https://your-instance.example.com/api/v1/maps/world
POST /api/v1/maps/{name}/rename · POST /api/v1/maps/{name}/duplicate
Benenne eine Karte um (sende { "to": "new-name" }) oder kopiere sie unter einem neuen Namen (sende { "to": "..." } oder lass es weg für einen automatischen -copy-Namen).
curl -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
--data '{"to":"old-world"}' \
https://your-instance.example.com/api/v1/maps/world/rename
Lesen und Schreiben verwenden genau dasselbe JSON wie ein Export: ein Objekt mit zones, layers und layerOrder. Siehe das Kartendateiformat für jedes Feld. Ein Schreibvorgang wird akzeptiert, solange er layers enthält (oder ein veraltetes tiles auf oberster Ebene).
Fehler liefern ein kleines JSON-Objekt wie { "error": "..." } mit einem passenden HTTP-Status:
200 / 201: Erfolg (ersetzt / erstellt).400: Der Body ist keine gültige Karte.401: Das Token fehlt oder ist falsch.404: Die Karte existiert nicht, oder die API ist deaktiviert, weil kein Token gesetzt ist.409: Der Zielname einer Umbenennung ist bereits vergeben.Eine minimale C#-Coroutine, die eine Karte mit UnityWebRequest in Unity holt. Der Antworttext ist das vollständige Karten-JSON, bereit zum Parsen und Umwandeln in Terrain.
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
IEnumerator FetchMap(string baseUrl, string token, string name) {
using var req = UnityWebRequest.Get($"{baseUrl}/api/v1/maps/{name}");
req.SetRequestHeader("Authorization", "Bearer " + token);
yield return req.SendWebRequest();
if (req.result == UnityWebRequest.Result.Success)
Debug.Log(req.downloadHandler.text); // the full map JSON
else
Debug.LogError(req.responseCode + " " + req.error);
}
Behandle das Token wie ein Passwort: Halte es aus geteilten Repositorys und öffentlichen Builds heraus und erzeuge es neu, falls es je durchsickert. Da die API nur ganze Karten liest und schreibt, ist das sicherste Automatisierungsmuster: lesen, ändern, zurückschreiben.