Introduction

Bienvenue dans la documentation de l'API du panel Gaming de AzurHOSTS v1. Cette API permet de gérer l'ensemble de vos serveurs, y compris les utilisateurs, fichiers, bases de données et bien plus encore.

Format de réponse

Toutes les réponses de l'API sont au format JSON et suivent la spécification JSON:API. Chaque réponse respecte le format suivant :

{
  "object": "list",
  "data": [
    {
      "object": "user",
      "attributes": {
        "id": -999999,
        "external_id": null,
        "uuid": "c4022c6c-9bf1-4a23-bff9-519cceb38335",
        "username": "huhug",
        "email": "[email protected]",
        "first_name": "Hugo",
        "last_name": "Corbin",
        "language": "en",
        "root_admin": true,
        "2fa": true,
        "created_at": "-60 AV JC-06-01T12:00:00+00:00",
        "updated_at": "2025-15-03T12:00:00+00:00"
      }
    }
  ],
  "meta": {
    "pagination": {
      "total": 1,
      "count": 1,
      "per_page": 50,
      "current_page": 1,
      "total_pages": 1,
      "links": {}
    }
  }
}

Authentification

Toutes les requêtes vers l'API doivent inclure un en-tête {header} d'authentification. Pour l'authentification, vous devez fournir une clé API valide dans l'en-tête Authorization. Le lien API pour toutes les routes suivantes est : https://panel.azurhosts.com/api/client/.

Authorization: Bearer ptlc_QIGFZDOuvYVxKS0HY5JqUAKxvpMUL1UJEO2cFEu7VSs

Note : Les clés API sont sensibles et ne doivent jamais être partagées ou exposées publiquement. Nous vous recommandons d'utiliser un .env ou tout type d'environnement sécurisé !

Gestion des erreurs

En cas d'erreur, l'API renvoie un code HTTP approprié ainsi qu'un message d'erreur au format JSON. Exemples de codes d'erreur courants :

  • 400 Bad Request - La requête est mal formée ou contient des paramètres invalides.
  • 401 Unauthorized - Authentification non fournie ou invalide.
  • 403 Forbidden - Vous n'avez pas la permission d'accéder à cette ressource.
  • 404 Not Found - La ressource demandée n'existe pas.
  • 429 Too Many Requests - Vous avez dépassé le nombre de requêtes autorisées.
  • 500 Internal Server Error - Une erreur s'est produite côté serveur.

Exemple de réponse d'erreur :

{
  "errors": [
    {
      "code": "InvalidRequestData",
      "status": "400",
      "detail": "Le champ 'email' est obligatoire."
    }
  ]
}

Documentation

Serveurs

GET
/api/client

