EntwicklerREST API

REST API

Die Hostwolf Apps API ist einfaches HTTPS und JSON. Alles, was das SDK und der MCP-Server tun, läuft über diese Endpunkte. Die OpenAPI-3.1-Beschreibung enthält jedes Feld, für Codegeneratoren und Tools wie Postman.

Basis-URL#

https://console.app.hostwolf.net/api/v1

Alle Pfade unten sind relativ dazu. GET /health und GET /version brauchen kein Token.

Authentifizierung#

Sende ein API-Token im Header Authorization und frag nach JSON:

curl https://console.app.hostwolf.net/api/v1/team \
  -H "Authorization: Bearer 12|your_token" \
  -H "Accept: application/json"

Ein Token handelt für das Team, in dem es erstellt wurde, mit den Berechtigungen, die du angehakt hast: Lesen, Sensible Daten lesen, Schreiben, Deploy oder Root. Anfrageinhalte sind JSON (Content-Type: application/json). Ressourcen werden über ihre uuid angesprochen.

Fehler#

Fehler sind immer JSON mit einer message, und Validierungsfehler listen die Felder auf:

{"message": "Validation failed.", "errors": {"ports_exposes": ["The ports exposes field is required."]}}
StatusBedeutung
400Fehlerhafte Anfrage, oder die Aktion ist gerade nicht möglich (z. B. Logs einer gestoppten App).
401Token fehlt, ist falsch, abgelaufen oder widerrufen.
403Dem Token fehlt eine Berechtigung, deine Rolle im Team reicht nicht, oder der Endpunkt ist bei Hostwolf nicht verfügbar (die Antwort enthält einen docs-Link).
404Nicht gefunden, oder es gehört zu einem anderen Team.
409Konflikt: Der Schlüssel existiert bereits, oder die Ressource ist noch nicht bereit.
422Validierungsfehler; siehe errors.
429Rate-Limit erreicht; warte Retry-After Sekunden.
503Ein Hostwolf-Dienst ist kurz nicht erreichbar. Es wurde nichts geändert; versuch es noch einmal.

Sende Accept-Language: de, fr, es oder fi, um Meldungen in dieser Sprache zu bekommen.

Kostenpflichtige Änderungen#

Aufrufe, die die Rechnung erhöhen, brauchen "confirm": true im Body: ein Storage-Volume hinzufügen oder vergrößern, seine Backups einschalten oder Auto-Grow setzen, ein Volume anhängen, das nicht berechnet wird, in ein neues Volume wiederherstellen und einen Datenbanktarif upgraden. Ohne das ändert sich nichts, und die Antwort ist ein 422 mit dem Preis:

{"message": "A 50 GB volume costs $6.19/month, billed hourly, plus its backups per GB stored. Send \"confirm\": true to go ahead.",
 "confirm_required": true, "quote": {"size_gb": 50, "monthly_price": 6.19, "hourly_price": 0.0085, "currency": "USD"}}

Zeig den Preis an und sende dann denselben Aufruf mit "confirm": true. Das SDK wirft einen HostwolfAppsError mit Code confirm_required und dem Preis in error.quote; die MCP-Tools geben die Meldung an den Assistenten weiter. Auch das Wiederherstellen eines Backups über die Dateien eines Volumes braucht confirm.

Manche Upstream-Endpunkte gelten bei Hostwolf nicht, weil Hostwolf die Server für dich betreibt: Server hinzufügen, prüfen, importieren oder löschen, Tokens von Cloud-Anbietern und Instanz-Einstellungen. Sie antworten mit 403, einer Meldung und einem docs-Link und sind unten nicht aufgeführt. Server kaufst und kündigst du in der Konsole unter Server & Abrechnung.

Rate-Limits#

  • 200 Anfragen pro Minute und Nutzer. Jede Antwort enthält X-RateLimit-Limit und X-RateLimit-Remaining.
  • Aktionen für verwaltete Datenbanken: 10 pro Minute. Änderungen an Storage-Volumes: 10 pro Minute, gemeinsam mit der Konsole.
  • Über dem Limit bekommst du 429 mit Retry-After (Sekunden). Das SDK wartet kurze Limits für dich ab.
  • Der gehostete MCP-Server erlaubt 300 Anfragen pro Minute pro Adresse und 180 pro Token.

Paginierung#

Die meisten Listen liefern alles auf einmal. Die Ausnahmen:

  • GET /deployments/applications/{uuid} nimmt skip und take (Standard 10) und liefert {count, deployments}.
  • GET /audit-events nimmt page und per_page und liefert {data, current_page, last_page, per_page, total}.

Das SDK verpackt beide in asynchrone Iteratoren (allForApplication, allAuditEvents).

Endpunkte#

HW markiert Endpunkte, die es nur bei Hostwolf Apps gibt. Tippe ins Feld, um zu filtern, oder drück /.

278 Endpunkte

Projekte#

MethodePfadInhalt / QueryWas es tut
GET/projectsProjekte auflisten.
POST/projects+2 optionalProjekt erstellen.
GET/projects/{uuid}Projekt per UUID abrufen.
PATCH/projects/{uuid}+2 optionalProjekt ändern.
DELETE/projects/{uuid}Projekt per UUID löschen.
GET/projects/{uuid}/environmentsAlle Umgebungen eines Projekts auflisten.
POST/projects/{uuid}/environments+1 optionalUmgebung im Projekt erstellen.
PATCH/projects/{uuid}/environments/{environment_name_or_uuid}+2 optionalUmgebung per Name oder UUID innerhalb eines Projekts ändern.
DELETE/projects/{uuid}/environments/{environment_name_or_uuid}Umgebung per Name oder UUID löschen.
GET/projects/{uuid}/{environment_name_or_uuid}Umgebung per Name oder UUID abrufen.

