đ API Web
đ Structure de l'API
L'API Web de Horizons permet d'accéder aux données du serveur à travers des endpoints HTTP. Cela vous permet d'intégrer les données de votre serveur avec des sites web, applications mobiles, bots Discord, et plus encore.
Points d'accĂšs disponibles
| Endpoint | Description | Méthode | Authentification |
|---|---|---|---|
/api/teams | Récupérer les informations des équipes | GET | Clé secrÚte |
/api/players | Récupérer les informations des joueurs | GET | Clé secrÚte |
/api/shops | Récupérer les données des boutiques | GET | Clé secrÚte |
đ ïž Configuration
La fonctionnalité API est configurable dans le fichier config.yml :
#######################################
# WEB API INTEGRATION #
#######################################
api:
enabled: false
secret: "generatedsecretkey" # Sera généré automatiquement
mode: "self-hosted" # ou "external"
port: 8080
https:
enabled: false
keystore_path: ""
keystore_password: ""
domain: ""
# Limites pour éviter le flood
rate_limit:
max_per_minute: 60Options disponibles
| Option | Description | Valeur par défaut |
|---|---|---|
enabled | Active ou désactive l'API | false |
secret | ClĂ© secrĂšte pour authentifier les requĂȘtes | GĂ©nĂ©rĂ© automatiquement |
mode | Mode d'hébergement (self-hosted ou external) | self-hosted |
port | Port d'écoute pour l'API | 8080 |
https.enabled | Active ou désactive HTTPS | false |
https.keystore_path | Chemin vers le fichier keystore pour HTTPS | "" |
https.keystore_password | Mot de passe du keystore | "" |
https.domain | Nom de domaine pour l'API | "" |
rate_limit.max_per_minute | Limite de requĂȘtes par minute par adresse IP | 60 |
đ SĂ©curitĂ©
L'accĂšs Ă l'API est protĂ©gĂ© par une clĂ© secrĂšte qui doit ĂȘtre incluse dans toutes les requĂȘtes. Cette clĂ© est gĂ©nĂ©rĂ©e automatiquement au premier dĂ©marrage du plugin ou peut ĂȘtre dĂ©finie manuellement dans config.yml.
Authentification
Pour accĂ©der Ă l'API, ajoutez le paramĂštre secret Ă vos requĂȘtes :
http://votreserveur:8080/api/teams?secret=votreclesecrÚteLimites de débit
Pour protéger votre serveur contre les abus, une limite de débit est appliquée par défaut :
- 60 requĂȘtes par minute et par adresse IP
- Les requĂȘtes dĂ©passant cette limite recevront une rĂ©ponse 401 Unauthorized
đ» Commandes
L'API peut ĂȘtre gĂ©rĂ©e avec la commande /api :
| Commande | Description | Permission |
|---|---|---|
/api start | Démarre l'API Web | horizons.admin.api |
/api stop | ArrĂȘte l'API Web | horizons.admin.api |
/api status | Affiche le statut et les informations de l'API | horizons.admin.api |
/api help | Affiche l'aide de la commande | horizons.admin.api |
đ Format des rĂ©ponses
Ăquipes (/api/teams)
{
"teams": [
{
"name": "fraude",
"displayName": "&5Fraude Fiscale",
"displayNameClean": "Fraude Fiscale",
"prefix": "&5Fraude Fiscale &8-&5 ",
"prefixClean": "Fraude Fiscale - ",
"score": 125673,
"players": [
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Joueur1",
"online": true
},
{
"uuid": "550e8400-e29b-41d4-a716-446655440001",
"name": "Joueur2",
"online": false
}
]
}
]
}Joueurs (/api/players)
{
"players": [
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"name": "Joueur1",
"score": 500,
"team": "fraude",
"online": true
},
{
"uuid": "550e8400-e29b-41d4-a716-446655440001",
"name": "Joueur2",
"score": 350,
"team": "Terre",
"online": false
}
]
}Boutiques (/api/shops)
{
"shops": [
{
"id": "general_shop::Shop_Keeper",
"name": "Shop Keeper",
"entityType": "VILLAGER",
"items": [
{
"material": "DIAMOND_SWORD",
"currentPrice": 500,
"pricingType": "STATIC",
"basePrice": 500
},
{
"material": "GOLDEN_APPLE",
"currentPrice": 120,
"pricingType": "DYNAMIC",
"basePrice": 120,
"minPrice": 80,
"maxPrice": 250
}
]
}
]
}đ IntĂ©gration HTTPS
Pour une sécurité renforcée, vous pouvez activer HTTPS pour vos connexions API :
- Créez un keystore Java :
keytool -genkey -alias horizons -keyalg RSA -keystore horizons.keystore -validity 365- Configurez HTTPS dans
config.yml:
api:
https:
enabled: true
keystore_path: "/chemin/vers/horizons.keystore"
keystore_password: "motdepasse"
domain: "api.votreserveur.com"đĄ Exemples d'utilisation
Récupérer les équipes avec cURL
curl "http://localhost:8080/api/teams?secret=generatedsecretkey"Récupérer les joueurs avec JavaScript
fetch('http://localhost:8080/api/players?secret=generatedsecretkey')
.then(response => response.json())
.then(data => {
console.log('Liste des joueurs:', data.players);
})
.catch(error => console.error('Erreur:', error));Créer un tableau des scores d'équipes avec PHP
<?php
$apiUrl = 'http://localhost:8080/api/teams?secret=generatedsecretkey';
$response = file_get_contents($apiUrl);
$data = json_decode($response, true);
echo '<table border="1">';
echo '<tr><th>Ăquipe</th><th>Score</th></tr>';
foreach ($data['teams'] as $team) {
echo '<tr>';
echo '<td>' . htmlspecialchars($team['displayNameClean']) . '</td>';
echo '<td>' . $team['score'] . '</td>';
echo '</tr>';
}
echo '</table>';
?>đĄïž Permissions
| Permission | Description |
|---|---|
| horizons.admin.api | Permet d'utiliser toutes les commandes d'API |
𧩠Intégration avec des services externes
L'API Web de Horizons peut facilement s'intégrer avec :
- Sites web personnalisés
- Applications mobiles iOS/Android
- Bots Discord
- Tableaux de classement en temps réel
- SystÚmes de modération externes
đ€ DĂ©pannage
- L'API ne démarre pas : Vérifiez que le port spécifié n'est pas déjà utilisé par un autre programme
- Erreur d'authentification : Assurez-vous que la clĂ© secrĂšte est correcte dans vos requĂȘtes
- Limite de dĂ©bit atteinte : RĂ©duisez la frĂ©quence de vos requĂȘtes ou augmentez la limite dans la configuration
- ProblÚmes HTTPS : Vérifiez que votre keystore est valide et que le mot de passe est correct