APIPour commencer

Pagination

Listes paginées par curseur, comme Stripe : has_more, next_cursor, sans doublon ni trou.

Voir en Markdown

Principe#

Toutes les listes ont la même enveloppe :

Champs#

  • objectchaîne

    Toujours « list ».

    Valeurs : list

  • datatableau d’objets

    Les éléments de cette page (objets du type de la liste).

  • has_morebooléen

    Vrai s’il reste des éléments après cette page.

  • next_cursorchaîne ou null

    Curseur de la page suivante, à passer tel quel dans cursor ; null en fin de liste.

  • urlchaîne

    Adresse de la liste dans l’API, filtres compris (sans cursor ni limit).

  • total_countentierfacultatif

    Nombre 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.

Première page
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
Réponse200JSON
{
  "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).

Bon à savoirPour parcourir tout le catalogue d’une version (39 133 objets en WotLK), comptez quelques centaines de requêtes : gardez le résultat en cache plutôt que de recommencer (limites de débit).
Toutes les pages
# 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_PRECEDENTE

Nombre 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.

include_totalTerminal
curl -G https://api.wowdb.assemblee-defias.fr/v1/classic/items \
  -d rogue=true -d include_total=true -d limit=1

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