Récupère la liste de tous les serveurs auxquels l'utilisateur a accès.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "server",
            "attributes": {
                "server_owner": true,
                "identifier": "4c967a98",
                "uuid": "4c967a98-5a94-4a70-b8e7-3a037f546345",
                "name": "Serveur Test",
                "description": "Description du serveur",
                "node": "Test",
                "sftp_details": {
                    "ip": "127.0.0.1",
                    "port": 2022
                },
                "limits": {
                    "memory": 512,
                    "swap": 0,
                    "disk": 5120,
                    "io": 500,
                    "cpu": 100
                },
                "feature_limits": {
                    "databases": 5,
                    "allocations": 5,
                    "backups": 2
                }
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
GET
/api/client/servers/{server_id}

Récupère les détails d'un serveur spécifique.

Paramètres URL

Paramètre Description
server_id L'identifiant unique du serveur

Compte

GET
/api/client/account

Récupère les informations du compte de l'utilisateur actuel.

Réponse

{
    "object": "user",
    "attributes": {
        "id": 1,
        "admin": true,
        "username": "admin",
        "email": "[email protected]",
        "first_name": "Admin",
        "last_name": "User",
        "language": "en"
    }
}
PUT
/api/client/account

Met à jour les informations du compte de l'utilisateur.

Corps de la requête

{
    "email": "[email protected]",
    "first_name": "Nouveau",
    "last_name": "Nom",
    "language": "fr",
    "password": "nouveau_mot_de_passe"
}
GET
/api/client/account/two-factor

Récupère les informations d'authentification à deux facteurs.

POST
/api/client/account/two-factor

Active l'authentification à deux facteurs pour le compte.

DELETE
/api/client/account/two-factor

Désactive l'authentification à deux facteurs pour le compte.

GET
/api/client/account/api-keys

Récupère toutes les clés API associées au compte.

POST
/api/client/account/api-keys

Crée une nouvelle clé API pour le compte.

Corps de la requête

{
    "description": "Ma nouvelle clé API",
    "allowed_ips": ["127.0.0.1", "192.168.1.1"]
}
DELETE
/api/client/account/api-keys/{identifier}

Supprime une clé API spécifique.

Gestion de serveur

POST
/api/client/servers/{server_id}/power

Envoie une commande de puissance au serveur.

Corps de la requête

{
    "signal": "start|stop|restart|kill"
}
POST
/api/client/servers/{server_id}/command

Envoie une commande à la console du serveur.

Corps de la requête

{
    "command": "say Hello World"
}
GET
/api/client/servers/{server_id}/resources

Récupère les statistiques d'utilisation des ressources du serveur.

Réponse

{
    "object": "stats",
    "attributes": {
        "current_state": "running",
        "is_suspended": false,
        "resources": {
            "memory_bytes": 128000000,
            "cpu_absolute": 2.5,
            "disk_bytes": 256000000,
            "network_rx_bytes": 1500,
            "network_tx_bytes": 500
        }
    }
}
POST
/api/client/servers/{server_id}/settings/rename

Renomme le serveur.

Corps de la requête

{
    "name": "Nouveau nom du serveur",
    "description": "Nouvelle description du serveur"
}
POST
/api/client/servers/{server_id}/settings/reinstall

Réinstalle le serveur.

Sauvegardes

GET
/api/client/servers/{server_id}/backups

Liste toutes les sauvegardes pour un serveur.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "backup",
            "attributes": {
                "uuid": "c91c0f18-3b95-4db2-94b0-ba3c756d3d5c",
                "name": "Sauvegarde automatique",
                "ignored_files": [],
                "sha256_hash": null,
                "bytes": 53267,
                "created_at": "2020-06-01T12:00:00+00:00",
                "completed_at": "2020-06-01T12:00:30+00:00"
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
POST
/api/client/servers/{server_id}/backups

Crée une nouvelle sauvegarde.

Corps de la requête

{
    "name": "Ma sauvegarde",
    "ignored_files": [
        "cache",
        "logs",
        "node_modules"
    ]
}
GET
/api/client/servers/{server_id}/backups/{backup_id}

Récupère les détails d'une sauvegarde spécifique.

GET
/api/client/servers/{server_id}/backups/{backup_id}/download

Récupère un lien de téléchargement pour une sauvegarde.

Réponse

{
    "object": "signed_url",
    "attributes": {
        "url": "https://example.com/download/backup.tar.gz"
    }
}
DELETE
/api/client/servers/{server_id}/backups/{backup_id}

Supprime une sauvegarde.

Fichiers

GET
/api/client/servers/{server_id}/files/list

Liste les fichiers dans un répertoire.

Paramètres de requête

Paramètre Description
directory Le chemin du répertoire à lister (par défaut: /)

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "file",
            "attributes": {
                "name": "server.properties",
                "mode": "100664",
                "size": 1024,
                "is_file": true,
                "is_symlink": false,
                "is_editable": true,
                "mimetype": "text/plain",
                "created_at": "2020-06-01T12:00:00+00:00",
                "modified_at": "2020-06-01T12:30:00+00:00"
            }
        }
    ]
}
GET
/api/client/servers/{server_id}/files/contents

Récupère le contenu d'un fichier spécifique.

Paramètres de requête

Paramètre Description
file Le chemin du fichier à lire
GET
/api/client/servers/{server_id}/files/download

Génère un lien de téléchargement pour un fichier.

Paramètres de requête

Paramètre Description
file Le chemin du fichier à télécharger

Réponse

{
    "object": "signed_url",
    "attributes": {
        "url": "https://example.com/download/file.txt"
    }
}
GET
/api/client/servers/{server_id}/files/upload

Obtient une URL signée pour téléverser des fichiers.

Paramètres de requête

Paramètre Description
directory Le répertoire de destination pour le téléversement
POST
/api/client/servers/{server_id}/files/write

Écrit le contenu dans un fichier.

Paramètres de requête

Paramètre Description
file Le chemin du fichier à écrire

Le contenu brut du fichier doit être envoyé dans le corps de la requête.

POST
/api/client/servers/{server_id}/files/rename

Renomme un fichier ou un répertoire.

Corps de la requête

{
    "root": "/",
    "files": [
        {
            "from": "oldname.txt",
            "to": "newname.txt"
        }
    ]
}
POST
/api/client/servers/{server_id}/files/copy

Copie un fichier ou un répertoire.

Corps de la requête

{
    "location": "file.txt"
}
POST
/api/client/servers/{server_id}/files/delete

Supprime un fichier ou un répertoire.

Corps de la requête

{
    "root": "/",
    "files": [
        "file1.txt",
        "directory1"
    ]
}
POST
/api/client/servers/{server_id}/files/create-folder

Crée un nouveau répertoire.

Corps de la requête

{
    "root": "/",
    "name": "nouveau_dossier"
}
POST
/api/client/servers/{server_id}/files/compress

Compresse des fichiers ou répertoires.

Corps de la requête

{
    "root": "/",
    "files": [
        "file1.txt",
        "directory1"
    ]
}
POST
/api/client/servers/{server_id}/files/decompress

Décompresse une archive.

Corps de la requête

{
    "root": "/",
    "file": "archive.zip"
}

Bases de données

GET
/api/client/servers/{server_id}/databases

