L’API Hostwolf Apps, c’est du HTTPS et du JSON, tout simplement. Tout ce que font le SDK et le serveur MCP passe par ces endpoints. La description OpenAPI 3.1 contient tous les champs, pour les générateurs de code et des outils comme Postman.
Un jeton agit pour l’équipe dans laquelle il a été créé, avec les permissions que vous avez cochées : Lecture, Lecture des données sensibles, Écriture, Déploiement ou Root. Les corps de requête sont en JSON (Content-Type: application/json). Les ressources sont désignées par leur uuid.
Les erreurs sont toujours en JSON avec un message, et les erreurs de validation listent les champs :
{"message": "Validation failed.", "errors": {"ports_exposes": ["The ports exposes field is required."]}}
Statut
Signification
400
Requête mal formée, ou action impossible pour le moment (par ex. les journaux d’une app arrêtée).
401
Jeton manquant, incorrect, expiré ou révoqué.
403
Il manque une permission au jeton, votre rôle dans l’équipe est insuffisant, ou l’endpoint n’est pas disponible sur Hostwolf (la réponse contient un lien docs).
404
Introuvable, ou appartient à une autre équipe.
409
Conflit : la clé existe déjà, ou la ressource n’est pas prête.
422
Erreur de validation ; voir errors.
429
Limite de requêtes atteinte ; attendez Retry-After secondes.
503
Un service Hostwolf est brièvement indisponible. Rien n’a été modifié ; réessayez.
Envoyez Accept-Language: de, fr, es ou fi pour recevoir les messages dans cette langue.
Les appels qui augmentent la facture nécessitent "confirm": true dans le corps : ajouter ou agrandir un volume de stockage, activer ses sauvegardes ou régler la croissance automatique, rattacher un volume qui n’est pas facturé, restaurer dans un nouveau volume et passer une base de données à une offre supérieure. Sans cela rien ne change, et la réponse est une 422 avec le prix :
{"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"}}
Affichez le prix, puis renvoyez le même appel avec "confirm": true. Le SDK lève une HostwolfAppsError avec le code confirm_required et le prix dans error.quote ; les outils MCP transmettent le message à l’assistant. Restaurer une sauvegarde par-dessus les fichiers d’un volume nécessite aussi confirm.
Certains endpoints d’origine ne s’appliquent pas sur Hostwolf, car Hostwolf gère les serveurs pour vous : ajout, validation, import ou suppression de serveurs, jetons de fournisseurs cloud et réglages de l’instance. Ils répondent 403 avec un message et un lien docs, et ne sont pas listés ci-dessous. Achetez et résiliez vos serveurs dans la console sous Serveurs et facturation.
Les serveurs achetés par votre équipe. L’achat et la résiliation se font dans la console ; ces endpoints sont donc en lecture seule.
Méthode
Chemin
Corps / paramètres
Ce que fait l’appel
GET
/hostwolf/regions
?size
Les villes où Hostwolf vend des serveurs, avec le prix mensuel de chaque taille de serveur (le même catalogue que la page des tarifs).
POST
/servers/{uuid}/resize
size, confirm
Changez la taille d’un serveur d’applications ou VPS acheté sur place, en conservant son emplacement et son IP.
GET
/hostwolf/servers
Serveurs d’applications et VPS achetés par votre équipe, avec leur taille, leur ville, leur état et leur prix mensuel.
GET
/hostwolf/servers/{uuid}
Un serveur d’applications ou VPS acheté, par son uuid.
GET
/hostwolf/servers/{uuid}/traffic
?month
Le trafic sortant (egress) d’un serveur acheté sur un mois calendaire (UTC), et ce qu’il coûte à ce jour : 1 To par mois est inclus, puis chaque Go entier coûte price_per_gb.
GET
/hostwolf/traffic
?month
Le trafic sortant de tous les serveurs de votre équipe sur un mois calendaire (UTC), serveurs supprimés compris, avec la facture totale à ce jour.
PostgreSQL, MariaDB et Redis sur des serveurs de bases de données Hostwolf. Voir le guide des bases de données.
Méthode
Chemin
Corps / paramètres
Ce que fait l’appel
GET
/managed-databases
Les bases de données managées de votre équipe avec leur état actuel.
POST
/managed-databases
engine, plan, region, +1 facultatif
Crée une base de données managée.
GET
/managed-databases/catalog
Moteurs, offres avec leurs limites, et régions avec le prix mensuel et horaire de chaque offre.
GET
/managed-databases/{uuid}
Obtenir une base de données managée
PATCH
/managed-databases/{uuid}
eviction_policy
Redis : changer la politique d’éviction (appliquée à chaud, sans redémarrage).
DELETE
/managed-databases/{uuid}
Supprime la base de données et arrête sa facturation.
POST
/managed-databases/{uuid}/attach
application_uuid, +2 facultatifs
Enregistre l’URL de connexion poolée sur une application sous DATABASE_URL et l’URL directe sous DATABASE_DIRECT_URL (Redis : REDIS_URL uniquement) : à l’exécution seulement, chiffrée, affichée une fois…
POST
/managed-databases/{uuid}/backups
Lance une sauvegarde supplémentaire maintenant.
GET
/managed-databases/{uuid}/connection
Les URL de connexion avec le mot de passe, TLS obligatoire.
POST
/managed-databases/{uuid}/upgrade
plan, +1 facultatif
Fait passer la base de données à une offre supérieure de sa liste upgrades.
La règle de mise à l’échelle automatique de l’application, si elle peut être activée (et sinon pourquoi), et l’état en direct : copies, CPU et dépenses de mise à l’échelle automatique du mois.
PUT
/applications/{uuid}/autoscaling
+10 facultatifs
Active ou désactive la mise à l’échelle automatique et modifie ses réglages.
Vos serveurs d’applications. L’ajout, la validation et la suppression de serveurs sont gérés par Hostwolf ; ces appels répondent 403 avec un lien docs.
Méthode
Chemin
Corps / paramètres
Ce que fait l’appel
GET
/servers
Lister tous les serveurs.
GET
/servers/{uuid}
Obtenir un serveur par UUID.
PATCH
/servers/{uuid}
+17 facultatifs
Mettre à jour un serveur.
GET
/servers/{uuid}/cloudflare-tunnel
Obtenir les réglages Cloudflare Tunnel d’un serveur appartenant à l’équipe authentifiée.
PATCH
/servers/{uuid}/cloudflare-tunnel
+1 facultatif
Mettre à jour les réglages Cloudflare Tunnel enregistrés d’un serveur.
POST
/servers/{uuid}/cloudflare-tunnel/disable
Marquer Cloudflare Tunnel comme désactivé et restaurer ip_previous si disponible.
POST
/servers/{uuid}/cloudflare-tunnel/enable
Marquer manuellement Cloudflare Tunnel comme activé pour un serveur (équivaut à l’activation manuelle dans l’interface).
GET
/servers/{uuid}/docker-cleanup
Obtenir les réglages de nettoyage Docker d’un serveur appartenant à l’équipe authentifiée.
PATCH
/servers/{uuid}/docker-cleanup
+6 facultatifs
Mettre à jour les réglages de nettoyage Docker d’un serveur appartenant à l’équipe authentifiée.
GET
/servers/{uuid}/docker-cleanup/executions
Lister les journaux récents des nettoyages Docker d’un serveur appartenant à l’équipe authentifiée.
POST
/servers/{uuid}/docker-cleanup/run
+2 facultatifs
Lancer une tâche manuelle de nettoyage Docker pour un serveur appartenant à l’équipe authentifiée.
GET
/servers/{uuid}/domains
Obtenir les domaines par serveur.
GET
/servers/{uuid}/log-drains
Obtenir les réglages de redirection des journaux d’un serveur appartenant à l’équipe authentifiée.
PATCH
/servers/{uuid}/log-drains
+9 facultatifs
Mettre à jour les réglages de redirection des journaux New Relic, Axiom ou personnalisée d’un serveur appartenant à l’équipe authentifiée.
GET
/servers/{uuid}/metrics
?minutes
Lire l’historique Sentinel. HW
GET
/servers/{uuid}/proxy
Obtenir les réglages du proxy d’un serveur appartenant à l’équipe authentifiée.
PATCH
/servers/{uuid}/proxy
+4 facultatifs
Mettre à jour les réglages de redirection du proxy, la génération exacte des labels et, éventuellement, le type de proxy d’un serveur de l’équipe.
PUT
/servers/{uuid}/proxy/configuration
configuration
Enregistrer la configuration Docker Compose brute du proxy pour un serveur de l’équipe.
POST
/servers/{uuid}/proxy/restart
Mettre en file d’attente un redémarrage du proxy pour un serveur de l’équipe.
GET
/servers/{uuid}/registries
Lister les registres Docker auxquels un serveur est connecté et ceux depuis ou vers lesquels ses ressources tirent ou poussent des images.
POST
/servers/{uuid}/registries
registry, username, password
Lancer docker login sur le serveur, en écrivant dans la configuration Docker utilisée par les déploiements.
DELETE
/servers/{uuid}/registries/{registry}
Lancer docker logout sur le serveur pour un registre.
POST
/servers/{uuid}/registries/{registry}/check
Vérifier que l’identifiant enregistré du serveur pour un registre fonctionne toujours.
GET
/servers/{uuid}/resources
Obtenir les ressources par serveur.
GET
/servers/{uuid}/sentinel
Obtenir les réglages Sentinel d’un serveur appartenant à l’équipe authentifiée.
PATCH
/servers/{uuid}/sentinel
+14 facultatifs
Mettre à jour les réglages Sentinel d’un serveur appartenant à l’équipe authentifiée.
Bases de données créées sur des serveurs d’applications avant l’arrivée des bases de données managées. Les nouvelles bases de données sont des bases de données managées.
Les volumes de stockage de l’un de vos serveurs achetés (y compris les volumes que vous en avez détachés), avec taille, utilisation, sauvegardes et prix.
POST
/hostwolf/servers/{uuid}/volumes
size_gb, +3 facultatifs
Ajoute un volume de stockage en bloc (10 à 1000 Go) à un serveur d’applications ou un VPS, monté sur /mnt/volume- en une minute environ.
GET
/hostwolf/servers/{uuid}/volumes/offer
?size_gb
Si des volumes peuvent être ajoutés à ce serveur, les tailles autorisées dans sa ville, et le prix d’une taille (size_gb), avec ou sans sauvegardes.
GET
/hostwolf/servers/{uuid}/volumes/{volume}
Obtenir un volume
PATCH
/hostwolf/servers/{uuid}/volumes/{volume}
+4 facultatifs
L’agrandir (size_gb ; les volumes ne rétrécissent jamais), activer ou désactiver les sauvegardes nocturnes, ou régler la limite de croissance automatique.
DELETE
/hostwolf/servers/{uuid}/volumes/{volume}
Démonte et supprime le volume et ses fichiers.
POST
/hostwolf/servers/{uuid}/volumes/{volume}/backups
Lance une sauvegarde maintenant, en plus de celle de la nuit.
POST
/hostwolf/servers/{uuid}/volumes/{volume}/detach
Démonte le volume et le détache du serveur.
POST
/hostwolf/servers/{uuid}/volumes/{volume}/restore
backup_id, target, +1 facultatif
Restaure une sauvegarde dans le volume lui-même (target: same : les fichiers écrits après la sauvegarde sont supprimés, le volume est indisponible pendant ce temps) ou dans un nouveau volume de même taille…
GET
/hostwolf/volumes
?status
Tous les volumes de votre équipe : ceux qui sont rattachés, ceux que vous avez détachés, et les volumes des serveurs supprimés conservés pendant 7 jours (kept_until).
GET
/hostwolf/volumes/{volume}
Un volume par id, rattaché ou détaché.
DELETE
/hostwolf/volumes/{volume}
Supprime immédiatement un volume détaché et ses fichiers (au lieu d’attendre la fin des 7 jours).
POST
/hostwolf/volumes/{volume}/attach
server_uuid, +1 facultatif
Rattache un volume détaché (que vous avez détaché, ou conservé après la suppression de son serveur) à l’un de vos serveurs prêts dans la même ville, monté au même chemin en une minute environ.
GET
/hostwolf/volumes/{volume}/backups
Les sauvegardes restaurables, de la plus récente à la plus ancienne (chaque nuit, conservées 7 jours).
POST
/hostwolf/volumes/{volume}/restore
backup_id, server_uuid, +1 facultatif
Restaure une sauvegarde d’un volume détaché dans un nouveau volume sur l’un de vos serveurs de la même ville (facturé comme n’importe quel volume, donc "confirm": true est nécessaire).
Demandez un devis pour une taille supérieure avec POST /servers/{uuid}/resize et {"size":"m"}. L’UUID est celui d’un serveur d’applications ou VPS acheté ; les serveurs d’applications acceptent aussi leur UUID de serveur. Un devis renvoie 200 avec le nouveau prix mensuel, la différence de prix, l’interruption estimée et la note sur le disque. Le serveur ne change pas encore.
Confirmez avec {"size":"m","confirm":true} et un en-tête Idempotency-Key. Enregistrez un UUID pour cette confirmation et réutilisez-le lors des nouvelles tentatives. La réponse est 202 avec l’identifiant de l’opération. Une taille indisponible ou un serveur occupé renvoie 409 ; un serveur d’une autre équipe renvoie 404.
Le serveur conserve son emplacement, son IP, ses volumes supplémentaires et son enregistrement d’applications. Son état reste resizing jusqu’à la fin de la mise à niveau et de l’ajustement de facturation. Le nouveau prix s’applique à la fin ; l’ajustement au prorata figure sur la prochaine facture.
Dans le SDK 0.2.2, appelez servers.resize(uuid, 'm') pour un devis, puis passez {confirm:true, idempotencyKey:key} pour confirmer. L’outil MCP est resize_server. Ce correctif n’est pas encore publié.