APIPour commencer
Pagination
Listes paginées par curseur, comme Stripe : has_more, next_cursor, sans doublon ni trou.
Principe#
Toutes les listes ont la même enveloppe :
Champs#
objectchaîneToujours « list ».
Valeurs :
listdatatableau d’objetsLes éléments de cette page (objets du type de la liste).
has_morebooléenVrai s’il reste des éléments après cette page.
next_cursorchaîne ou nullCurseur de la page suivante, à passer tel quel dans cursor ; null en fin de liste.
urlchaîneAdresse de la liste dans l’API, filtres compris (sans cursor ni limit).
total_countentierfacultatifNombre total d’éléments avec ces filtres ; seulement avec include_total=true.
limit règle la taille de la page, de 1 à 100 (20 par défaut). Tant que has_more vaut true, repassez la valeur de next_cursor dans le paramètre cursor, avec les mêmes filtres et le même tri. La dernière page a has_more: false et next_cursor: null.
La pagination suit la clé de tri (« keyset ») : chaque page reprend juste après le dernier élément de la précédente. Pas de doublon, pas de trou, et la centième page est aussi rapide que la première.
curl -G https://api.wowdb.assemblee-defias.fr/v1/classic/items \
-d type=dagger \
-d rogue=true \
-d quality=rare,epic \
-d max_level=30 \
-d sort=-item_level \
-d limit=2{
"object": "list",
"data": [
{
"object": "item",
"id": 23168,
"key": "classic:item:23168",
"version": "classic",
"name": "Dague focale de Dédain",
"quality": "rare",
"quality_name": "Rare",
"icon": "https://wowdb.assemblee-defias.fr/database-icons/inv_weapon_shortblade_07.jpg",
"item_level": 35,
"required_level": 30,
"slot": "one_hand",
"slot_name": "À une main",
"type": "dagger",
"type_name": "Dague",
"weapon": {
"damage_min": 22,
"damage_max": 42,
"speed": 1.4,
"dps": 22.9
},
"sell_price": 2665,
"rogue": true,
"internal": false,
"tooltip": [
"Dague focale de Dédain",
"Niveau d'objet 35",
"Lié quand ramassé",
"À une main",
"Dague",
"Dégâts : 22 - 42",
"Vitesse 1.40",
"(22.9 dégâts par seconde)",
"Durabilité 65 / 65",
"Niveau 30 requis",
"Équipé : Augmente les dégâts et les soins produits par les sorts et effets magiques de 9 au maximum."
],
"url": "https://wowdb.assemblee-defias.fr/?id=classic:item:23168",
"api_url": "https://api.wowdb.assemblee-defias.fr/v1/classic/items/23168"
},
{
"object": "item",
"id": 6691,
"key": "classic:item:6691",
"version": "classic",
"name": "Surin de brochepourceau",
"quality": "rare",
"quality_name": "Rare",
"icon": "https://wowdb.assemblee-defias.fr/database-icons/inv_misc_bone_06.jpg",
"item_level": 35,
"required_level": 30,
"slot": "one_hand",
"slot_name": "À une main",
"type": "dagger",
"type_name": "Dague",
"weapon": {
"damage_min": 24,
"damage_max": 45,
"speed": 1.5,
"dps": 23
},
"sell_price": 8866,
"rogue": true,
"internal": false,
"tooltip": [
"Surin de brochepourceau",
"Niveau d'objet 35",
"Lié quand ramassé",
"Unique",
"À une main",
"Dague",
"Dégâts : 24 - 45",
"Vitesse 1.50",
"(23.0 dégâts par seconde)",
"+6 Endurance",
"+4 Esprit",
"Durabilité 65 / 65",
"Niveau 30 requis"
],
"url": "https://wowdb.assemblee-defias.fr/?id=classic:item:6691",
"api_url": "https://api.wowdb.assemblee-defias.fr/v1/classic/items/6691"
}
],
"has_more": true,
"next_cursor": "eyJrIjpbLTM1LCJzdXJpbiBkZSBicm9jaGVwb3VyY2VhdSIsImNsYXNzaWM6aXRlbTo2NjkxIl0sImgiOiJqY1BDbFRNSFQyIn0",
"url": "https://api.wowdb.assemblee-defias.fr/v1/classic/items?max_level=30&quality=rare%2Cepic&rogue=true&sort=-item_level&type=dagger"
}Parcourir toute une liste#
Une boucle suffit : demandez des pages de 100 tant qu’il y a un curseur. Les bibliothèques clientes le font pour vous (iterate, paginate).
# Page suivante : reprenez next_cursor de la page précédente.
curl -G https://api.wowdb.assemblee-defias.fr/v1/classic/items \
-d rogue=true -d type=dagger -d limit=100
curl -G https://api.wowdb.assemblee-defias.fr/v1/classic/items \
-d rogue=true -d type=dagger -d limit=100 \
-d cursor=CURSEUR_DE_LA_PAGE_PRECEDENTENombre total#
Par défaut, une liste ne compte pas ses éléments (c’est plus rapide). Ajoutez include_total=true pour recevoir total_count, le nombre total d’éléments avec ces filtres.
curl -G https://api.wowdb.assemblee-defias.fr/v1/classic/items \
-d rogue=true -d include_total=true -d limit=1En-tête Link#
Quand il y a une page suivante, la réponse porte aussi un en-tête Link (RFC 8288) avec son adresse complète, rel="next" : pratique pour les outils qui savent le suivre.
Link: <https://api.wowdb.assemblee-defias.fr/v1/classic/items?rogue=true&cursor=eyJrIjpb…&limit=100>; rel="next"Curseur invalide#
Un curseur est opaque : ne le fabriquez pas, ne le modifiez pas. Il est lié à la requête qui l’a produit ; réutilisé avec d’autres filtres ou un autre tri, il est refusé avec 400 cursor_invalid, au lieu de donner une page incohérente. limit peut, lui, changer d’une page à l’autre.
Listes incluses dans une fiche#
Certaines fiches contiennent une liste longue : le butin et les ventes d’un PNJ. La fiche en donne les 10 premiers éléments dans la même enveloppe list, avec has_more et l’url de la liste complète (/npcs/{id}/loot), qui se pagine de la même façon.
API de WoWDB des Défias, v1. Données du jeu © Blizzard Entertainment. Conditions d’usage · Markdown · llms.txt · OpenAPI