API

Metamob propose une petite API vous permettant de récupérer directement les informations saisies par les utilisateurs.

Récupérer une clé

Pour créer votre clé, rendez-vous dans votre espace et cliquez sur l'onglet "API".
Vous devrez saisir un nom. Gardez à l'esprit que vous ne pouvez créer qu'une seule clé API pour l'instant.

Votre clé sera immédiatement utilisable.

Appeler l'API

Le domaine de base est https://api.metamob.fr.

Vous devrez fournir votre clé API dans les entêtes, sous le nom HTTP-X-APIKEY.

Headers API

Attention Votre clé est limitée à 60 appels par minute. En cas de dépassement, vous obtiendrez une erreur 429 "Too Many Requests". L'entête Retry-After vous indique le temps restant avant votre prochaine tentative (en secondes). Pensez à cacher vos résultats.

Modifier des données

Attention Pour les appels en PUT, vous devrez fournir un identifiant unique de compte dans les entêtes afin de confirmer que l'appel que vous effectuez est autorisé par le propriétaire du compte.

Cet identifiant unique se trouve dans la page de profil, dans l'onglet API.

Vous devrez fournir cet identifiant dans les entêtes, sous le nom HTTP-X-USERKEY.

L'identifiant unique doit correspondre au compte que vous essayez de modifier.

Headers API