Anwendungen#

MethodePfadInhalt / QueryWas es tut
GET/applications?tagAlle Anwendungen auflisten.
POST/applications/dockerfileproject_uuid, server_uuid, dockerfile, +80 optionalNeue Anwendung aus einem einfachen Dockerfile erstellen (ohne git).
POST/applications/dockerimageproject_uuid, server_uuid, docker_registry_image_name, +77 optionalNeue Anwendung aus einem fertigen Docker-Image erstellen (ohne git).
POST/applications/private-deploy-keyproject_uuid, server_uuid, private_key_uuid, git_repository, git_branch, build_pack, +96 optionalNeue Anwendung aus einem privaten Repository über einen Deploy-Key erstellen.
POST/applications/private-github-appproject_uuid, server_uuid, github_app_uuid, git_repository, git_branch, build_pack, +96 optionalNeue Anwendung aus einem privaten Repository über eine GitHub App erstellen.
POST/applications/publicproject_uuid, server_uuid, git_repository, git_branch, build_pack, +96 optionalNeue Anwendung aus einem öffentlichen git-Repository erstellen.
GET/applications/{uuid}Anwendung per UUID abrufen.
PATCH/applications/{uuid}+95 optionalAnwendung per UUID ändern.
DELETE/applications/{uuid}?delete_configurations, ?delete_volumes, ?docker_cleanup, ?delete_connected_networksAnwendung per UUID löschen.
POST/applications/{uuid}/clonedestination_uuid, +2 optionalEine Anwendung auf ein Ziel des authentifizierten Teams klonen.
GET/applications/{uuid}/destinationsPrimäre und zusätzliche Ziele einer eigenständigen Anwendung auflisten.
POST/applications/{uuid}/destinationsdestination_uuidEin zusätzliches eigenständiges Docker-Ziel an eine Anwendung anhängen.
DELETE/applications/{uuid}/destinations/{destination_uuid}Ein zusätzliches Ziel von einer Anwendung lösen.
GET/applications/{uuid}/envsAlle Envs per Anwendungs-UUID auflisten.
POST/applications/{uuid}/envs+6 optionalEnv per Anwendungs-UUID erstellen.
PATCH/applications/{uuid}/envskey, value, +4 optionalEnv per Anwendungs-UUID ändern.
PATCH/applications/{uuid}/envs/bulkdataMehrere Envs per Anwendungs-UUID ändern.
DELETE/applications/{uuid}/envs/{env_uuid}Env per UUID löschen.
GET/applications/{uuid}/logs?lines, ?show_timestamps, ?service_nameAnwendungs-Logs per UUID abrufen.
GET/applications/{uuid}/metrics?minutesSentinel-Verlauf lesen. HW
POST/applications/{uuid}/migratedestination_uuid, +1 optionalEine Anwendung auf ein anderes Ziel / einen anderen Server des authentifizierten Teams migrieren.
POST/applications/{uuid}/moveenvironment_uuidAnwendung in ein anderes Projekt / eine andere Umgebung verschieben.
GET/applications/{uuid}/previewsDie Vorschau-Deployments einer Anwendung auflisten, neuester Pull Request zuerst.
POST/applications/{uuid}/previewspull_request_id, +6 optionalEin Vorschau-Deployment für einen Pull Request öffnen und sein Deployment einreihen.
GET/applications/{uuid}/previews/{pull_request_id}Ein Vorschau-Deployment per Pull-Request-ID abrufen.
PATCH/applications/{uuid}/previews/{pull_request_id}+3 optionalDomains eines Vorschau-Deployments ersetzen.
DELETE/applications/{uuid}/previews/{pull_request_id}Ein Vorschau-Deployment für einen Pull Request löschen.
GET/applications/{uuid}/previews/{pull_request_id}/logs?lines, ?show_timestamps, ?service_nameLaufzeit-Logs des Containers eines Vorschau-Deployments per Anwendungs-UUID und Pull-Request-ID abrufen.
POST/applications/{uuid}/restartAnwendung neu starten.
POST/applications/{uuid}/rollbackcommitEin Rollback-Deployment einer Anwendung auf einen früheren Image-Commit/-Tag einreihen.
GET/applications/{uuid}/rollback-imagesVerfügbare Docker-Images für das Rollback einer Anwendung auflisten.
POST/applications/{uuid}/start?force, ?instant_deployAnwendung starten.
POST/applications/{uuid}/stop?docker_cleanupAnwendung stoppen.
GET/applications/{uuid}/storagesAlle persistenten Speicher und Dateispeicher per Anwendungs-UUID auflisten.
POST/applications/{uuid}/storagestype, mount_path, +4 optionalEinen persistenten Speicher oder Dateispeicher für eine Anwendung erstellen.
PATCH/applications/{uuid}/storagestype, +6 optionalEinen persistenten Speicher oder Dateispeicher per Anwendungs-UUID ändern.
DELETE/applications/{uuid}/storages/{storage_uuid}Einen persistenten Speicher oder Dateispeicher per Anwendungs-UUID löschen.
PUT/applications/{uuid}/storages/{storage_uuid}/backupsfrequency, +12 optionalDen Backup-Zeitplan für ein persistentes Volume oder einen Verzeichnisspeicher einer Anwendung erstellen oder ersetzen.
DELETE/applications/{uuid}/storages/{storage_uuid}/backupsDen Backup-Zeitplan und seine lokalen und S3-Archive für einen Anwendungsspeicher löschen.
POST/applications/{uuid}/storages/{storage_uuid}/backups/runEin sofortiges Volume-Backup für einen Anwendungsspeicher mit Zeitplan einreihen.
GET/applications/{uuid}/tagsTags einer Anwendung per UUID auflisten.
POST/applications/{uuid}/tags+2 optionalTag(s) zu einer Anwendung per UUID hinzufügen.
DELETE/applications/{uuid}/tags/{tag_uuid}Ein Tag von einer Anwendung per UUID entfernen.

