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

m
 
(9 versions intermédiaires par le même utilisateur non affichées)
Ligne 108 : 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 145 : 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>. <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é.
** '''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é.
Ligne 156 : Ligne 156 :
|+POST
|+POST
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 311 : Ligne 311 :
|+GET
|+GET
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!QUERY  
!QUERY  
Ligne 665 : Ligne 665 :
|+PUT
|+PUT
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 704 : Ligne 704 :
|+DELETE
|+DELETE
!NOM
!NOM
!URL
!PATH
!PARAMS, HEADERS
!PARAMS, HEADERS
!BODY
!BODY
Ligne 927 : Ligne 927 :


= API jvc.gg =
= API jvc.gg =
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 dont la principale est [https://www.jeuxvideo.com/tous-les-jeux/ celle-ci]. Elle est hébergée sur le domaine [https://api.jvc.gg 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 ==
== Préambule ==
Ligne 946 : Ligne 957 :
Le tableau suivant répertorie les ''endpoints'' connus de cette API. Voici la signification de ses colonnes :
Le tableau suivant répertorie les ''endpoints'' connus de cette API. Voici la signification de ses colonnes :


*'''PATH''': chemin de l'''endpoint''.
*'''PATH''' : chemin 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>.
** '''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.).


*'''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>
*'''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
*'''BODY''' : Corps de la requête au format JSON


=== Les paramètres spéciaux ===
=== Les paramètres spéciaux ===
Ligne 994 : Ligne 1 005 :
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].
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înde ''queries'' devra être <code>publicationType=gameplay&platform=pc&gameGenre=action&event=e3</code>.
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 ===
=== 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.
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 ===
=== Liste des endpoints connus ===
Ligne 1 026 : Ligne 1 047 :
'''limit''' int <br>
'''limit''' int <br>
'''release''' str
'''release''' str
|Renvoie la liste des jeux tendances triés par note décroissante des rédacteurs JVC et satisfaisant les ''queries''.
|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
|games/{gameCategory}/releaseDate.asc
Ligne 1 036 : Ligne 1 057 :
'''limit''' int <br>
'''limit''' int <br>
'''release''' str
'''release''' str
|Renvoie la liste des jeux attendus triés par date de sortie croissante et satisfaisant les ''queries''.
|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
|games/{gameCategory}/title.asc
Ligne 1 046 : Ligne 1 067 :
'''limit''' int <br>
'''limit''' int <br>
'''release''' str
'''release''' str
|Renvoie la liste des jeux attendus triés par titre croissant et satisfaisant les ''queries''.
|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
|news/datePublished.desc
Ligne 1 103 : Ligne 1 124 :
'''limit''' int
'''limit''' int
|Renvoie la liste des annonces triées par date de publication croissante et satisfaisant les ''queries''.
|Renvoie la liste des annonces triées par date de publication croissante et satisfaisant les ''queries''.
|-
|topics/datePublished.desc
|
| '''offset''' int <br>
'''limit''' int
|Renvoie la liste des articles triés par date de publication croissante et satisfaisant les ''queries''.
|-
|-
|videos/datePublished.desc
|videos/datePublished.desc
Ligne 1 119 : Ligne 1 134 :
'''limit''' int
'''limit''' int
|Renvoie la liste des vidéos triées par date de publication croissante et satisfaisant les ''queries''.
|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
|me/{accessToken}/privateMessages
Kheys
380

modifications