API publique

Automatisez vos boîtes : démarrage à distance, état des serveurs, monitoring. Authentification par jeton personnel.

Premier appel en 30 secondes

L'API utilise un jeton personnel créé depuis votre compte.

  1. 1Créez un jeton dans Compte → API →
  2. 2Envoyez-le à chaque appel dans l'en-tête Authorization.
Aucun jeton : créez-en un à l'étape 1
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/me

Limite : 60 requêtes/minute par jeton. Au-delà : 429 avec Retry-After.

GEThttps://ni-boites.fr/v1/mescope: read

Qui suis-je

Identité du propriétaire du jeton et scopes actifs. Idéal pour vérifier qu'un jeton fonctionne.

Réponses

  • 200Propriétaire du jeton
  • 401Jeton manquant ou invalide

Exemple

Requête
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/me
200 OK
{
  "id": "0f1e…",
  "email": "vous@exemple.fr",
  "token": { "name": "monitoring", "scopes": ["read", "power"] }
}
GEThttps://ni-boites.fr/v1/boitesscope: read

Lister vos boîtes

Toutes les boîtes accessibles : possédées et partagées via sous-utilisateurs. Les admins voient l'ensemble du parc.

Réponses

  • 200Liste des boîtes
  • 401Jeton manquant ou invalide
  • 403Jeton sans le scope read

Exemple

Requête
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/boites
200 OK
{
  "data": [
    {
      "id": "a3c9…",
      "name": "Ma boîte",
      "status": "active",
      "specs": { "memoryMb": 8192, "cpu": 200, "diskMb": 20480, "maxServers": 3 }
    }
  ]
}
GEThttps://ni-boites.fr/v1/boites/{id}/serversscope: read

Serveurs d'une boîte

Les serveurs hébergés dans une boîte, avec leurs ressources allouées.

Paramètres

id*pathIdentifiant UUID de la boîte

Réponses

  • 200Liste des serveurs
  • 401Jeton manquant ou invalide
  • 404Boîte inconnue ou inaccessible

Exemple

Requête
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/boites/{id}/servers

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{
  "data": [
    { "id": "7bd2…", "name": "Survie", "game": "minecraft", "status": "running", "memoryMb": 4096, "cpu": 100, "diskMb": 10240 }
  ]
}
GEThttps://ni-boites.fr/v1/servers/{id}scope: read

Détail d'un serveur

Un serveur précis : jeu, état, ressources et boîte d'appartenance.

Paramètres

id*pathIdentifiant UUID du serveur

Réponses

  • 200Le serveur
  • 401Jeton manquant ou invalide
  • 404Serveur inconnu ou inaccessible

Exemple

Requête
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/servers/{id}

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{
  "id": "7bd2…",
  "name": "Survie",
  "game": "minecraft",
  "status": "running",
  "boiteId": "a3c9…",
  "memoryMb": 4096, "cpu": 100, "diskMb": 10240
}
GEThttps://ni-boites.fr/v1/servers/{id}/backupsscope: read

Sauvegardes d'un serveur

Les sauvegardes du serveur : nom, taille, état. La suppression et la restauration restent dans le panel.

Paramètres

id*pathIdentifiant UUID du serveur

Réponses

  • 200Liste des sauvegardes
  • 401Jeton manquant ou invalide
  • 404Serveur inconnu ou inaccessible
  • 502Refus du backend de jeu

Exemple

Requête
curl -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/servers/{id}/backups

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{
  "data": [
    { "id": "b1e4…", "name": "avant-maj", "sizeBytes": 104857600, "successful": true, "completedAt": "2026-09-13T02:00:00+00:00" }
  ]
}
POSThttps://ni-boites.fr/v1/servers/{id}/backupsscope: power

Lancer une sauvegarde

Déclenche une sauvegarde immédiate (cron de nuit, avant une mise à jour…). Corps optionnel : { "name": "avant-maj" }.

Paramètres

id*pathIdentifiant UUID du serveur

Réponses

  • 200Sauvegarde lancée
  • 403Jeton sans le scope power (ou permission console manquante)
  • 422Nom invalide (> 100 caractères)
  • 502Refus du backend de jeu (slot saturé ?)

Exemple

Requête
curl -X POST -H "Authorization: Bearer VOTRE_JETON" -d '{"name":"avant-maj"}' https://ni-boites.fr/v1/servers/{id}/backups

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{ "name": "avant-maj" }
POSThttps://ni-boites.fr/v1/servers/{id}/commandscope: power

Commande console

Envoie une commande au serveur en cours d'exécution (whitelist un joueur, annonce un redémarrage…). Corps : { "command": "…" }, une seule ligne, 500 caractères max.

Paramètres

id*pathIdentifiant UUID du serveur

Réponses

  • 200Commande envoyée
  • 403Jeton sans le scope power (ou permission console manquante)
  • 422Commande invalide (vide, multiligne, > 500 caractères)
  • 502Refus du backend de jeu (serveur arrêté ?)

Exemple

Requête
curl -X POST -H "Authorization: Bearer VOTRE_JETON" -d '{"command":"say Bonjour"}' https://ni-boites.fr/v1/servers/{id}/command

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{ "command": "say Redémarrage dans 1 min" }
POSThttps://ni-boites.fr/v1/servers/{id}/powerscope: power

Alimentation d'un serveur

Démarre, arrête, redémarre ou tue un serveur. Nécessite le scope power et la permission console.

Paramètres

id*pathIdentifiant UUID du serveur
signal*queryAction à envoyer (start | stop | restart | kill)

Réponses

  • 200Signal envoyé
  • 403Jeton sans le scope power (ou permission console manquante)
  • 422Signal invalide
  • 502Refus du backend de jeu

Exemple

Requête
curl -X POST -H "Authorization: Bearer VOTRE_JETON" https://ni-boites.fr/v1/servers/{id}/power?signal=start

Remplacez {id} par l'UUID renvoyé par GET /v1/boites, et VOTRE_JETON par votre jeton.

200 OK
{ "status": "ok", "signal": "start" }

La référence ne charge pas ? Le schéma brut reste disponible : OpenAPI JSON ↗