Deployments#

MethodePfadInhalt / QueryWas es tut
POST/deploy?tag, ?uuid, ?force, ?pr, …Per Tag oder UUID deployen, über Query-Parameter oder einen JSON-Inhalt.
GET/deploymentsLaufende Deployments auflisten
GET/deployments/applications/{uuid}?skip, ?takeDeployments einer Anwendung über die App-uuid auflisten
GET/deployments/{uuid}Deployment per UUID abrufen.
POST/deployments/{uuid}/cancelEin Deployment per UUID abbrechen.

Gekaufte Server HW#

Server, die dein Team gekauft hat. Kaufen und Kündigen passiert in der Konsole, diese sind also nur lesbar.

MethodePfadInhalt / QueryWas es tut
GET/hostwolf/regions?sizeDie Städte, in denen Hostwolf Server verkauft, mit dem Monatspreis jeder Servergröße (derselbe Katalog wie auf der Preisseite).
POST/servers/{uuid}/resizesize, confirmÄndere die Größe eines gekauften App-Servers oder VPS direkt; Standort und IP bleiben erhalten.
GET/hostwolf/serversApp-Server und VPS, die dein Team gekauft hat, mit Größe, Stadt, Status und Monatspreis.
GET/hostwolf/servers/{uuid}Ein gekaufter App-Server oder VPS per uuid.
GET/hostwolf/servers/{uuid}/traffic?monthAusgehender (Egress-)Traffic eines gekauften Servers in einem Kalendermonat (UTC) und was er bisher kostet: 1 TB pro Monat ist inklusive, danach kostet jedes volle GB price_per_gb.
GET/hostwolf/traffic?monthAusgehender Traffic aller Server deines Teams in einem Kalendermonat (UTC), einschließlich gelöschter Server, mit der bisherigen Gesamtrechnung.

Verwaltete Datenbanken HW#

PostgreSQL, MariaDB und Redis auf Hostwolf-Datenbankservern. Siehe die Anleitung zu Datenbanken.

MethodePfadInhalt / QueryWas es tut
GET/managed-databasesDie verwalteten Datenbanken deines Teams mit ihrem aktuellen Status.
POST/managed-databasesengine, plan, region, +1 optionalErstellt eine verwaltete Datenbank.
GET/managed-databases/catalogEngines, Tarife mit ihren Limits und Regionen mit dem Monats- und Stundenpreis jedes Tarifs.
GET/managed-databases/{uuid}Eine verwaltete Datenbank abrufen
PATCH/managed-databases/{uuid}eviction_policyRedis: die Eviction-Policy ändern (sofort wirksam, ohne Neustart).
DELETE/managed-databases/{uuid}Löscht die Datenbank und beendet ihre Abrechnung.
POST/managed-databases/{uuid}/attachapplication_uuid, +2 optionalSpeichert die gepoolte Verbindungs-URL in einer Anwendung als DATABASE_URL und die direkte als DATABASE_DIRECT_URL (Redis: nur REDIS_URL): nur zur Laufzeit, verschlüsselt, einmal angezeigt…
POST/managed-databases/{uuid}/backupsStartet jetzt ein zusätzliches Backup.
GET/managed-databases/{uuid}/connectionDie Verbindungs-URLs mit Passwort, TLS erforderlich.
POST/managed-databases/{uuid}/upgradeplan, +1 optionalVerschiebt die Datenbank auf einen größeren Tarif aus ihrer upgrades-Liste.

Autoscaling HW#

Autoscaling pro App. Siehe die Anleitung zur Skalierung.

MethodePfadInhalt / QueryWas es tut
GET/applications/{uuid}/autoscalingDie Autoscaling-Richtlinie der Anwendung, ob es sich einschalten lässt (und warum nicht) und der Live-Status: Kopien, CPU und die Autoscaling-Ausgaben dieses Monats.
PUT/applications/{uuid}/autoscaling+10 optionalSchaltet Autoscaling ein oder aus und ändert seine Einstellungen.

Server#

Deine App-Server. Server hinzufügen, prüfen und löschen übernimmt Hostwolf; diese Aufrufe antworten mit 403 und einem docs-Link.

