« Documentation de l'API Jeuxvideo.com » : différence entre les versions

m
Aucun résumé des modifications
(22 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
L''''API de [[Jeuxvideo.com]]''', utilisée à l'origine par les applications mobiles de jeuxvideo.com, permet de développer plus facilement des applications, sites Web, et autres scripts en rapport avec jeuxvideo.com.
L''''API de [[jeuxvideo.com]]''', utilisée à l'origine par les applications mobiles de jeuxvideo.com, permet de développer plus facilement des applications, sites Web, et autres scripts en rapport avec jeuxvideo.com.


L'API est hébergée sur le sous-domaine ''api'', et est actuellement à sa quatrième version (v4). Les anciennes versions sont toujours exploitables avec les tokens qui leurs sont propres, mais certains ''endpoints'' retournent des erreurs HTTP 403, visiblement retournées directement par le serveur HTTP de JVC (HAProxy).
Actuellement, deux API sont utilisées : l'api ''v4'' et l'api ''jvc.gg'' :
* L'API ''v4'' est hébergée sur le sous-domaine ''api'', et est actuellement à sa quatrième version (''v4''). Elle est utilisée par l'application mobile JVC. Cette API est privée et ne peut être documentée que par rétro-ingénierie de l'application mobile.
* L'API ''jvc.gg'', d'importance moindre, est hébergée à ''api.jvc.gg''. C'est une API utilisée par les pages Phoenix du site qui sert notamment à la recherche des jeux.


L'API actuelle est privée et ne peut être documentée que par rétro-ingéniérie.
Les anciennes versions sont toujours exploitables avec les ''tokens'' qui leur sont propres{{Commentaire|Autre=potentiellement obsolète}}, mais certains ''endpoints'' renvoient des erreurs HTTP 403.


=Rétro-ingénierie de l'application mobile JVC=
=Rétro-ingénierie de l'application mobile JVC=
Ligne 11 : Ligne 13 :
=== Mise en place du processus de décompilation ===
=== Mise en place du processus de décompilation ===
Pour pouvoir décompiler l'application mobile, vous aurez besoin des outils suivants :
Pour pouvoir décompiler l'application mobile, vous aurez besoin des outils suivants :
# [https://www.java.com/en/download/ Java 8 ou plus]
* [https://www.java.com/en/download/ Java 8 ou plus]
# [https://apktool.org/ apktool]
* [https://apktool.org/ apktool]
# [https://github.com/skylot/jadx JADX]
* [https://github.com/skylot/jadx JADX]


Il faut également le fichier ''.apk'' de l'application mobile, téléchargeable [https://apkpure.fr/fr/jeuxvideo-com-pc-et-consoles/com.jeuxvideo ici] (privilégiez les versions supérieures à la 5.4.3, sans quoi vous devrez extraire le fichier ''.xapk'' et appliquer le processus de décompilation sur le fichier ''.apk'' principal).
Il faut également le fichier ''.apk'' de l'application mobile, téléchargeable [https://apkpure.fr/fr/jeuxvideo-com-pc-et-consoles/com.jeuxvideo ici] (privilégiez les versions supérieures à la 5.4.3, sans quoi vous devrez extraire le fichier ''.xapk'' et appliquer le processus de décompilation sur le fichier ''.apk'' principal).
Ligne 26 : Ligne 28 :


=== JvApiService ===
=== JvApiService ===
Une fois le code Java disponible, on peut ouvrir la classe '''JvApiService''' (située dans ''com.jeuxvideo.api.web''), qui contient tous les ''endpoints''. L'application utilise le bibliothèque [https://square.github.io/retrofit/ Retrofit 2.x] pour gérer l'API, et la classe contient tous les ''endpoints'' formels de l'API.
Une fois le code Java disponible, on peut ouvrir l'interface '''JvApiService''' (située dans ''com.jeuxvideo.api.web''), qui contient tous les ''endpoints''. L'application utilise le bibliothèque [https://square.github.io/retrofit/ Retrofit 2.x] pour gérer l'API, et la classe contient tous les ''endpoints'' formels de l'API.


''Exemple de code dans l'interface '''JvApiService'''''
''Extrait de l'interface JvApiService''
<pre>
<pre>
     @POST("contents/{contentID}/comments")
     @POST("contents/{contentID}/comments")
Ligne 37 : Ligne 39 :
</pre>
</pre>


=== ApiLogin ===
Interface complète disponible [https://pastebin.com/WiQiutAf ici].
La classe ''com.jeuxvideo.utils.'''ApiLogin''''' (nom de la classe donné arbitrairement car perdu lors de la compilation), permet de déduire la valeur du ''header Jvc-Authorization'' à envoyer dans les requêtes à l'API.
 
=== SigningInterceptor ===
La classe '''SigningInterceptor''' (du package ''com.jeuxvideo.api.utils''), permet de déduire la valeur du ''header Jvc-Authorization'' à envoyer dans les requêtes à l'API.
<pre>
<pre>
     public static String f(String str, String str2, String str3, String str4, String str5) {
     public static String m27149f(String str, String str2, String str3, String str4, String str5) {
         StringBuilder sb2 = new StringBuilder();
         StringBuilder sb2 = new StringBuilder();
         sb2.append("550c04bf5cb2b\n");
         sb2.append("550c04bf5cb2b\n");
Ligne 55 : Ligne 59 :
         }
         }
         sb2.append(str5);
         sb2.append(str5);
         String b10 = j5.f.b("d84e9e5f191ea4ffc39c22d11c77dd6c", sb2.toString());
         String m14428b = CryptoUtils.m14428b("d84e9e5f191ea4ffc39c22d11c77dd6c", sb2.toString());
         return "PartnerKey=550c04bf5cb2b, Signature=" + b10 + ", Timestamp=" + str;
         return "PartnerKey=550c04bf5cb2b, Signature=" + m14428b + ", Timestamp=" + str;
     }
     }
</pre>
</pre>
Classe complète disponible [https://pastebin.com/sMpiYDqQ ici].


=== JVApi et UserAgentInterceptor ===
=== JVApi et UserAgentInterceptor ===
''JVApi'' (du package arbitrairement nommé ''p379s3'' car nom perdu lors de la compilation) et ''UserAgentInterceptor'' (du package ''com.jeuxvideo.api.utils'') permettent de déduire le ''user-agent'' et la valeur des ''headers'' contenant des informations sur la version et la plateforme.
'''JVApi''' (du package arbitrairement nommé ''p379s3'' car nom perdu lors de la compilation) et '''UserAgentInterceptor''' (du package ''com.jeuxvideo.api.utils'') permettent de déduire le ''user-agent'' et la valeur des ''headers'' contenant des informations sur la version et la plateforme.


=== JVApiManager ===
=== JVApiManager ===
La classe ''JVApiManager'' (du package arbitrairement nommé ''p379s3'' car nom perdu lors de la compilation) est celle qui envoie les requêtes à l'API. Elle permet de savoir quelles variables sont passées à la requête vers tel ''endpoint''.
La classe '''JVApiManager''' (du package arbitrairement nommé ''p379s3'' car nom perdu lors de la compilation) est celle qui envoie les requêtes à l'API. Elle permet de savoir quelles variables sont passées à la requête vers tel ''endpoint''.
 
Classe complète disponible [https://pastebin.com/hDWMZwbq ici].


<div id="jvc-auth-header"></div>
<div id="jvc-auth-header"></div>
=== Le cas Jvc-Auth-Header ===
=== Le cas Jvc-Auth-Header ===
''Jvc-Auth-Header'' est le ''header'' envoyé à l'''endpoint'' nommé ''accounts/register''. Cet ''endpoint'' est crucial en ce qu'il représente l''''unique manière de créer un compte JVC sans le système reCaptcha'''.
'''Jvc-Auth-Header''' est le ''header'' envoyé à l'''endpoint'' nommé ''accounts/register''. Cet ''endpoint'' est crucial en ce qu'il représente l''''unique manière de créer un compte JVC sans le système reCaptcha'''.


Il est actuellement impossible que la requête soit validée par l'API sans ce ''header''.
Il est actuellement impossible que la requête soit validée par l'API sans ce ''header''.
Ligne 77 : Ligne 85 :


<div id="interception"></div>
<div id="interception"></div>
== Interception du trafic ==
== Interception du trafic ==


Ligne 99 : Ligne 108 :


Vous pouvez désormais voir quelles requêtes sont passées à l'API, ainsi que les ''headers'' et ''body'' associés. Par exemple lorsque l'on se connecte :
Vous pouvez désormais voir quelles requêtes sont passées à l'API, ainsi que les ''headers'' et ''body'' associés. Par exemple lorsque l'on se connecte :
[[File:http_toolkit.png|400px]]
[[File:http_toolkit.png|center|500px]]


=API v4=
=API v4=
Ligne 136 : Ligne 145 :
'''URL de base''': ''<nowiki>https://api.jeuxvideo.com/v4/</nowiki>''  
'''URL de base''': ''<nowiki>https://api.jeuxvideo.com/v4/</nowiki>''  


*'''URL''': URL de l'endpoint
*'''PATH''': chemin d'accès de l'''endpoint''
*'''PARAMS, HEADERS''':  
*'''PARAMS, HEADERS''':  
** '''param''' : variable entre accolades à remplacer dans l'URL, suivie dans la documentation de son type (''str'' ou ''int''). Par exemple, <code>contents/{contentID}/comments</code> doit être appelé comme suit : <code>contents/123456/comments</code>.
** '''param''' : variable entre accolades à remplacer dans l'URL, suivie dans la documentation de son type (''str'' ou ''int''). Par exemple, <code>contents/{contentID}/comments</code> doit être appelé comme suit : <code>contents/123456/comments</code>. <br> Note : dans la plupart des cas, le paramètre <code>accountId</code> peut être remplacé par la valeur <code>me</code> lorsque la requête doit pointer sur le compte connecté.
** '''header''' : ''header'' particulier à inclure dans l'en-tête de la requête. Si pas de spécification, l'en-tête ne contient que les ''headers'' de base spécifiés plus haut (''User-Agent'', ''Jvc-Authorization'', etc.).
** '''header''' : ''header'' particulier à inclure dans l'en-tête de la requête. Si pas de spécification, l'en-tête ne contient que les ''headers'' de base spécifiés plus haut (''User-Agent'', ''Jvc-Authorization'', etc.).


Ligne 147 : Ligne 156 :
|+POST
|+POST
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 302 : Ligne 311 :
|+GET
|+GET
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!QUERY  
!QUERY  
Ligne 656 : Ligne 665 :
|+PUT
|+PUT
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 678 : Ligne 687 :


|contents/{contentID}/comments/{commentID}
|contents/{contentID}/comments/{commentID}
|'''contentID''' str
|'''contentID''' int
'''commentID''' str
'''commentID''' int
|<pre>"content": "Super jeu !"</pre>
|<pre>"content": "Super jeu !"</pre>
|-
|-
Ligne 695 : Ligne 704 :
|+DELETE
|+DELETE
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 765 : Ligne 774 :
import requests, json
import requests, json
from requests import Response
from requests import Response
DOMAIN = 'api.jeuxvideo.com'
API_VERSION = 4


def call(path: str, method: str = 'GET', query: dict = None, data: dict = None, cookies: dict = None) -> Response:
def call(path: str, method: str = 'GET', query: dict = None, data: dict = None, cookies: dict = None) -> Response:
Ligne 913 : Ligne 925 :
*[https://archive.org/details/jeuxvideo.com-pc-et-consoles-5.4.7-apkpure APK 5.4.7] décompilable avec JADX.
*[https://archive.org/details/jeuxvideo.com-pc-et-consoles-5.4.7-apkpure APK 5.4.7] décompilable avec JADX.
*[https://pastebin.com/LWNDQDKy Classe PHP] exploitant l'API (cette classe est incomplète et sera possiblement rendue obsolète dans le temps).
*[https://pastebin.com/LWNDQDKy Classe PHP] exploitant l'API (cette classe est incomplète et sera possiblement rendue obsolète dans le temps).
= API jvc.gg =
[[File:phoenix.png|300px|vignette|La page Phoenix des jeux.]]
Cette API est une API distincte de la ''v4'' et utilisée par la partie Phoenix du site, c'est-à-dire les pages listant les jeux, ''reviews'', vidéos, etc., comme [https://www.jeuxvideo.com/tous-les-jeux/ celle-ci]. Elle est hébergée sur le domaine [https://api.jvc.gg api.jvc.gg].
{{clear}}
== Rétro-ingénierie ==
L'API étant privée, il a fallu procéder par rétro-ingénierie pour la documenter.
Les appels à l'API sont effectués depuis un script chargé par les pages Phoenix. Les noms de variable sont obfusqués mais pas les chaînes de caractère : ainsi une partie des ''endpoints'' y sont lisibles. Ce script est téléchargeable [https://archive.org/details/phoenix_script ici].
Il est également possible d'observer les URL et les contenus des requêtes depuis le panneau ''Network'' (ou ''Réseau'') des [https://developer.mozilla.org/fr/docs/Learn/Common_questions/Tools_and_setup/What_are_browser_developer_tools outils de développement Web].
== Préambule ==
L'API jvc.gg est basée sur l'utilisation de ''JSON Web Token'' (JWT), un standard utilisé pour créer des jetons de sécurité qui permettent de transférer de l'information de manière sécurisée entre deux parties au format JSON.
Lorsque vous visitez pour la première fois une page Phoenix, le serveur de JVC renvoie une requête comportant un cookie ''accessToken''. La valeur de ce cookie est une chaîne de caractères encodée au format JWT qui contient notamment votre ID de compte et la valeur de votre cookie ''coniunctio''. La fonction Python suivante permet de récupérer le cookie ''accessToken'' en fonction de votre cookie ''coniunctio'' :
<pre>
def get_access_cookie(coniunctio: str) -> str:
  cookies = {'coniunctio':coniunctio}
  res = requests.get('https://www.jeuxvideo.com/tous-les-jeux/', cookies=cookies)
  access_cookie = res.headers['set-cookie'].split(';')[0].replace('accessToken=', '')
  return access_cookie
</pre>
Ce cookie vous sera utile lorsque les requêtes envoyées sont destinées à opérer sur votre compte.
== Endpoints ==
Le tableau suivant répertorie les ''endpoints'' connus de cette API. Voici la signification de ses colonnes :
*'''PATH''' : chemin de l'''endpoint''.
*'''PARAMS, HEADERS''' :
** '''param''' : variable entre accolades à remplacer dans l'URL, suivie dans la documentation de son type (''str'' ou ''int''). Par exemple, <code>contents/{contentID}/comments</code> doit être appelé comme suit : <code>contents/123456/comments</code>.
** '''header''' : ''header'' particulier à inclure dans l'en-tête de la requête. Si pas de spécification, l'en-tête ne contient que les ''headers'' de base spécifiés plus haut (''User-Agent'', ''Jvc-Authorization'', etc.).
*'''QUERY''' : valeur à ajouter à l'URL permettant si précisée de filtrer les résultats. Par exemple pour les deux query ''page'', ''perPage'' int, l'URL devra être: <code>api.jeuxvideo.com/v4/contents/1234ID/comments?page=1&perPage=30</code>
*'''BODY''' : Corps de la requête au format JSON
=== Les paramètres spéciaux ===
* Le paramètre <code>{accessToken}</code> devra toujours être remplacé par la valeur du cookie éponyme.
* Le paramètre <code>{gameCategory}</code> peut être remplacée par les valeurs suivantes, qui proviennent évidemment du système de classification de JVC :
** <code>all</code> pour avoir la liste de tous les jeux ;
** <code>awaited</code> pour avoir la liste des jeux attendus ;
** <code>popular</code> pour avoir la liste des jeux populaires ;
** <code>best</code> pour avoir la liste des meilleurs jeux ;
** <code>currentBest</code> pour avoir la liste des meilleurs jeux du moment ;
** <code>releases</code> pour avoir la liste des jeux pas encore sortis.
=== Queries des jeux ===
Les ''queries'' renseignent la plateforme, le genre et le mode du jeu. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/1LGEibT8 ici].
Par exemple, si vous souhaitez obtenir la liste des jeux PS4 de genre action RPG et de forme multi en ligne, votre chaîne de ''queries'' devra être <code>platform=ps4&gameGenre=action_rpg&gameMode=multiplayer_online</code>.
De plus, le ''query'' ''release'' désigne la date de sortie du jeu, '''compatible seulement avec les catégories <code>best</code> et <code>releases</code>'''. Il peut s'agir d'une année ou d'une décennie (dans ce cas, la valeur du ''query'' représentera la première année de la décennie suivie du caractère 'd' ; par exemple, <code>2010d</code> pour les années 2010). Pour les jeux pas encore sortis, ce ''query'' peut également contenir le mois (par exemple : <code>2024-07</code> pour juillet 2024). Incompatible avec la catégorie <code>currentBest</code>.
=== Queries des news ===
Les ''queries'' renseignent la plateforme, le type, le genre et l'événement des news. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/Dk4SkDkA ici].
Par exemple, si vous souhaitez obtenir la liste des news de jeux PS5 de genre aventure en rapport avec l'événement ''Game Awards'' publiés en 2022, votre chaîne de ''queries'' devra être <code>publicationType=game_news&platform=ps5&gameGenre=adventure&event=id201395&publicationPeriod=2022</code>.
Le ''query publicationPeriod'' peut être : une année, une année suivie du numéro du mois (<code>2024-07</code> pour juillet 2024) ou une décennie (<code>2010d</code> pour les années 2010).
=== Queries des tests ===
Les ''queries'' renseignent la plateforme, le mode et le genre des jeux testés, ainsi que l'encadrement de la note des rédacteurs et la date de publication. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/Dk4SkDkA ici].
Par exemple, si vous souhaitez obtenir la liste des tests de jeux PC de genre aventure, de mode solo ayant eu au moins 14 et datant d'il y a au plus 6 mois, votre chaîne de ''queries'' devra être
<code>platform=pc&gameGenre=adventure&gameMode=singleplayer&editorialRatingRange=%5B14%2C)&maxAge=P6M</code>
Notez que le ''query editorialRatingRange'' doit être encodé au format URL avant d'être envoyé.
=== Queries des previews ===
Les ''queries'' renseignent la plateforme, le genre et l'événement des jeux testés. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/xaqTQPfr ici].
Par exemple, si vous souhaitez obtenir la liste des ''previews'' des jeux PS5 de genre FPS en rapport avec l'événement ''Find Your Next Game'', votre chaîne de ''queries'' devra être <code>platform=ps5&gameGenre=fps&event=fyng</code>.
=== Queries des vidéos ===
Les ''queries'' renseignent le type des vidéos ainsi que la plateforme, le genre et l'événement des jeux traités. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/nBUAP4XX ici].
Par exemple, si vous souhaitez obtenir la liste des vidéos ''gameplays'' des jeux PC de genre Action en rapport avec l'événement E3, votre chaîne de ''queries'' devra être <code>publicationType=gameplay&platform=pc&gameGenre=action&event=e3</code>.
=== Queries des dossiers ===
Les ''queries'' renseignent la plateforme, le genre et l'événement des jeux traités. La liste complète des valeurs des ''queries'' possibles pour ces attributs est disponible au format JSON [https://pastebin.com/UGd3b2qJ ici].
Par exemple, si vous souhaitez obtenir la liste des vidéos ''gameplays'' des jeux PC de genre Action en rapport avec l'événement E3, votre chaîne de ''queries'' devra être <code>publicationType=gameplay&platform=pc&gameGenre=action&event=e3</code>.
=== Queries globaux ===
Ce sont les ''queries'' ''offset'' et ''limit'', de type ''int'', qui représentent respectivement l'indice de l'item dans la liste à partir duquel les items sont listés (par défaut 0) et le nombre d'items à lister (par défaut 100). Ils fonctionnent avec toutes les recherches.
=== Requêtes auxiliaires ===
En parallèle des requêtes envoyées par le site pour rechercher des jeux, news, previews, vidéos ou tests, des requêtes auxiliaires sont adressées aux serveurs. Elles permettent en particulier de connaître ce qu'il faut afficher sur la page, les URL des pages ainsi que les options (''queries'') restantes selon ce qui a déjà été entré dans le panel de recherche.
Ces requêtes utilisent un ''endpoint'' contenant un token JWT dans lequel sont stockées des informations générales sur la requête (''queries'' notamment). Comme cette clé secrète n'est pas connue, il nous est malheureusement impossible de générer de tels tokens à la demande.
=== Liste des endpoints connus ===
{| class="wikitable"
|+GET
!PATH
!PARAMS
!QUERY
!DESCRIPTION
|-
|games/{gameCategory}/popularity.desc
| '''gameCategory''' str
|'''platform''' str <br>
'''gameGenre''' str <br>
'''gameMode''' str <br>
'''offset''' int <br>
'''limit''' int <br>
'''release''' str
|Renvoie la liste des jeux de la catégorie <code>{gameCategory}</code> triés par popularité décroissante et satisfaisant les ''queries''.
|-
|games/{gameCategory}/editorialRating.desc
| '''gameCategory''' str
|'''platform''' str <br>
'''gameGenre''' str <br>
'''gameMode''' str <br>
'''offset''' int <br>
'''limit''' int <br>
'''release''' str
|Renvoie la liste des jeux de la catégorie <code>{gameCategory}</code> triés par popularité décroissante et satisfaisant les ''queries''.
|-
|games/{gameCategory}/releaseDate.asc
| '''gameCategory''' str
|'''platform''' str <br>
'''gameGenre''' str <br>
'''gameMode''' str <br>
'''offset''' int <br>
'''limit''' int <br>
'''release''' str
|Renvoie la liste des jeux de la catégorie <code>{gameCategory}</code> triés par popularité décroissante et satisfaisant les ''queries''.
|-
|games/{gameCategory}/title.asc
| '''gameCategory''' str
|'''platform''' str <br>
'''gameGenre''' str <br>
'''gameMode''' str <br>
'''offset''' int <br>
'''limit''' int <br>
'''release''' str
|Renvoie la liste des jeux de la catégorie <code>{gameCategory}</code> triés par popularité décroissante et satisfaisant les ''queries''.
|-
|news/datePublished.desc
|
| '''publicationType''' str <br>
'''platform''' str <br>
'''gameGenre''' str <br>
'''event''' str <br>
'''publicationPeriod''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des actualités triées par date de publication croissante et satisfaisant les ''queries''.
|-
|reviews/datePublished.desc
|
|
'''platform''' str<br>
'''gameGenre''' str<br>
'''gameMode''' str<br>
'''editorialRatingRange''' str<br>
'''maxAge''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des tests triés par date de publication croissante et satisfaisant les ''queries''.
|-
|reviews/editorialRating.desc
|
|
'''platform''' str<br>
'''gameGenre''' str<br>
'''gameMode''' str<br>
'''editorialRatingRange''' str<br>
'''maxAge''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des tests triés par note décroissante des rédacteurs JVC et satisfaisant les ''queries''.
|-
|reviews/gameTitle.asc
|
|
'''platform''' str<br>
'''gameGenre''' str<br>
'''gameMode''' str<br>
'''editorialRatingRange''' str<br>
'''maxAge''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des tests triés par nom croissant du jeu et satisfaisant les ''queries''.
|-
|previews/datePublished.desc
|
|'''platform''' str <br>
'''gameGenre''' str <br>
'''event''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des annonces triées par date de publication croissante et satisfaisant les ''queries''.
|-
|videos/datePublished.desc
|
|'''publicationType''' str <br>
'''platform''' str <br>
'''gameGenre''' str <br>
'''event''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des vidéos triées par date de publication croissante et satisfaisant les ''queries''.
|-
|topics/datePublished.desc
|
|'''platform''' str <br>
'''gameGenre''' str <br>
'''event''' str <br>
'''offset''' int <br>
'''limit''' int
|Renvoie la liste des dossiers triés par date de publication croissante et satisfaisant les ''queries''.
|-
|me/{accessToken}/privateMessages
| '''accessToken''' str
|
|Renvoie la liste des 25 derniers messages privés.
|-
|me/{accessToken}/notifications/subscription
| '''accessToken''' str
|
|Renvoie la liste des dernières notifications.
|-
|me/{accessToken}/notifications/privateMessage/unseenCount
| '''accessToken''' str
|
|Renvoie le nombre de messages privés non-vus.
|-
|me/{accessToken}/notifications/subscription/unseenCount
| '''accessToken''' str
|
|Renvoie le nombre de notifications non-vues.
|-
|me/{accessToken}/profile
| '''accessToken''' str
|
|Informations du profil.
|-
|config/menu
|
|
|Informations à afficher sur les pages Phoenix.
|}
{| class="wikitable"
|+POST
!PATH
!PARAMS
!BODY
!DESCRIPTION
|-
|me/{accessToken}/notifications/subscription/resetUnseenCount
| '''accessToken''' str
|
|Met à zéro le nombre de notifications non-vues.
|-
|me/{accessToken}/notifications/privateMessage/resetUnseenCount
| '''accessToken''' str
|
|Met à zéro le nombre de messages privés non-vus.
|-
|me/{accessToken}/notifications/subscription/resetUnreadCount
| '''accessToken''' str
|
|Met à zéro le nombre de notifications non-lues.
|-
|me/{accessToken}/notifications/privateMessage/resetUnreadCount
| '''accessToken''' str
|
|Met à zéro le nombre de messages privés non-lus.
|-
|me/{accessToken}/notification/{notifId}/setRead
| '''accessToken''' str <br>
'''notifId''' int
|
|Lit une notification.
|-
|me/{accessToken}/privateMessage/{messageId}/setRead
| '''accessToken''' str <br>
'''messageId''' int
|
|Lit un message privé.
|-
|_auth/{accessToken}/logout
| '''accessToken''' str
|
|Se déconnecter.
|}


=Ancienne API (dépréciée) =
=Ancienne API (dépréciée) =
Kheys
407

modifications