Liste toutes les bases de données d'un serveur.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "database",
            "attributes": {
                "id": 1,
                "host": {
                    "address": "127.0.0.1",
                    "port": 3306
                },
                "name": "s1_db1",
                "username": "s1_user1",
                "connections_from": "%",
                "max_connections": 0,
                "created_at": "2020-06-01T12:00:00+00:00"
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
POST
/api/client/servers/{server_id}/databases

Crée une nouvelle base de données.

Corps de la requête

{
    "database": "nom_base_de_donnees",
    "remote": "%" // Hôtes autorisés
}
POST
/api/client/servers/{server_id}/databases/{database_id}/rotate-password

Réinitialise le mot de passe d'une base de données.

DELETE
/api/client/servers/{server_id}/databases/{database_id}

Supprime une base de données.

Tâches programmées

GET
/api/client/servers/{server_id}/schedules

Liste tous les schedules d'un serveur.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "schedule",
            "attributes": {
                "id": 1,
                "name": "Backup quotidien",
                "cron": {
                    "day_of_week": "*",
                    "day_of_month": "*",
                    "hour": "0",
                    "minute": "0",
                    "month": "*"
                },
                "is_active": true,
                "is_processing": false,
                "last_run_at": "2020-06-01T00:00:00+00:00",
                "next_run_at": "2020-06-02T00:00:00+00:00",
                "created_at": "2020-05-01T12:00:00+00:00",
                "updated_at": "2020-06-01T00:00:00+00:00",
                "relationships": {
                    "tasks": {
                        "object": "list",
                        "data": [
                            {
                                "object": "schedule_task",
                                "attributes": {
                                    "id": 1,
                                    "sequence_id": 1,
                                    "action": "backup",
                                    "payload": "backup-name",
                                    "time_offset": 0,
                                    "is_queued": false,
                                    "created_at": "2020-05-01T12:00:00+00:00",
                                    "updated_at": "2020-05-01T12:00:00+00:00"
                                }
                            }
                        ]
                    }
                }
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
POST
/api/client/servers/{server_id}/schedules

Crée un nouveau schedule.

Corps de la requête

{
    "name": "Backup quotidien",
    "minute": "0",
    "hour": "0",
    "day_of_week": "*",
    "day_of_month": "*",
    "month": "*",
    "is_active": true
}
GET
/api/client/servers/{server_id}/schedules/{schedule_id}

Récupère les détails d'un schedule spécifique.

POST
/api/client/servers/{server_id}/schedules/{schedule_id}/tasks

Crée une nouvelle tâche pour un schedule.

Corps de la requête

{
    "action": "command",
    "payload": "say Exécution de la tâche programmée",
    "time_offset": 0,
    "sequence_id": 1
}
DELETE
/api/client/servers/{server_id}/schedules/{schedule_id}/tasks/{task_id}

Supprime une tâche d'un schedule.

DELETE
/api/client/servers/{server_id}/schedules/{schedule_id}

Supprime un schedule.

Allocations réseau

GET
/api/client/servers/{server_id}/network/allocations

Liste toutes les allocations d'un serveur.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "allocation",
            "attributes": {
                "id": 1,
                "ip": "192.168.1.1",
                "ip_alias": null,
                "port": 25565,
                "notes": null,
                "is_default": true
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
POST
/api/client/servers/{server_id}/network/allocations

Crée une nouvelle allocation pour le serveur.

POST
/api/client/servers/{server_id}/network/allocations/{allocation_id}/primary

Définit une allocation comme primaire.

PUT
/api/client/servers/{server_id}/network/allocations/{allocation_id}

Met à jour les notes d'une allocation.

Corps de la requête

{
    "notes": "Allocation principale pour Minecraft"
}
DELETE
/api/client/servers/{server_id}/network/allocations/{allocation_id}

Supprime une allocation.

Gestion des utilisateurs

GET
/api/client/servers/{server_id}/users

Liste tous les utilisateurs ayant accès au serveur.

Réponse

{
    "object": "list",
    "data": [
        {
            "object": "server_subuser",
            "attributes": {
                "uuid": "c91c0f18-3b95-4db2-94b0-ba3c756d3d5c",
                "username": "utilisateur",
                "email": "[email protected]",
                "image": "https://www.gravatar.com/avatar/...",
                "2fa_enabled": false,
                "created_at": "2020-06-01T12:00:00+00:00",
                "permissions": [
                    "control.console",
                    "control.start",
                    "file.read",
                    "file.write"
                ]
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 50,
            "current_page": 1,
            "total_pages": 1
        }
    }
}
POST
/api/client/servers/{server_id}/users

Ajoute un nouvel utilisateur au serveur.

Corps de la requête

{
    "email": "[email protected]",
    "permissions": [
        "control.console",
        "control.start",
        "file.read",
        "file.write"
    ]
}
GET
/api/client/servers/{server_id}/users/{user_id}

Récupère les détails d'un utilisateur spécifique.

POST
/api/client/servers/{server_id}/users/{user_id}

Met à jour les permissions d'un utilisateur.

Corps de la requête

{
    "permissions": [
        "control.console",
        "control.start",
        "file.read"
    ]
}
DELETE
/api/client/servers/{server_id}/users/{user_id}

Retire l'accès d'un utilisateur au serveur.