MethodePfadInhalt / QueryWas es tut
GET/serversAlle Server auflisten.
GET/servers/{uuid}Server per UUID abrufen.
PATCH/servers/{uuid}+17 optionalServer ändern.
GET/servers/{uuid}/cloudflare-tunnelCloudflare-Tunnel-Einstellungen eines Servers des authentifizierten Teams abrufen.
PATCH/servers/{uuid}/cloudflare-tunnel+1 optionalGespeicherte Cloudflare-Tunnel-Einstellungen eines Servers ändern.
POST/servers/{uuid}/cloudflare-tunnel/disableCloudflare Tunnel als deaktiviert markieren und ip_previous wiederherstellen, falls vorhanden.
POST/servers/{uuid}/cloudflare-tunnel/enableCloudflare Tunnel für einen Server manuell als aktiviert markieren (entspricht dem manuellen Aktivieren in der Oberfläche).
GET/servers/{uuid}/docker-cleanupDocker-Bereinigungseinstellungen eines Servers des authentifizierten Teams abrufen.
PATCH/servers/{uuid}/docker-cleanup+6 optionalDocker-Bereinigungseinstellungen eines Servers des authentifizierten Teams ändern.
GET/servers/{uuid}/docker-cleanup/executionsLetzte Ausführungslogs der Docker-Bereinigung eines Servers des authentifizierten Teams auflisten.
POST/servers/{uuid}/docker-cleanup/run+2 optionalEinen manuellen Docker-Bereinigungsjob für einen Server des authentifizierten Teams anstoßen.
GET/servers/{uuid}/domainsDomains pro Server abrufen.
GET/servers/{uuid}/log-drainsLog-Drain-Einstellungen eines Servers des authentifizierten Teams abrufen.
PATCH/servers/{uuid}/log-drains+9 optionalLog-Drain-Einstellungen (New Relic, Axiom oder eigene) eines Servers des authentifizierten Teams ändern.
GET/servers/{uuid}/metrics?minutesSentinel-Verlauf lesen. HW
GET/servers/{uuid}/proxyProxy-Einstellungen eines Servers des authentifizierten Teams abrufen.
PATCH/servers/{uuid}/proxy+4 optionalProxy-Weiterleitungseinstellungen, die Erzeugung exakter Labels und optional den Proxy-Typ für einen Server des Teams ändern.
PUT/servers/{uuid}/proxy/configurationconfigurationDie rohe Docker-Compose-Konfiguration des Proxys für einen Server des Teams speichern.
POST/servers/{uuid}/proxy/restartEinen Proxy-Neustart für einen Server des Teams einreihen.
GET/servers/{uuid}/registriesDie Docker-Registries auflisten, bei denen ein Server angemeldet ist, und die Registries, aus denen seine Ressourcen ziehen oder in die sie pushen.
POST/servers/{uuid}/registriesregistry, username, passworddocker login auf dem Server ausführen und dabei in die Docker-Konfiguration schreiben, die Deployments nutzen.
DELETE/servers/{uuid}/registries/{registry}docker logout auf dem Server für eine Registry ausführen.
POST/servers/{uuid}/registries/{registry}/checkPrüfen, ob die gespeicherte Anmeldung des Servers bei einer Registry noch funktioniert.
GET/servers/{uuid}/resourcesRessourcen pro Server abrufen.
GET/servers/{uuid}/sentinelSentinel-Einstellungen eines Servers des authentifizierten Teams abrufen.
PATCH/servers/{uuid}/sentinel+14 optionalSentinel-Einstellungen eines Servers des authentifizierten Teams ändern.

Gemeinsame Variablen#

MethodePfadInhalt / QueryWas es tut
GET/projects/{uuid}/environments/{environment_name_or_uuid}/envsGemeinsame Umgebungsvariablen einer Projektumgebung auflisten (type=environment).
POST/projects/{uuid}/environments/{environment_name_or_uuid}/envsEine gemeinsame Umgebungsvariable für eine Projektumgebung erstellen (type=environment).
PATCH/projects/{uuid}/environments/{environment_name_or_uuid}/envs/{env_id}Eine gemeinsame Umgebungs-Umgebungsvariable per ID ändern.
DELETE/projects/{uuid}/environments/{environment_name_or_uuid}/envs/{env_id}Eine gemeinsame Umgebungs-Umgebungsvariable per ID löschen.
GET/projects/{uuid}/envsGemeinsame Umgebungsvariablen eines Projekts auflisten (type=project).
POST/projects/{uuid}/envsEine gemeinsame Umgebungsvariable für ein Projekt erstellen (type=project).
PATCH/projects/{uuid}/envs/{env_id}Eine gemeinsame Projekt-Umgebungsvariable per ID ändern.
DELETE/projects/{uuid}/envs/{env_id}Eine gemeinsame Projekt-Umgebungsvariable per ID löschen.
GET/servers/{uuid}/envsGemeinsame Umgebungsvariablen eines Servers auflisten (type=server).
POST/servers/{uuid}/envsEine gemeinsame Umgebungsvariable für einen Server erstellen (type=server).
PATCH/servers/{uuid}/envs/{env_id}Eine gemeinsame Server-Umgebungsvariable per ID ändern.
DELETE/servers/{uuid}/envs/{env_id}Eine gemeinsame Server-Umgebungsvariable per ID löschen.
GET/team/envsGemeinsame Umgebungsvariablen des aktuellen Teams auflisten (type=team).
POST/team/envskey, +5 optionalEine gemeinsame Umgebungsvariable für das aktuelle Team erstellen (type=team).
PATCH/team/envs/{env_id}Eine gemeinsame Team-Umgebungsvariable per ID ändern.
DELETE/team/envs/{env_id}Eine gemeinsame Team-Umgebungsvariable per ID löschen.

Teams#

MethodePfadInhalt / QueryWas es tut
GET/teamDas Team abrufen, an das das API-Token gebunden ist.
PATCH/teamis_build_server_fallback_enabledEinstellungen des Teams ändern, an das das API-Token gebunden ist.
GET/team/membersMitglieder des Teams abrufen, an das das API-Token gebunden ist.
GET/teamsAlle Teams abrufen.
GET/teams/{id}Team per TeamId abrufen.
GET/teams/{id}/membersMitglieder per TeamId abrufen.

Audit-Log#

MethodePfadInhalt / QueryWas es tut
GET/audit-events?per_page, ?page, ?search, ?action, …Audit-Ereignisse des Teams auflisten.

Ziele#

