-
Notifications
You must be signed in to change notification settings - Fork 0
Documentation API REST
[[TOC]]
GET/POST |
|
---|---|
Description | |
Conditions | |
Paramètres |
{
"param-n": "a query parameter",
...
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"result1": "value1",
"result2": "value2",
...
},
} |
Echec |
{
"success": false,
"status": 4xx,
"error": "status code title",
"message": "error description"
} |
Sur les endpoints sécurisés (icône 🔐 ), il est nécessaire de fournir un token d'authentification valable. Celui-ci peut être obtenu sur /login
à l'aide des informations d'authentification classiques (nom d'utilisateur/e-mail + mot de passe).
Les tokens d'authentification expirent après 120 minutes.
Ce token doit être spécifié dans le header de la requête, dans le champ Authorization
. Si le token n'est pas/plus valable, le serveur répond avec le code 401 UNAUTHORIZED
. Il est alors nécessaire de se reconnecter.
Il est possible de vérifier si un token a expiré sur la route /check/token/
:
GET (:closed_lock_with_key:) |
|
---|---|
Description | Permet de vérifier si un token a expiré. |
Conditions | Aucune. |
Paramètres | Aucun. |
Réussite |
{
"success" : true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"valid": true/false,
}
} |
Echec | N/A |
{
"success": false,
"status": 401,
"error": "UNAUTHORIZED",
"message": "Invalid token"
}
Pour des raisons de simplification, les cas d'échec dû au token invalide ne sont pas précisés dans la documentation ci-dessous.
Si un paramètre requis est manquant ou si le payload est malformé (par exemple JSON invalide), le serveur renvoie le code 400 BAD REQUEST
.
{
"success": false,
"status": 400,
"error": "BAD REQUEST",
"message": "
* Invalid JSON
* Missing required parameter <param> "
}
La connexion permet d'obtenir un nouveau token d'authentification afin d'effectuer des requêtes sur les endpoints sécurisés (qui nécessitent une connexion valide).
POST |
|
---|---|
Description | Génération d'un nouveau token d'authentification. |
Conditions | Aucune. |
Paramètres |
{
"id": "<username> or <email>",
"password": "<password>"
} |
Réussite |
{
"success": true,
"status": 200,
"error": null
"message": "Login successful. New auth token has been issued."
"content":
{
"token": "<new api token>",
"expires_at": "<expiration timestamp>",
"verified": <true>/<false>
},
} |
Echec |
{
"success": false,
"status": 401,
"error": "UNAUTHORIZED",
"message": "incorrect login informations"
} |
POST 🔐 |
|
---|---|
Description | Déconnexion de l'application et suppression (invalidation) du token d'authentification |
Conditions | Token existant et valide. |
Paramètres | Aucun. |
Réussite |
{
"success": true
"status": 200,
"error": null,
"message": "Logout successful"
} |
Echec | N/A |
POST |
|
---|---|
Description | Inscription à l'application |
Conditions | Aucune. |
Paramètres |
{
"username": "",
"email": "",
"password": ""
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "The account has been successfully created",
"content":
{
"token": "<new token>",
"expires_at": "<token expiration timestamp>",
"verified": false
},
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* Username already taken /
* Username contains forbidden characters /
* E-mail format is invalid /
* Password is too weak /
* Password contains forbidden characters"
} |
GET |
|
---|---|
Description | Vérifie si le nom d'utilisateur spécifié est déjà utilisé par un autre compte et si le format est valide. Utile au moment de l'inscription. |
Conditions | Aucune. |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "Username availability and validity checked successfully",
"content":
{
"is_available": true/false,
"is_valid": true/false
},
} |
Echec | N/A |
GET |
|
---|---|
Description | Vérifie si l'adresse e-mail spécifiée est déjà utilisée par un autre compte et si le format est valide. Utile au moment de l'inscription. |
Conditions | Aucune. |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "E-mail availability and validity checked successfully",
"content":
{
"is_available": true/false,
"is_valid": true/false
},
} |
Echec | N/A |
POST |
|
---|---|
Description | Déclenche la vérification du compte pour confirmer l'adresse e-mail. |
Conditions | Le compte doit ne pas avoir été vérifié. |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "Account successfully verified"
} |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid verification code"
} |
POST 🔐 |
|
---|---|
Description | Permet le renvoi de l'e-mail de confirmation afin d'activer le compte. |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "e-mail sent successfully"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "Account already active"
} {
"success": false,
"status": 429,
"error": "TOO MANY REQUESTS",
"message": "E-mail sent less than 2 minutes ago"
} |
POST |
|
---|---|
Description | Permet d'envoyer un e-mail de récupération du mot de passe |
Conditions |
(Pour plus de sécurité, le serveur renvoie |
Paramètres |
{
"id": "<username> or <e-mail>"
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "If the username or e-mail address exists, an e-mail with instruction to recover your account has been sent to you."
} |
Echec | N/A |
POST |
|
---|---|
Description | Permet de changer son mot de passe en cas d'oubli via un code temporaire précédemment envoyé par e-mail |
Conditions |
|
Paramètres |
{
"token": "<temporary recovery token>",
"password": "<new password>"
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "password successfully reset"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* New password contains forbidden characters /
* New password is too weak /
* New password must be different than current one "
} |
GET 🔐 |
|
---|---|
Description | Permet de récupérer le nom d'utilisateur et l'e-mail d'un utilisateur |
Conditions | Token existant et valide. |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"username": "<username>",
"email": "<email>",
"is_verified": true/false
},
} |
Echec | N/A |
POST 🔐 |
|
---|---|
Description | Permet de modifier l'adresse e-mail de l'utilisateur. |
Conditions |
|
Paramètres |
|
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "e-mail successfully updated"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* E-mail format is invalid /
* E-mail is already taken "
} |
POST 🔐 |
|
---|---|
Description | Permet de modifier le nom d'utilisateur. |
Conditions |
|
Paramètres |
|
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "username successfully updated"
} |
Echec |
{
"success": false,
"status": 400,
"error": "BAD REQUEST",
"message": "
* Username contains forbidden characters /
* Username is already taken "
}
|
POST 🔐 |
|
---|---|
Description | Permet de mettre à jour le mot de passe de l'utilisateur. |
Conditions |
|
Paramètres |
{
"password": "<new password>"
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "password successfully updated"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* New password contains forbidden characters /
* New password is too weak /
* New password must be different than current one
* Account must be verified to change password "
} |
La suppression du compte nécessite une confirmation par e-mail.
POST 🔐 |
|
---|---|
Description | Permet d'initier la suppression du compte. Un e-mail avec un lien est alors envoyé par e-mail pour valider l'opération. |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "An e-mail with a link has been sent to your e-mail address. Click the link to validate the deletion of your account"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "Account must be verified."
} |
POST 🔐 |
|
|
---|---|---|
Description |
Permet de valider la suppression du compte à l'aide du code de confirmation reçu par e-mail. La suppression est définitive. Toutes les entités de carte possédées sont perdues et il n'est pas possible de les récupérer. Les codes de partages ne seront plus valides après la suppression. Toutes les cartes partagées sont conservées si le transfert a effectivement eu lieu avant la suppression. |
|
Conditions |
|
|
Paramètres |
{
"token": "<validation token>"
} |
|
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "The account has been permanently deleted"
} |
|
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid confirmation code."
}
|
GET |
|
---|---|
Description | Permet de récupérer la liste de toutes les cartes existantes dans le jeu |
Conditions | Aucune. |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"cards":
[
{
"id": "<card_id>",
"name": "<figure_name>",
"description": "<card_description>",
"code": "<card_code>",
"birth": "<birth_year>",
"death": "<death_year>",
"img": "<image_path>",
"category":
{
"id": "<category_id>",
"name": "<category_name>"
},
"country":
{
"id": "<country_id>",
"name": "<country_name>"
},
"continent":
{
"id": "<continent_id>",
"name": "<continent_name>"
}
},
{
...
}
]
}
} |
Echec | N/A |
GET 🔐 |
|
---|---|
Description | Permet de récupérer la liste de toutes les cartes |
Conditions | Token existant et valide |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"cards":
[
{
"id": "<card_id>",
"quantity": {card_quantity},
"is_gold": true/false,
"name": "<figure_name>",
"description": "<card_description>",
"code": "<card_code>",
"birth": "<birth_year>",
"death": "<death_year>",
"img": "<image_path>",
"category":
{
"id": "<category_id>",
"name": "<category_name>"
},
"country":
{
"id": "<country_id>",
"name": "<country_name>"
},
"continent":
{
"id": "<continent_id>",
"name": "<continent_name>"
}
},
{
...
}
],
"entities":
{
"<card_id_1>":
[
{
"entity_id": "<card_entity_id>",
"is_shared": true/false,
"share_code": "<share_code> or null",
"is_gold": true/false
},
{
...
}
],
"<card_id_2>":
[
...
],
...
}
}
} |
Echec | N/A |
GET 🔐 |
|
---|---|
Description | Permet de récupérer la liste des entités de cartes possédées par l'utilisateur. |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"entities":
[
{
"entity_id": "<card_entity_id>",
"is_shared": true/false,
"share_code": "<share_code> or null",
"is_gold": true/false
},
{
...
}
]
}
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "Card is not owned by user"
} {
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid card ID"
} |
GET 🔐 |
|
---|---|
Description | Récupère la liste de toutes les catégories de cartes existantes. |
Conditions | Token existant et valide |
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"categories":
[
{
"id": "<category_id>",
"name": "<category_name>",
"owned_qty": "<qty of cards owned of this category>",
"total_qty": "<qty of cards in total in this category>",
"completion_percent": "<percentage of completion of this category>"
},
...
]
}
} |
Echec | N/A |
GET 🔐 |
|
---|---|
Description |
Récupère la liste de tous les pays de cartes existantes. |
Conditions |
Token existant et valide |
Paramètres |
Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"countries":
[
{
"id": "<country_id>",
"name": "<country_name>",
"owned_qty": "<qty of cards owned of this country>",
"total_qty": "<qty of cards in total in this country>",
"completion_percent": "<percentage of completion of this country>"
"continent":
{
"id": "<continent_id>",
"name": "<continent_name>"
},
},
...
]
}
} |
Echec |
N/A |
GET 🔐 |
|
---|---|
Description |
Récupère la liste de tousles continents de cartes existantes. |
Conditions |
Token existant et valide |
Paramètres |
Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"continents":
[
{
"id": "<continent_id>",
"name": "<continent_name>",
"owned_qty": "<qty of cards owned of this continent>",
"total_qty": "<qty of cards in total in this continent>",
"completion_percent": "<percentage of completion of this continent>"
},
...
]
}
} |
Echec |
N/A |
GET 🔐 |
|
---|---|
Description | Permet d'obtenir la liste des cartes possédées dans une catégorie en particulier |
Conditions | Token existant et valide |
Paramètres | Aucun. |
Réussite |
voir |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid category ID"
} |
GET 🔐 |
|
---|---|
Description | Permet d'obtenir la liste des cartes possédées dans un pays en particulier |
Conditions | Token existant et valide |
Paramètres | Aucun. |
Réussite |
voir |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid country ID"
} |
GET 🔐 |
|
---|---|
Description | Permet d'obtenir la liste des cartes possédées dans un continent en particulier |
Conditions | Token existant et valide |
Paramètres | Aucun. |
Réussite |
voir |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid continent ID"
} |
GET 🔐 |
|
---|---|
Description | Permet de vérifier le statut du pack de récompense. |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"is_available": true/false,
"next_opening": "<next opening timestamp>"
}
} |
Echec | N/A |
POST 🔐 |
|
---|---|
Description | Permet d'ouvrir le pack de récompenses |
Conditions |
|
Paramètres | Aucun |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"cards":
[
{
"id": "<card_id>",
"name": "<figure_name>",
"description": "<card_description>",
"code": "<card_code>",
"birth": "<birth_year>",
"death": "<death_year>",
"img": "<image_path>",
"is_new": true/false,
"is_gold": true/false,
"category":
{
"id": "<category_id>",
"name": "<category_name>"
},
"country":
{
"id": "<country_id>",
"name": "<country_name>"
}
},
{
...
}
]
}
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* Pack is not available yet
* Account has not been activated yet. Please confirm your e-mail address. "
} |
GET 🔐 |
|
---|---|
Description | Récupère le statut de partage d'une carte |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "success",
"content":
{
"is_more_shareable": true/false,
"is_more_shareable_gold": true/false,
"entities":
[
{
"id": "<card entity id>",
"is_shared": true/false,
"code": "<share_code> or null"
},
{
...
}
]
}
} |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid card ID"
}
|
L'attribut is_more_shareable
décrit si au moins une carte peut encore activer le partage, en plus de ceux qui sont déjà en cours de partage. En l'occurrence, l'attribut est à true
si au moins deux entités n'ont pas le partage activé.
POST 🔐 |
|
---|---|
Description | Active le partage d'une entité d'une carte |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "card share enabled",
"content":
{
"code": "<card share code>"
}
} |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid entity ID"
} {
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* Card is not shareable
* Card is already shared
* Account has not been activated yet. Please confirm your e-mail address "
} |
POST 🔐 |
|
---|---|
Description | Active le partage d'une entité d'une carte |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "card share disabled"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* Card is not shared
* Account has not been activated yet. Please confirm your e-mail address"
} {
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid entity ID"
} |
POST 🔐 |
|
---|---|
Description | Permet l'utilisation d'un code de partage pour initier le transfert d'une carte |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "card activated successfully",
"content":
{
"id": "<card_id>",
"quantity": {card_quantity},
"is_gold": true/false,
"name": "<figure_name>",
"description": "<card_description>",
"code": "<card_code>",
"birth": "<birth_year>",
"death": "<death_year>",
"img": "<image_path>",
"category":
{
"id": "<category_id>",
"name": "<category_name>"
},
"country":
{
"id": "<country_id>",
"name": "<country_name>"
},
"continent":
{
"id": "<continent_id>",
"name": "<continent_name>"
}
}
} |
Echec |
{
"success": false,
"status": 404,
"error": "NOT FOUND",
"message": "Invalid share code"
} {
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "Account has not been activated yet. Please confirm your e-mail address"
} |
Ces fonctions permettent d'effectuer l'administration de l'application et est uniquement destinée aux administrateurs (`user.is_admin = true`).
POST 🔐 |
|
---|---|
Description | Permet de créer une nouvelle carte. |
Conditions |
|
Paramètres |
{
"name": "<card name>",
"description": "<card_description>",
"rarity": "<card_rarity>(float)",
"code": "<card_code>(int)",
"birth": "",
"death": "",
"img": "<img_path>",
"country": "<country name>",
"continent": "<continent_name>",
"category": "<category_name>"
} |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "card created successfully",
"content":
{
"id": "<new card id>"
}
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "
* Card with the same name already exists"
} |
POST 🔐 |
|
---|---|
Description | Permet de définitivement supprimer une carte. |
Conditions |
|
Paramètres | Aucun. |
Réussite |
{
"success": true,
"status": 200,
"error": null,
"message": "card deleted successfully"
} |
Echec |
{
"success": false,
"status": 403,
"error": "FORBIDDEN",
"message": "There is still cards entities that reference this card"
}
|
TODO