Erreurs d'appel possibles

  • Erreur 400 "Body non valide": votre JSON est incorrect. Vérifiez-le sur un outil en ligne (par exemple, pas de virgule après le dernier élément d'un tableau !).
  • Erreur 401 "Cle unique utilisateur non reconnue": l'identifiant unique d'utilisateur n'est pas reconnu.
  • Erreur 400 "Cle unique non valide pour cet utilisateur": l'identifiant unique d'utilisateur fourni ne correspond pas à l'utilisateur que vous essayez de modifier.

Lecture de données


GET /utilisateurs

Liste les utilisateurs. Non implémenté pour le moment.


GET /utilisateurs/(:pseudo)

Exemple: /utilisateurs/Garfunk

Récupère les informations d'un utilisateur. Non sensible à la casse.

Clé Valeurs possibles Type
pseudo Pseudo de l'utilisateur string
contact Le contact indiqué à utiliser en jeu string
presentation Le texte de présentation string
image Le monstre utilisé pour l'icone string
image_url L'URL complète de l'icone string
etape L'étape actuelle de l'utilisateur integer
serveur Le nom du serveur sur lequel joue cet utilisateur string
derniere_connexion La date de dernière connexion, au format YYYY-MM-DD HH:mm:ss date
lien Le lien vers la page de cet utilisateur string

GET /utilisateurs/(:pseudo)/monstres

Exemple: /utilisateurs/Garfunk/monstres

Récupère les monstres d'un utilisateur. Le nom d'utilisateur n'est pas sensible à la casse.

Renvoie une liste d'objets composés des éléments suivants:

Clé Valeurs possibles Type
nom Le nom du monstre string
slug Le slug du monstre (le nom nettoyé) string
type Type de monstre: monstre, archimonstre, boss string
image_url URL de l'image du monstre string
etape Etape à laquelle le monstre doit être rendu integer
quantite Quantité indiquée par l'utilisateur integer
recherche Si le monstre est recherché pour un échange (0 ou 1) integer
propose Si le monstre est proposé à l'échange (0 ou 1) integer
nom_normal Nom du monstre normal associé (pour les archimonstres uniquement) string
Filtres disponibles:

Cet endpoint propose plusieurs filtres à ajouter en GET. Exemple: /utilisateur/Garfunk/monstres?nom=bib&type=archimonstre&quantite=2.

Clé Valeurs possibles Type
nom Le nom du monstre à filtrer. Le filtre s'effectue sur le champ "nom" mais aussi sur le champ "nom_normal" pour les archimonstres string
etape L'étape sur laquelle filtrer integer
type Le type de monstre à afficher. N'accepte que "monstre", "archimonstre", et "boss" string
quantite Pour n'afficher que les monstres dont l'utilisateur possède la quantité indiquée.
Si la valeur saisie commence par "<" alors les monstres affichées seront ceux dont la quantité est strictement inférieure à la valeur saisie.
Si la valeur saisie commence par ">" alors les monstres affichées seront ceux dont la quantité est strictement supérieure à la valeur saisie.
Exemple: /utilisateurs/Garfunk/monstres?quantite=<5 n'affichera que les monstres dont la quantité est strictement inférieure à 5.
string
recherche Pour filtrer les monstres recherchés ou non. Valeurs possibles: 0 ou 1.
Exemple: /utilisateurs/Garfunk/monstres?recherche=0 n'affichera que les monstres non recherchés
integer
propose Pour filtrer les monstres proposés ou non. Valeurs possibles: 0 ou 1.
Exemple: /utilisateurs/Garfunk/monstres?propose=1 n'affichera que les monstres proposés
integer

GET /monstres

Exemple: /monstres

Récupère les monstres. Renvoie une liste d'objets composés des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant du monstre integer
nom Le nom du monstre string
slug Le slug du monstre (le nom nettoyé) string
type Type de monstre: monstre, archimonstre, boss string
image_url URL de l'image du monstre string
etape Etape à laquelle le monstre doit être rendu integer
nom_normal Nom du monstre normal associé (pour les archimonstres uniquement) string
Filtres disponibles:

Cet endpoint propose plusieurs filtres à ajouter en GET. Exemple: /monstres?nom=bib&type=archimonstre.

Clé Valeurs possibles Type
nom Le nom du monstre à filtrer. Le filtre s'effectue sur le champ "nom" mais aussi sur le champ "nom_normal" pour les archimonstres string
etape L'étape sur laquelle filtrer integer
type Le type de monstre à afficher. N'accepte que "monstre", "archimonstre", et "boss" string

GET /monstres/(:id)

Exemple: /monstres/345

Récupère un monstre. Renvoie un objet composé des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant du monstre integer
nom Le nom du monstre string
slug Le slug du monstre (le nom nettoyé) string
type Type de monstre: monstre, archimonstre, boss string
image_url URL de l'image du monstre string
etape Etape à laquelle le monstre doit être rendu integer
nom_normal Nom du monstre normal associé (pour les archimonstres uniquement) string

GET /serveurs

Exemple: /serveurs

Récupère les serveurs. Renvoie une liste d'objets composés des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant du serveur integer
nom Le nom du serveur string
communaute La communauté concernée (France, Monde, etc) string
plateforme La plateforme concernée (Dofus PC, Dofus Touch, Dofus Rétro...) string
Filtre disponible:

Cet endpoint propose un filtre à ajouter en GET. Exemple: /serveurs?nom=terr.

Clé Valeurs possibles Type
nom Le nom du serveur à filtrer string

GET /serveurs/(:id)

Exemple: /serveurs/24

Récupère un serveur. Renvoie un objet composé des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant du serveur integer
nom Le nom du serveur string
communaute La communauté concernée (France, Monde, etc) string
plateforme La plateforme concernée (Dofus PC, Dofus Touch, Dofus Rétro...) string

GET /kralamoures

Exemple: /kralamoures

Récupère les kralamoures. Renvoie une liste d'objets composés des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant de l'évènement integer
date La date de l'évènement prévu. Format YYYY-MM-DD HH:mm:ss date
url Le lien complet vers l'évènement string
serveur Le nom du serveur concerné string
createur Le pseudo de l'utilisateur qui a créé l'événement string
description La description de l'évènement string
nombre_utilisateurs Le nombre d'utilisateurs qui participeront à l'évènement integer
nombre_comptes Le nombre de comptes qui participeront à l'évènement (la somme des champs "nombre" renseignée par les participants) integer

Par défaut, les évènements remontés sont les évènements planifiés entre la date du jour et 1 mois plus tard.

Filtre disponible:

Cet endpoint propose des filtres à ajouter en GET. Exemple: /kralamoures?serveur=Terra&date_debut=2021-01-15&date_fin=2021-05-30.

Clé Valeurs possibles Type
serveur Le nom du serveur à filtrer, non sensible à la casse. La recherche partielle est possible (exemple: "Terr" fera remonter le serveur "Terra Cogita") string
date_debut La date de début du filtrage, au format YYYY-MM-DD date
date_fin La date de fin du filtrage, au format YYYY-MM-DD date

GET /kralamoures/(:id)

Exemple: /kralamoures/124

Récupère un évènement kralamoure. Renvoie un objet composé des éléments suivants:

Clé Valeurs possibles Type
id L'identifiant de l'évènement integer
date La date de l'évènement prévu. Format YYYY-MM-DD HH:mm:ss date
url Le lien complet vers l'évènement string
serveur Le nom du serveur concerné string
createur Le pseudo de l'utilisateur qui a créé l'événement string
description La description de l'évènement string
nombre_utilisateurs Le nombre d'utilisateurs qui participeront à l'évènement integer
nombre_comptes Le nombre de comptes qui participeront à l'évènement (la somme des champs "nombre" renseignée par les participants) integer

Modification de données

Attention Les endpoints suivants nécessitent une clé unique d'utilisateur à fournir dans les entêtes. Toutes les informations sont disponibles en haut de page.


PUT /utilisateurs/(:pseudo)/monstres

Exemple: /utilisateurs/Garfunk/monstres

Met à jour les informations de monstre d'un compte utilisateur.

Appel

Le contenu de la requête ("Body") doit contenir un tableau JSON composé d'un nombre variable d'entrées. Chaque entrée doit contenir l'identifiant ("id") du monstre, ainsi que une ou plusieurs entrées concernant l'action à effectuer.

Les actions possibles sont:

  • etat : peut prendre les valeurs aucun, recherche ou propose
  • quantite : peut prendre une valeur, ou une chaîne de caractère spécifiant la quantité à ajouter ou soustraire

Le champ etat indique l'état dans lequel le monstre sera placé (neutre, recherché ou proposé).

Le champ quantite indique l'opération à effectuer sur la quantité: s'il s'agit d'un nombre seul (par exemple "3"), alors la quantité sera forcée à cette valeur, quelque soit la valeur actuelle. Si la quantité est une chaîne de caractère commençant par un symbole "+", alors la quantité du monstre sera incrémentée de la valeur indiquée. S'il s'agit d'une chaîne de caractère commençant par un symbole "-", alors la quantité du monstre sera décrémentée de la valeur indiquée.

Attention L'API ne mettra pas à jour l'état du monstre lorsque vous indiquez un changement de quantité: un monstre "recherché" à 0 exemplaire ne passera pas en état aucun si vous ajoutez un exemplaire. C'est à vous de faire cette modification (en requêtant la quantité au préalable par exemple).

Exemple de contenu du Body
[
    {
        "id": 453,
        "etat": "recherche",
        "quantite": 3
    },
    {
        "id": 547,
        "etat": "propose",
        "quantite": "-1"
    },
    {
        "id": 26,
        "quantite": "+1"
    },
    {
        "id": 245,
        "etat": "aucun"
    }
]

Dans cet exemple, le monstre ayant pour id 453 sera marqué à 3 exemplaires, même s'il était à 0 ou 10 avant. Le monstre 547 verra sa quantité décrémentée de 1, et le monstre 26 sa quantité incrémentée de 1.

Retour

L'API répond avec un tableau contenant les actions effectuées pour chaque monstre dans un tableau nommé "réussite", et un tableau contenant les erreurs dans un tableau nommé "erreurs".
Exemple de retour
{
    "reussite": {
        "26": [
            "Quantité du monstre Rose démoniaque passée à 1 (+1)"
        ],
        "245": [
            "Monstre Krambwork passé à l'état aucun"
        ],
        "453": [
            "Monstre Blordur l'Infect passé à l'état recherche",
            "Quantité du monstre Blordur l'Infect passée à 4 (+3)"
        ],
        "547": [
            "Monstre Fandanleuil le Précis passé à l'état propose",
            "Quantité du monstre Fandanleuil le Précis passée à 0 (-1)"
        ]
    },
    "erreurs": []
}

Attention Bien entendu, décrémenter un monstre en négatif ne le fait pas descendre en dessous de zéro (Demander une action "-10" sur un monstre possédé en 3 exemplaires ne le fera pas passer à -7, mais à 0, sans erreur).

Erreurs de retour possibles

  • Champ 'id' non valide pour le monstre xxx: l'id fourni n'est pas reconnu
  • "Champ 'etat' non valide pour le monstre xxx (xxx)": le champ etat ne peut prendre qu'une valeur parmi "aucun", "recherche", "propose".
  • "Champ 'quantite' non valide pour le monstre xxx (xxx)": assurez-vous de fournir une quantité au format numérique !

PUT /utilisateurs/(:pseudo)/monstres/reinitialiser

Exemple: /utilisateurs/Garfunk/monstres/reinitialiser

Réinitialise les monstres sur le compte. Cela signifie que toutes les informations relatives aux monstres seront supprimées !

Les monstres seront mis à l'état aucun (ni recherché ni proposé), avec une quantité nulle (0).