MethodePfadInhalt / QueryWas es tut
GET/destinationsAlle Docker-Netzwerk-Ziele des authentifizierten Teams auflisten.
GET/destinations/{uuid}Ein Docker-Netzwerk-Ziel per UUID abrufen.
PATCH/destinations/{uuid}+1 optionalDen Namen eines Docker-Netzwerk-Ziels ändern.
DELETE/destinations/{uuid}Ein ungenutztes Docker-Netzwerk-Ziel löschen.
GET/servers/{server_uuid}/destinationsDocker-Netzwerk-Ziele auflisten, die an einen Server des authentifizierten Teams angehängt sind.
POST/servers/{server_uuid}/destinationsnetwork, +2 optionalEin Docker-Netzwerk-Ziel auf einem Server des authentifizierten Teams erstellen.

Geplante Aufgaben#

MethodePfadInhalt / QueryWas es tut
GET/applications/{uuid}/scheduled-tasksAlle geplanten Aufgaben einer Anwendung auflisten.
POST/applications/{uuid}/scheduled-tasksname, command, frequency, +3 optionalEine neue geplante Aufgabe für eine Anwendung erstellen.
PATCH/applications/{uuid}/scheduled-tasks/{task_uuid}+6 optionalEine geplante Aufgabe einer Anwendung ändern.
DELETE/applications/{uuid}/scheduled-tasks/{task_uuid}Eine geplante Aufgabe einer Anwendung löschen.
POST/applications/{uuid}/scheduled-tasks/{task_uuid}/executeEine sofortige Ausführung einer geplanten Aufgabe einer Anwendung einreihen.
GET/applications/{uuid}/scheduled-tasks/{task_uuid}/executionsAlle Ausführungen einer geplanten Aufgabe einer Anwendung auflisten.
GET/services/{uuid}/scheduled-tasksAlle geplanten Aufgaben eines Service auflisten.
POST/services/{uuid}/scheduled-tasksname, command, frequency, +3 optionalEine neue geplante Aufgabe für einen Service erstellen.
PATCH/services/{uuid}/scheduled-tasks/{task_uuid}+6 optionalEine geplante Aufgabe eines Service ändern.
DELETE/services/{uuid}/scheduled-tasks/{task_uuid}Eine geplante Aufgabe eines Service löschen.
POST/services/{uuid}/scheduled-tasks/{task_uuid}/executeEine sofortige Ausführung einer geplanten Aufgabe eines Service einreihen.
GET/services/{uuid}/scheduled-tasks/{task_uuid}/executionsAlle Ausführungen einer geplanten Aufgabe eines Service auflisten.

Tags#

MethodePfadInhalt / QueryWas es tut
GET/tagsAlle Tags des aktuellen Teams auflisten.
POST/tagsnameEin Tag für das aktuelle Team erstellen.
PATCH/tags/{uuid}nameEinen Tag-Namen des aktuellen Teams ändern.
DELETE/tags/{uuid}Ein Tag des aktuellen Teams löschen.

Ressourcen#

MethodePfadInhalt / QueryWas es tut
GET/resourcesAlle Ressourcen abrufen.

Secret-Manager#

MethodePfadInhalt / QueryWas es tut
PATCH/applications/{uuid}/secret-managerintegration_token_uuid, +1 optionalDie Secret-Manager-Quelle einer Anwendung konfigurieren.
POST/security/integration-tokensprovider, name, token, +1 optionalEin Integrations-Token für Doppler, Infisical oder Vault erstellen und prüfen.

Cloud-init-Skripte#

MethodePfadInhalt / QueryWas es tut
GET/cloud-init-scriptsAlle Cloud-init-Skripte des authentifizierten Teams auflisten.
POST/cloud-init-scriptsname, scriptEin neues Cloud-init-Skript für das authentifizierte Team erstellen.
GET/cloud-init-scripts/{uuid}Ein Cloud-init-Skript per UUID abrufen.
PATCH/cloud-init-scripts/{uuid}+2 optionalEin Cloud-init-Skript per UUID ändern.
DELETE/cloud-init-scripts/{uuid}Ein Cloud-init-Skript per UUID löschen.

Datenbanken (alt)#

Datenbanken, die auf App-Servern angelegt wurden, bevor es verwaltete Datenbanken gab. Neue Datenbanken sind verwaltete Datenbanken.

MethodePfadInhalt / QueryWas es tut
GET/databasesAlle Datenbanken auflisten.
GET/databases/{uuid}Datenbank per UUID abrufen.
PATCH/databases/{uuid}+46 optionalDatenbank per UUID ändern.
DELETE/databases/{uuid}?delete_configurations, ?delete_volumes, ?docker_cleanup, ?delete_connected_networksDatenbank per UUID löschen.
GET/databases/{uuid}/backupsBackup-Details per Datenbank-UUID abrufen.
POST/databases/{uuid}/backupsfrequency, +14 optionalEine neue geplante Backup-Konfiguration für eine Datenbank erstellen
PATCH/databases/{uuid}/backups/{scheduled_backup_uuid}+15 optionalEine bestimmte Backup-Konfiguration einer Datenbank ändern, identifiziert über ihre UUID und die Backup-ID
DELETE/databases/{uuid}/backups/{scheduled_backup_uuid}?delete_s3Löscht eine Backup-Konfiguration und alle ihre Ausführungen.
GET/databases/{uuid}/backups/{scheduled_backup_uuid}/executionsAlle Ausführungen einer bestimmten Backup-Konfiguration abrufen.
DELETE/databases/{uuid}/backups/{scheduled_backup_uuid}/executions/{execution_uuid}?delete_s3Löscht eine bestimmte Backup-Ausführung.
GET/databases/{uuid}/envsAlle Envs per Datenbank-UUID auflisten.
POST/databases/{uuid}/envs+5 optionalEnv per Datenbank-UUID erstellen.
PATCH/databases/{uuid}/envskey, value, +3 optionalEnv per Datenbank-UUID ändern.
PATCH/databases/{uuid}/envs/bulkdataMehrere Envs per Datenbank-UUID ändern.
DELETE/databases/{uuid}/envs/{env_uuid}Env per UUID löschen.
GET/databases/{uuid}/logs?lines, ?show_timestampsDatenbank-Logs per UUID abrufen.
POST/databases/{uuid}/restartDatenbank neu starten.
POST/databases/{uuid}/startDatenbank starten.
POST/databases/{uuid}/stop?docker_cleanupDatenbank stoppen.
GET/databases/{uuid}/storagesAlle persistenten Speicher und Dateispeicher per Datenbank-UUID auflisten.
POST/databases/{uuid}/storagestype, mount_path, +4 optionalEinen persistenten Speicher oder Dateispeicher für eine Datenbank erstellen.
PATCH/databases/{uuid}/storagestype, +6 optionalEinen persistenten Speicher oder Dateispeicher per Datenbank-UUID ändern.
DELETE/databases/{uuid}/storages/{storage_uuid}Einen persistenten Speicher oder Dateispeicher per Datenbank-UUID löschen.
PUT/databases/{uuid}/storages/{storage_uuid}/backupsfrequency, +12 optionalDen Backup-Zeitplan für ein persistentes Volume oder einen Verzeichnisspeicher einer Datenbank erstellen oder ersetzen.
DELETE/databases/{uuid}/storages/{storage_uuid}/backupsDen Backup-Zeitplan und seine lokalen und S3-Archive für einen Datenbankspeicher löschen.
POST/databases/{uuid}/storages/{storage_uuid}/backups/runEin sofortiges Volume-Backup für einen Datenbankspeicher mit Zeitplan einreihen.
GET/databases/{uuid}/tagsTags einer Datenbank per UUID auflisten.
POST/databases/{uuid}/tags+2 optionalTag(s) zu einer Datenbank per UUID hinzufügen.
DELETE/databases/{uuid}/tags/{tag_uuid}Ein Tag von einer Datenbank per UUID entfernen.

GitHub Apps#

MethodePfadInhalt / QueryWas es tut
GET/github-appsAlle GitHub Apps auflisten.
POST/github-appsname, html_url, app_id, installation_id, client_id, client_secret, private_key_uuid, +6 optionalEine neue GitHub App erstellen.
PATCH/github-apps/{github_app_id}+13 optionalEine bestehende GitHub App ändern.
DELETE/github-apps/{github_app_id}Eine GitHub App löschen, wenn keine Anwendung sie nutzt.
GET/github-apps/{github_app_id}/repositoriesRepositories einer GitHub App von GitHub abrufen.
GET/github-apps/{github_app_id}/repositories/{owner}/{repo}/branchesBranches eines Repositorys von GitHub abrufen.

GitLab Apps#

MethodePfadInhalt / QueryWas es tut
GET/gitlab-appsAlle GitLab Apps des aktuellen Teams auflisten (und systemweite Quellen).
POST/gitlab-appsname, html_url, +9 optionalEine neue GitLab App erstellen (OAuth-Quelle).
PATCH/gitlab-apps/{gitlab_app_id}+11 optionalEine bestehende GitLab App ändern.
DELETE/gitlab-apps/{gitlab_app_id}Eine GitLab App löschen, wenn keine Anwendung sie nutzt.

Storage-Volumes#

MethodePfadInhalt / QueryWas es tut
GET/hostwolf/servers/{uuid}/volumesDie Storage-Volumes eines deiner gekauften Server (einschließlich der Volumes, die du davon abgehängt hast), mit Größe, Belegung, Backups und Preis.
POST/hostwolf/servers/{uuid}/volumessize_gb, +3 optionalFügt einem App-Server oder VPS ein Block-Storage-Volume (10-1000 GB) hinzu, eingehängt unter /mnt/volume- in etwa einer Minute.
GET/hostwolf/servers/{uuid}/volumes/offer?size_gbOb sich diesem Server Volumes hinzufügen lassen, die in seiner Stadt erlaubten Größen und der Preis einer Größe (size_gb), mit oder ohne Backups.
GET/hostwolf/servers/{uuid}/volumes/{volume}Ein Volume abrufen
PATCH/hostwolf/servers/{uuid}/volumes/{volume}+4 optionalVergrößere es (size_gb; Volumes schrumpfen nie), schalte nächtliche Backups ein oder aus oder setze das Auto-Grow-Limit.
DELETE/hostwolf/servers/{uuid}/volumes/{volume}Hängt das Volume aus und löscht es samt Dateien.
POST/hostwolf/servers/{uuid}/volumes/{volume}/backupsStartet jetzt ein Backup, zusätzlich zum nächtlichen.
POST/hostwolf/servers/{uuid}/volumes/{volume}/detachHängt das Volume aus und trennt es vom Server.
POST/hostwolf/servers/{uuid}/volumes/{volume}/restorebackup_id, target, +1 optionalStellt ein Backup in das Volume selbst wieder her (target: same: Dateien, die nach dem Backup geschrieben wurden, werden entfernt, das Volume ist währenddessen nicht erreichbar) oder in ein neues Volume derselben Größe…
GET/hostwolf/volumes?statusAlle Volumes deines Teams: angehängte, von dir abgehängte und die Volumes gelöschter Server, die 7 Tage lang aufbewahrt werden (kept_until).
GET/hostwolf/volumes/{volume}Ein Volume per ID, angehängt oder abgehängt.
DELETE/hostwolf/volumes/{volume}Löscht ein abgehängtes Volume und seine Dateien sofort (statt am Ende der 7 Tage).
POST/hostwolf/volumes/{volume}/attachserver_uuid, +1 optionalHängt ein abgehängtes Volume (eines, das du abgehängt hast, oder eines, das nach dem Löschen seines Servers aufbewahrt wurde) an einen deiner bereiten Server in derselben Stadt an, eingehängt unter demselben Pfad in etwa einer Minute.
GET/hostwolf/volumes/{volume}/backupsBackups, die sich wiederherstellen lassen, neueste zuerst (nächtlich, 7 Tage aufbewahrt).
POST/hostwolf/volumes/{volume}/restorebackup_id, server_uuid, +1 optionalStellt ein Backup eines abgehängten Volumes in ein neues Volume auf einem deiner Server in derselben Stadt wieder her (abgerechnet wie jedes Volume, deshalb ist "confirm": true nötig).

Benachrichtigungen#

MethodePfadInhalt / QueryWas es tut
GET/notifications/discordDiscord-Benachrichtigungseinstellungen des aktuellen Teams abrufen.
PATCH/notifications/discordDiscord-Benachrichtigungseinstellungen des aktuellen Teams ändern.
GET/notifications/emailE-Mail-Benachrichtigungseinstellungen des aktuellen Teams abrufen, inklusive smtp_ehlo_domain, dem Hostnamen, der bei SMTP EHLO gesendet wird.
PATCH/notifications/emailE-Mail-Benachrichtigungseinstellungen des aktuellen Teams ändern.
GET/notifications/pushoverPushover-Benachrichtigungseinstellungen des aktuellen Teams abrufen.
PATCH/notifications/pushoverPushover-Benachrichtigungseinstellungen des aktuellen Teams ändern.
GET/notifications/slackSlack-Benachrichtigungseinstellungen des aktuellen Teams abrufen.
PATCH/notifications/slackSlack-Benachrichtigungseinstellungen des aktuellen Teams ändern.
GET/notifications/telegramTelegram-Benachrichtigungseinstellungen des aktuellen Teams abrufen.
PATCH/notifications/telegramTelegram-Benachrichtigungseinstellungen des aktuellen Teams ändern.
GET/notifications/webhookWebhook-Benachrichtigungseinstellungen des aktuellen Teams abrufen.
PATCH/notifications/webhookWebhook-Benachrichtigungseinstellungen des aktuellen Teams ändern.

S3-Speicher#

MethodePfadInhalt / QueryWas es tut
GET/s3-storagesAlle S3-Speicher des authentifizierten Teams auflisten.
POST/s3-storagesname, endpoint, bucket, region, key, secret, +2 optionalEine neue S3-Speicherkonfiguration für das authentifizierte Team erstellen.
GET/s3-storages/{uuid}S3-Speicher per UUID abrufen.
PATCH/s3-storages/{uuid}+8 optionalS3-Speicher per UUID ändern.
DELETE/s3-storages/{uuid}S3-Speicher per UUID löschen.
POST/s3-storages/{uuid}/validateEine S3-Speicherverbindung mit ListObjectsV2 prüfen.

Deploy-Keys#

MethodePfadInhalt / QueryWas es tut
GET/security/keysAlle privaten Schlüssel auflisten.
POST/security/keysprivate_key, +2 optionalEinen neuen privaten Schlüssel erstellen.
GET/security/keys/{uuid}Schlüssel per UUID abrufen.
PATCH/security/keys/{uuid}private_key, +2 optionalEinen privaten Schlüssel ändern.
DELETE/security/keys/{uuid}Einen privaten Schlüssel löschen.

Service-Container#

MethodePfadInhalt / QueryWas es tut
GET/services/{uuid}/applicationsCompose-Service-Anwendungen (Container) eines einzelnen Service auflisten.
GET/services/{uuid}/applications/{app_uuid}Eine einzelne Compose-Service-Anwendung per Service-UUID und Anwendungs-UUID abrufen.
PATCH/services/{uuid}/applications/{app_uuid}+11 optional, ?force_domain_overrideFelder einer Compose-Service-Anwendung ändern.
GET/services/{uuid}/applications/{app_uuid}/logs?linesDocker-Logs eines einzelnen Compose-Service-Containers abrufen.
POST/services/{uuid}/applications/{app_uuid}/logs?linesDocker-Logs eines einzelnen Compose-Service-Containers abrufen.
POST/services/{uuid}/applications/{app_uuid}/restartStartet einen einzelnen Compose-Service-Container neu.
POST/services/{uuid}/applications/{app_uuid}/start?force, ?latestFührt docker compose up für einen einzelnen Compose-Service aus (no-deps), optional mit Pull des Images und Rebuild.
POST/services/{uuid}/applications/{app_uuid}/stopStoppt einen einzelnen Compose-Service-Container.

Service-Datenbanken#

MethodePfadInhalt / QueryWas es tut
GET/services/{uuid}/databasesCompose-Datenbanken eines einzelnen Service auflisten.
GET/services/{uuid}/databases/{database_uuid}Eine Compose-Datenbank per Service-UUID und Datenbank-UUID abrufen.
PATCH/services/{uuid}/databases/{database_uuid}+8 optionalÄnderbare Felder einer Compose-Service-Datenbank ändern.
POST/services/{uuid}/databases/{database_uuid}/importsBackup der Service-Datenbank importieren
POST/services/{uuid}/databases/{database_uuid}/imports/uploadsImport der Service-Datenbank hochladen
GET/services/{uuid}/databases/{database_uuid}/imports/{activity_id}Importstatus der Service-Datenbank abrufen
GET/services/{uuid}/databases/{database_uuid}/logs?linesDocker-Logs eines Compose-Datenbank-Containers abrufen.
POST/services/{uuid}/databases/{database_uuid}/restartEinen Compose-Datenbank-Container neu starten.
POST/services/{uuid}/databases/{database_uuid}/start?force, ?latestdocker compose up für eine einzelne Compose-Datenbank ausführen.
POST/services/{uuid}/databases/{database_uuid}/stopEinen Compose-Datenbank-Container stoppen.

Services#

One-Click-Services (Docker-Compose-Vorlagen) auf deinen App-Servern.

MethodePfadInhalt / QueryWas es tut
GET/servicesAlle Services auflisten.
POST/servicesserver_uuid, project_uuid, +12 optionalEinen One-Click- / eigenen Service erstellen
GET/services/{uuid}Service per UUID abrufen.
PATCH/services/{uuid}+8 optionalService per UUID ändern.
DELETE/services/{uuid}?delete_configurations, ?delete_volumes, ?docker_cleanup, ?delete_connected_networks, …Service per UUID löschen.
POST/services/{uuid}/clonedestination_uuid, +2 optionalEinen Service auf ein Ziel des authentifizierten Teams klonen.
GET/services/{uuid}/envsAlle Envs per Service-UUID auflisten.
POST/services/{uuid}/envs+6 optionalEnv per Service-UUID erstellen.
PATCH/services/{uuid}/envskey, value, +4 optionalEnv per Service-UUID ändern.
PATCH/services/{uuid}/envs/bulkdataMehrere Envs per Service-UUID ändern.
DELETE/services/{uuid}/envs/{env_uuid}Env per UUID löschen.
GET/services/{uuid}/logs?sub_service_name, ?lines, ?show_timestampsLogs einer bestimmten Unterressource eines Service per Service-UUID abrufen.
POST/services/{uuid}/migratedestination_uuid, +1 optionalEinen Service auf ein anderes Ziel / einen anderen Server des authentifizierten Teams migrieren.
POST/services/{uuid}/moveenvironment_uuidService in ein anderes Projekt / eine andere Umgebung verschieben.
POST/services/{uuid}/restart?latestService neu starten.
POST/services/{uuid}/startService starten.
POST/services/{uuid}/stop?docker_cleanupService stoppen.
GET/services/{uuid}/storagesAlle persistenten Speicher und Dateispeicher per Service-UUID auflisten.
POST/services/{uuid}/storagestype, mount_path, resource_uuid, +4 optionalEinen persistenten Speicher oder Dateispeicher für eine Unterressource eines Service erstellen.
PATCH/services/{uuid}/storagestype, +6 optionalEinen persistenten Speicher oder Dateispeicher per Service-UUID ändern.
DELETE/services/{uuid}/storages/{storage_uuid}Einen persistenten Speicher oder Dateispeicher per Service-UUID löschen.
PUT/services/{uuid}/storages/{storage_uuid}/backupsfrequency, +12 optionalDen Backup-Zeitplan für ein persistentes Volume oder einen Verzeichnisspeicher eines Service erstellen oder ersetzen.
DELETE/services/{uuid}/storages/{storage_uuid}/backupsDen Backup-Zeitplan und seine lokalen und S3-Archive für einen Service-Speicher löschen.
POST/services/{uuid}/storages/{storage_uuid}/backups/runEin sofortiges Volume-Backup für einen Service-Speicher mit Zeitplan einreihen.
GET/services/{uuid}/tagsTags eines Service per UUID auflisten.
POST/services/{uuid}/tags+2 optionalTag(s) zu einem Service per UUID hinzufügen.
DELETE/services/{uuid}/tags/{tag_uuid}Ein Tag von einem Service per UUID entfernen.

Status und Version#

MethodePfadInhalt / QueryWas es tut
GET/healthHealth-Check-Endpunkt.
GET/versionHostwolf-Version abrufen.

Server-Upgrades#

Fordere mit POST /servers/{uuid}/resize und {"size":"m"} ein Angebot für eine größere Größe an. Die UUID gehört zu einem gekauften App-Server oder VPS; bei App-Servern wird auch die Server-UUID akzeptiert. Ein Angebot liefert 200 mit dem neuen Monatspreis, der Preisdifferenz, der geschätzten Ausfallzeit und dem Hinweis zur Festplatte. Am Server ändert sich noch nichts.

Bestätige mit {"size":"m","confirm":true} und einem Idempotency-Key-Header. Speichere eine UUID für diese Bestätigung und verwende sie bei erneuten Versuchen wieder. Die Antwort ist 202 mit der Vorgangs-ID. Eine nicht verfügbare Größe oder ein beschäftigter Server liefert 409; ein Server eines anderen Teams liefert 404.

Der Server behält seinen Standort, seine IP, zusätzliche Volumes und die App-Registrierung. Sein Status bleibt resizing, bis das Upgrade und die Abrechnungsanpassung abgeschlossen sind. Der neue Preis gilt ab dem Abschluss; die anteilige Anpassung erscheint auf der nächsten Rechnung.

Rufe im SDK 0.2.2 servers.resize(uuid, 'm') für ein Angebot auf und übergib dann {confirm:true, idempotencyKey:key} zum Bestätigen. Das MCP-Tool heißt resize_server. Dieser Patch ist noch nicht veröffentlicht.

Kommst du nicht weiter, oder fehlt ein Endpunkt? Sag es uns unter app.hostwolf.net/contact oder [email protected].