Kheys
1 092
modifications
m (→API endpoints) |
(→Ressources : Utilisation, connexion, mise en page) |
||
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). | |||
=API v4= | |||
= | ===Utilisation === | ||
L'API v4 utilise une sécurité | L'API v4 utilise une sécurité, l'en-tête HTTP <code>Jvc-Authorization</code> , sa valeur dépend d'une clé fixe <code>partner_key</code>, d'une <code>signature</code> et de la <code>date</code> . | ||
Le ''header'' de vos requêtes devra toujours être de la forme: | |||
<pre> | <pre> | ||
"Jvc-Authorization " : "header" | "Jvc-Authorization " : "header" | ||
Ligne 12 : | Ligne 14 : | ||
"Content-Type" : "application/json" | "Content-Type" : "application/json" | ||
</pre> | </pre> | ||
Où '''''header''''' est égal à une chaîne de charactère de cette forme : ''"PartnerKey='''<u>partner_key</u>''', Signature='''<u>signature</u>''', Timestamp='''<u>date</u>'''".'' | Où '''''header''''' est égal à une chaîne de charactère de cette forme: ''"PartnerKey='''<u>partner_key</u>''', Signature='''<u>signature</u>''', Timestamp='''<u>date</u>'''".'' | ||
'''Voici un script [https://www.python.org/ python] qui construit "''header''"''' | '''Voici un script [https://www.python.org/ python] qui construit "''header''"''' | ||
Ligne 43 : | Ligne 45 : | ||
print(authorizationHeader) | print(authorizationHeader) | ||
</pre> | </pre> | ||
===Connexion=== | |||
* '''URL''' : URL de l'endpoint | Comme pour l'ancienne API, le cookie '''''coniunctio''''' est toujours le cookie de session utilisateur. Il doit être récupéré avec l'appel au point d'entrée ''login'' (voir tableau POST) puis il doit être envoyé dans une en-tête HTTP "Cookie": "'''''coniunctio'''''" pour chaque appel. | ||
* '''PARAMS''' : Variable entre accolades à remplacer dans l'URL, suivi de son type ''str'' ou ''int''. | |||
** <code>contents/{contentID}/comments</code> doit être appelé comme suivant <code>contents/someID1234/comments</code> | ==API endpoints== | ||
* '''QUERY''' : '''''page''''' int '''''perPage''''' int : <code>api.jeuxvideo.com/v4/contents/1234ID/comments?page=1&perPage=30</code> | {{BoxInfo|Si vous remarquez qu'une information est erronée ou si vous êtes assez compétent en programmation pour nous aider à complèter la documentation, n'hésitez pas à venir sur le [https://discord.gg/wKBSHv2mdU discord de Jvflux] ou à me contacter en message privé sur [https://onche.org/profil/christianronald Onche]}} | ||
* '''BODY''' : Corps de la requête au format JSON | '''URL de base de l'API''': ''<nowiki>https://api.jeuxvideo.com/v4/</nowiki>'' | ||
Le fichier JSON avec les <code>ids</code> pour les ''params'' et les ''query strings'' <code>chronicles</code> <code>modes</code> <code>genres</code> <code>events</code> <code>machine</code> <code>categories</code> (obtenu via la requête '''GET''' ''config'') | |||
{| class="wikitable | *'''URL''': URL de l'endpoint | ||
*'''PARAMS''': Variable entre accolades à remplacer dans l'URL, suivi de son type ''str'' ou ''int''. | |||
**<code>contents/{contentID}/comments</code> doit être appelé comme suivant <code>contents/someID1234/comments</code> | |||
*'''QUERY''': Par exemple pour les deux query '''''page''''' int, '''''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 | |||
Le fichier JSON avec les <code>ids</code> pour les ''params'' et les ''query strings'' <code>chronicles</code> <code>modes</code> <code>genres</code> <code>events</code> <code>machine</code> <code>categories</code> (obtenu via la requête '''GET''' ''config'') https://pastebin.com/L1DXfP0C | |||
{| class="wikitable sortable" | |||
|+POST | |+POST | ||
!NOM | !NOM | ||
!URL | !URL | ||
!PARAMS | !PARAMS | ||
!BODY | !BODY | ||
|- | |- | ||
|addComment | |addComment | ||
Ligne 66 : | Ligne 70 : | ||
|'''contentID''' str | |'''contentID''' str | ||
|<pre>"content": "commentaire"</pre> | |<pre>"content": "commentaire"</pre> | ||
|- | |- | ||
|addCommentVote | |addCommentVote | ||
Ligne 73 : | Ligne 76 : | ||
'''commentID''' str | '''commentID''' str | ||
|<pre>"type": 1 ou -1</pre> | |<pre>"type": 1 ou -1</pre> | ||
|- | |- | ||
|addFavorisGames | |addFavorisGames | ||
|accounts/{accountId}/favorites/games | |accounts/{accountId}/favorites/games | ||
|'''accountId''' str | | '''accountId''' str | ||
|<pre>"games": [{ | |<pre>"games": [{ | ||
"id": 1, | "id": 1, | ||
Ligne 83 : | Ligne 85 : | ||
]} | ]} | ||
</pre> | </pre> | ||
|- | |- | ||
|addReply | |addReply | ||
Ligne 90 : | Ligne 91 : | ||
'''commentID''' str | '''commentID''' str | ||
|"content": "Super jeu !" | |"content": "Super jeu !" | ||
|- | |- | ||
|addReview | |addReview | ||
|games/{id}/{machine}/reviews/users | |games/{id}/{machine}/reviews/users | ||
|'''id''' int | |'''id''' int | ||
'''machine''' str | '''machine''' str | ||
Ligne 101 : | Ligne 101 : | ||
"onProfile": true | "onProfile": true | ||
</pre> | </pre> | ||
|- | |- | ||
|login | |login | ||
|accounts/login | |accounts/login | ||
| | | | ||
Ligne 109 : | Ligne 108 : | ||
"password": "mot_de_passe" | "password": "mot_de_passe" | ||
|- | |- | ||
|logout | |logout | ||
Ligne 115 : | Ligne 113 : | ||
| | | | ||
| | | | ||
|- | |- | ||
|register | |register | ||
|accounts/register | |accounts/register | ||
''l'<nowiki/>'''Header''' doit inclure'' : "Jvc-Auth-Token" : str | ''l'<nowiki/>'''Header''' doit inclure'' : "Jvc-Auth-Token" : str | ||
Ligne 126 : | Ligne 123 : | ||
"optin": false | "optin": false | ||
</pre> | </pre> | ||
|- | |- | ||
|reinitPassword | |reinitPassword | ||
|accounts/reset | |accounts/reset | ||
| | | | ||
Ligne 143 : | Ligne 139 : | ||
"val2" ]} | "val2" ]} | ||
</pre> | </pre> | ||
|- | |- | ||
|reportAccount | |reportAccount | ||
Ligne 151 : | Ligne 146 : | ||
"message": "Raison" | "message": "Raison" | ||
|- | |- | ||
|reportComment | | reportComment | ||
|contents/{contentID}/comments/{commentID}/report | |contents/{contentID}/comments/{commentID}/report | ||
|'''contentID''' str | |'''contentID''' str | ||
'''commentID''' str | '''commentID''' str | ||
|<pre>"reason": 1, | |<pre>"reason": 1, | ||
"message": "Raison", | "message": "Raison", | ||
Ligne 165 : | Ligne 159 : | ||
} | } | ||
</pre> | </pre> | ||
|- | |- | ||
|reportReview | |reportReview | ||
Ligne 179 : | Ligne 172 : | ||
"valeur_captcha": "" | "valeur_captcha": "" | ||
}</pre> | }</pre> | ||
|- | |- | ||
|restoreComment | |restoreComment | ||
Ligne 186 : | Ligne 178 : | ||
'''commentID''' str | '''commentID''' str | ||
|"content" : "comment" | |"content" : "comment" | ||
|- | |- | ||
|validateAccount | |validateAccount | ||
Ligne 196 : | Ligne 187 : | ||
"password": "mdp" | "password": "mdp" | ||
</pre> | </pre> | ||
|- | |- | ||
|validateSignature | |validateSignature | ||
Ligne 204 : | Ligne 194 : | ||
"signed_data": "signed_data" | "signed_data": "signed_data" | ||
</pre> | </pre> | ||
|} | |} | ||
{| class="wikitable | {| class="wikitable" | ||
|+GET | |+GET | ||
!NOM | !NOM | ||
!URL | !URL | ||
!PARAMS | !PARAMS | ||
!QUERY | !QUERY | ||
|- | |- | ||
|config | |config | ||
Ligne 218 : | Ligne 206 : | ||
| | | | ||
| | | | ||
|- | |- | ||
|getAccount | |getAccount | ||
Ligne 224 : | Ligne 211 : | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getAllFavorisGames | |getAllFavorisGames | ||
Ligne 230 : | Ligne 216 : | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getArticle | |getArticle | ||
Ligne 236 : | Ligne 221 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
|getArticleList | |getArticleList | ||
Ligne 244 : | Ligne 228 : | ||
'''perPage''' int | '''perPage''' int | ||
'''types''' str | '''types''' str | ||
|- | |- | ||
|getCaptcha | |getCaptcha | ||
Ligne 250 : | Ligne 233 : | ||
| | | | ||
|'''nb''' int | |'''nb''' int | ||
|- | |- | ||
|getChroniclesSummary | |getChroniclesSummary | ||
Ligne 256 : | Ligne 238 : | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
|- | |- | ||
|getComment | |getComment | ||
Ligne 263 : | Ligne 244 : | ||
'''commentID''' str | '''commentID''' str | ||
| | | | ||
|- | |- | ||
|getCommentAnswers | |getCommentAnswers | ||
Ligne 270 : | Ligne 250 : | ||
'''commentID''' str | '''commentID''' str | ||
| | | | ||
|- | |- | ||
|getComments | |getComments | ||
Ligne 277 : | Ligne 256 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getContentBean | |getContentBean | ||
|contents/{id} | |contents/{id} | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
Ligne 294 : | Ligne 271 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getCurrentAccountReport | |getCurrentAccountReport | ||
|accounts/{accountId}/report | |accounts/{accountId}/report | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
Ligne 307 : | Ligne 282 : | ||
'''commentID''' str | '''commentID''' str | ||
| | | | ||
|- | |- | ||
|getCurrentReviewReport | |getCurrentReviewReport | ||
Ligne 315 : | Ligne 289 : | ||
'''reviewId''' int | '''reviewId''' int | ||
| | | | ||
|- | |- | ||
|getFavoris | |getFavoris | ||
Ligne 321 : | Ligne 294 : | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getFavorisForum | |getFavorisForum | ||
Ligne 328 : | Ligne 300 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getFavorisGames | |getFavorisGames | ||
|accounts/{accountId}/favorites/games | |accounts/{accountId}/favorites/games | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getFavorisTopics | |getFavorisTopics | ||
Ligne 341 : | Ligne 311 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getFolder | |getFolder | ||
|contents/{id} | |contents/{id} | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
|getGame | |getGame | ||
Ligne 354 : | Ligne 322 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
|- | |- | ||
|getGameDetails | | getGameDetails | ||
|games/{id}/{machine}/details | |games/{id}/{machine}/details | ||
|'''id''' int | |'''id''' int | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
|- | |- | ||
|getGameImages | |getGameImages | ||
Ligne 369 : | Ligne 335 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameList | |getGameList | ||
Ligne 380 : | Ligne 345 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameNews | |getGameNews | ||
Ligne 387 : | Ligne 351 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameReleaseList | |getGameReleaseList | ||
|games/releases | | games/releases | ||
| | | | ||
|'''month''' str | | '''month''' str | ||
'''year''' str | '''year''' str | ||
'''machines''' str | '''machines''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameReview | |getGameReview | ||
Ligne 405 : | Ligne 367 : | ||
'''review''' str | '''review''' str | ||
| | | | ||
|- | |- | ||
|getGameReviews | |getGameReviews | ||
Ligne 411 : | Ligne 372 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
|getGameReviews | |getGameReviews | ||
Ligne 418 : | Ligne 378 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
|- | |- | ||
|getGameSummary | |getGameSummary | ||
|contents/games | |contents/games | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
|- | |- | ||
|getGameUserReviews | |getGameUserReviews | ||
Ligne 432 : | Ligne 390 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameVideos | |getGameVideos | ||
|games/{id}/{machine}/videos | |games/{id}/{machine}/videos | ||
|'''id''' int | |'''id''' int | ||
'''machine''' str | '''machine''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getGameWikis | |getGameWikis | ||
Ligne 448 : | Ligne 404 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getHeadlineList | |getHeadlineList | ||
|contents/trending | | contents/trending | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getHighTechSummary | | getHighTechSummary | ||
|contents/hightech | |contents/hightech | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
|- | |- | ||
|getLightGame | |getLightGame | ||
Ligne 469 : | Ligne 422 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
|- | |- | ||
|getNews | |getNews | ||
Ligne 475 : | Ligne 427 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
|getNewsHighTech | |getNewsHighTech | ||
Ligne 482 : | Ligne 433 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getPageContents | |getPageContents | ||
|accounts/{accountId}/page/contents | |accounts/{accountId}/page/contents | ||
|'''accountId''' str | |'''accountId''' str | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getPageReviews | |getPageReviews | ||
Ligne 496 : | Ligne 445 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getProfile | |getProfile | ||
Ligne 502 : | Ligne 450 : | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getProfilePage | |getProfilePage | ||
Ligne 508 : | Ligne 455 : | ||
|'''accountId''' str | |'''accountId''' str | ||
| | | | ||
|- | |- | ||
|getRelatedNews | |getRelatedNews | ||
Ligne 515 : | Ligne 461 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getRelatedVideos | |getRelatedVideos | ||
Ligne 522 : | Ligne 467 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getRelatedWikis | |getRelatedWikis | ||
Ligne 529 : | Ligne 473 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getSpecificNews | |getSpecificNews | ||
Ligne 535 : | Ligne 478 : | ||
| | | | ||
| | | | ||
|- | |- | ||
|getStores | |getStores | ||
Ligne 542 : | Ligne 484 : | ||
'''machine''' str | '''machine''' str | ||
| | | | ||
|- | |- | ||
|getTechList | |getTechList | ||
Ligne 549 : | Ligne 490 : | ||
|'''page''' int | |'''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getTopWikis | |getTopWikis | ||
Ligne 555 : | Ligne 495 : | ||
| | | | ||
| | | | ||
|- | |- | ||
|getTopsComments | |getTopsComments | ||
Ligne 561 : | Ligne 500 : | ||
|'''contentID''' str | |'''contentID''' str | ||
| | | | ||
|- | |- | ||
|getVideo | |getVideo | ||
Ligne 567 : | Ligne 505 : | ||
|'''id''' int | |'''id''' int | ||
| | | | ||
|- | |- | ||
|getVideoList | |getVideoList | ||
Ligne 578 : | Ligne 515 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|getVideosSummary | |getVideosSummary | ||
|contents/videos | |contents/videos | ||
| | | | ||
|'''machines''' str | |'''machines''' str | ||
|- | |- | ||
|search | |search | ||
Ligne 590 : | Ligne 525 : | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
|- | |- | ||
|searchArticles | |searchArticles | ||
Ligne 598 : | Ligne 532 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|searchAutocomplete | |searchAutocomplete | ||
Ligne 604 : | Ligne 537 : | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
|- | |- | ||
|searchGames | |searchGames | ||
Ligne 612 : | Ligne 544 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|searchNews | |searchNews | ||
Ligne 620 : | Ligne 551 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|searchVideos | |searchVideos | ||
Ligne 628 : | Ligne 558 : | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|searchWikis | |searchWikis | ||
|search/wikis | | search/wikis | ||
| | | | ||
|'''q''' str | |'''q''' str | ||
'''page''' int | '''page''' int | ||
'''perPage''' int | '''perPage''' int | ||
|- | |- | ||
|sponso | |sponso | ||
Ligne 642 : | Ligne 570 : | ||
| | | | ||
| | | | ||
|} | |} | ||
{| class="wikitable | {| class="wikitable sortable" | ||
|+PUT | |+PUT | ||
!NOM | !NOM | ||
Ligne 650 : | Ligne 577 : | ||
!PARAMS | !PARAMS | ||
!BODY | !BODY | ||
|- | |- | ||
|saveDescription | |saveDescription | ||
|accounts/me/profile/description | |accounts/me/profile/description | ||
| | | | ||
|''rétro-ingénierie à faire'' | |''rétro-ingénierie à faire'' | ||
|- | |- | ||
|saveExcludedMachines | |saveExcludedMachines | ||
Ligne 662 : | Ligne 587 : | ||
| | | | ||
|"machines" : [1, 2, 3, 4] // id des machines | |"machines" : [1, 2, 3, 4] // id des machines | ||
|- | |- | ||
|saveMachines | |saveMachines | ||
Ligne 668 : | Ligne 592 : | ||
| | | | ||
|"machines" : [1, 2, 3, 4] // id des machines | |"machines" : [1, 2, 3, 4] // id des machines | ||
|- | |- | ||
|updateComment | |updateComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' str | |'''contentID''' str | ||
'''commentID''' str | '''commentID''' str | ||
|"content": "Super jeu !" | |"content": "Super jeu !" | ||
|- | |- | ||
|uploadAvatar | |uploadAvatar | ||
|accounts/me/avatar | |accounts/me/avatar | ||
| | | | ||
|''rétro-ingénierie à faire'' | |''rétro-ingénierie à faire'' | ||
|- | |- | ||
|uploadCover | |uploadCover | ||
Ligne 687 : | Ligne 609 : | ||
| | | | ||
|''rétro-ingénierie à faire'' | |''rétro-ingénierie à faire'' | ||
|} | |} | ||
{| class="wikitable | {| class="wikitable sortable" | ||
|+ | |+GET | ||
!NOM | !NOM | ||
!URL | !URL | ||
!PARAMS | !PARAMS | ||
|- | |- | ||
|deleteComment | |deleteComment | ||
|contents/{contentID}/comments/{commentID} | |contents/{contentID}/comments/{commentID} | ||
|'''contentID''' str | |'''contentID''' str | ||
'''commentID''' str | '''commentID''' str | ||
|- | |- | ||
|deleteCommentVote | |deleteCommentVote | ||
Ligne 706 : | Ligne 625 : | ||
|'''contentID''' str | |'''contentID''' str | ||
'''commentID''' str | '''commentID''' str | ||
|} | |} | ||
{| class="wikitable | {| class="wikitable sortable" | ||
|+CUSTOM HTTP (''rétro-ingénierie à faire'') | |+CUSTOM HTTP (''rétro-ingénierie à faire'') | ||
!NOM | ! NOM | ||
!URL | !URL | ||
!PARAMS | !PARAMS | ||
|- | |- | ||
|deleteFavorisForum | |deleteFavorisForum | ||
|accounts/{accountId}/favorites/forums | |accounts/{accountId}/favorites/forums | ||
|'''accountId''' str | |'''accountId''' str | ||
|- | |- | ||
|deleteFavorisGames | | deleteFavorisGames | ||
|accounts/{accountId}/favorites/games | |accounts/{accountId}/favorites/games | ||
|'''accountId''' str | |'''accountId''' str | ||
|- | |- | ||
|deleteFavorisTopics | |deleteFavorisTopics | ||
|accounts/{accountId}/favorites/topics | |accounts/{accountId}/favorites/topics | ||
|'''accountId''' str | |'''accountId''' str | ||
|} | |} | ||
== Rétro-ingénierie de l'API et de l'application JVC == | ==Rétro-ingénierie de l'API et de l'application JVC== | ||
Pour connaître les endpoints de l'API, il faut décompiler l'appli JVC. | Pour connaître les endpoints de l'API, il faut décompiler l'appli JVC. | ||
# Décompresser l'APK de l'application avec 7zip/Winrar/etc. | #Décompresser l'APK de l'application avec 7zip/Winrar/etc. | ||
# Utiliser un décompilateur Dex vers Java, comme '''[https://github.com/skylot/jadx Jadx]''' . | #Utiliser un décompilateur Dex vers Java, comme '''[https://github.com/skylot/jadx Jadx]''' . | ||
==== JvApiService ==== | ====JvApiService==== | ||
Une fois le code Java disponible, on peut ouvrir l'interface ''com.jeuxvideo.api.web.'''JvApiService''''', qui contient tous les endpoints. L'appli utilise le bibliothèque [https://square.github.io/retrofit/ Retrofit 2.x] pour gérer l'API, on peut facilement parcourir la documentation de cette bibliothèque pour découvrir ce qu'il faut faire comme requête aux différentes URL de l'API. | Une fois le code Java disponible, on peut ouvrir l'interface ''com.jeuxvideo.api.web.'''JvApiService''''', qui contient tous les endpoints. L'appli utilise le bibliothèque [https://square.github.io/retrofit/ Retrofit 2.x] pour gérer l'API, on peut facilement parcourir la documentation de cette bibliothèque pour découvrir ce qu'il faut faire comme requête aux différentes URL de l'API. | ||
Ligne 771 : | Ligne 685 : | ||
</pre> | </pre> | ||
== Ressources == | ==Ressources== | ||
* Classe PHP exploitant l'API : https://pastebin.com/LWNDQDKy (Cette classe est incomplète et sera possiblement rendue obsolète dans le temps). | *Classe PHP exploitant l'API : https://pastebin.com/LWNDQDKy (Cette classe est incomplète et sera possiblement rendue obsolète dans le temps). | ||
* ''(en cours de documentation)'' Fichier JSON modélisant l'API complète (compatible avec [https://www.postman.com/ Postman] et divers clients). | *''(en cours de documentation)'' Fichier JSON modélisant l'API complète (compatible avec [https://www.postman.com/ Postman] et divers clients). | ||
* ''(en cours de | *''(en cours de dev)'' Une bibliothèque JavaScript pour pouvoir interagir avec l'API sans devoir gérer les cookies et les headers. | ||
==Identification== | =Ancienne API= | ||
{{BoxNotice|Le contenu qui va suivre concerne l'ancienne API qui n'existe plus.}} | |||
==Identification == | |||
L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique). | L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique). | ||
Ligne 790 : | Ligne 702 : | ||
! scope="col" |Mot de passe | ! scope="col" |Mot de passe | ||
|- | |- | ||
! scope="row" | Android 1.0 | ! scope="row" |Android 1.0 | ||
|appandr | |appandr | ||
|e32!cdf | |e32!cdf | ||
|- | |- | ||
! scope="row" |Android 2.0.3 | ! scope="row" |Android 2.0.3 | ||
| app_and_gnw | |app_and_gnw | ||
| FC?4554? | |FC?4554? | ||
|- | |- | ||
! scope="row" | Android 2.5 | ! scope="row" |Android 2.5 | ||
|app_and_ms | |app_and_ms | ||
| D9!mVR4c | |D9!mVR4c | ||
|- | |- | ||
! scope="row" |Android MP | ! scope="row" |Android MP | ||
Ligne 806 : | Ligne 718 : | ||
|LXnb45=d# | |LXnb45=d# | ||
|- | |- | ||
! scope="row" | Android Tab | ! scope="row" |Android Tab | ||
|nex12sz | |nex12sz | ||
| GT4!V2cT | |GT4!V2cT | ||
|- | |- | ||
! scope="row" |iPhone | ! scope="row" |iPhone | ||
Ligne 814 : | Ligne 726 : | ||
|W!P45-R | |W!P45-R | ||
|- | |- | ||
! scope="row" |iPad | ! scope="row" |iPad | ||
|ip45de | |ip45de | ||
|XpD5!FT | |XpD5!FT | ||
Ligne 821 : | Ligne 733 : | ||
L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS ! | L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS ! | ||
==Utilisation== | ==Utilisation == | ||
===Connexion === | ===Connexion=== | ||
Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php]. | Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php]. | ||
Ligne 833 : | Ligne 745 : | ||
|Le pseudo de l'utilisateur. | |Le pseudo de l'utilisateur. | ||
|- | |- | ||
|stamp | | stamp | ||
|Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée. | |Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée. | ||
|- | |- | ||
Ligne 876 : | Ligne 788 : | ||
|- | |- | ||
|02.news/''1234''.xml<br>02.news_screen/''1234''.xml | |02.news/''1234''.xml<br>02.news_screen/''1234''.xml | ||
| Voir une news (le nombre correspond à l'id) | |Voir une news (le nombre correspond à l'id) | ||
|- | |- | ||
|ean.php?ean=''0045496830144'' | |ean.php?ean=''0045496830144'' | ||
|Voir le jeu associé au code-barre (EAN) 0045496830144 | |Voir le jeu associé au code-barre (EAN) 0045496830144 | ||
|- | |- | ||
|forums_index.xml | | forums_index.xml | ||
|Liste des forums généraux | |Liste des forums généraux | ||
|- | |- | ||
|search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario'' | |search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario'' | ||
| Effectuer une recherche dans le nom des jeux ou des forums | |Effectuer une recherche dans le nom des jeux ou des forums | ||
|- | |- | ||
|tab_suggest_blocs.xml<br>tab_suggest_forums.xml | |tab_suggest_blocs.xml<br>tab_suggest_forums.xml | ||
|''À compléter'' | | ''À compléter'' | ||
|- | |- | ||
|cgi-bin/liste.cgi | | cgi-bin/liste.cgi | ||
|''À compléter'' | |''À compléter'' | ||
|} | |} | ||
Ligne 896 : | Ligne 808 : | ||
===Forums=== | ===Forums=== | ||
Pour les forums, les URL sont les mêmes que pour JVC, à part que : | Pour les forums, les URL sont les mêmes que pour JVC, à part que : | ||
*Le .htm est transformé en .xml | * Le .htm est transformé en .xml | ||
*Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com | * Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com | ||
* La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche). | *La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche). | ||
Par exemple :<br> | Par exemple :<br> | ||
Ligne 915 : | Ligne 827 : | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml | |https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml | ||
| Rechercher « cactus » dans le titre des topics | |Rechercher « cactus » dans le titre des topics | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml | ||
| Un topic | |Un topic | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml | ||
Ligne 926 : | Ligne 838 : | ||
|10 derniers messages d'un topic + formulaire | |10 derniers messages d'un topic + formulaire | ||
|- | |- | ||
|https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml | |https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml | ||
| Formulaire de réponse à un topic | | Formulaire de réponse à un topic | ||
|- | |- | ||
|https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi | |https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi | ||
|Envoyer un message (avec les données POST) | |Envoyer un message (avec les données POST) | ||
|- | |- | ||
|https://ws.jeuxvideo.com/profil/cisla.xml | |https://ws.jeuxvideo.com/profil/cisla.xml | ||
|Voir une CDV | | Voir une CDV | ||
|} | |} | ||
Ligne 942 : | Ligne 854 : | ||
Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC. | Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC. | ||
===Messages privés=== | === Messages privés=== | ||
L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$". | L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$". | ||
Ligne 948 : | Ligne 860 : | ||
{| class="wikitable alternance centre" | {| class="wikitable alternance centre" | ||
! scope="col" |URL | ! scope="col" |URL | ||
! scope="col" |Description | ! scope="col" |Description | ||
|- | |- | ||
Ligne 954 : | Ligne 866 : | ||
|Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non | |Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non | ||
|- | |- | ||
|messages-prives/connexion_ws.php | | messages-prives/connexion_ws.php | ||
|Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP. | |Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP. | ||
|- | |- | ||
|messages-prives/boite-reception_ws.php | |messages-prives/boite-reception_ws.php | ||
|Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer : | |Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
|- | |- | ||
|messages-prives/envoyes_ws.php | |messages-prives/envoyes_ws.php | ||
|Permet de connaître la liste des messages envoyés. Paramètre à envoyer : | |Permet de connaître la liste des messages envoyés. Paramètre à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
|- | |- | ||
|messages-prives/message_ws.php | |messages-prives/message_ws.php | ||
|Permet de lire le contenu d'un message privé. Paramètres à envoyer : | | Permet de lire le contenu d'un message privé. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
* ''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents » | *''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents » | ||
*''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0. | *''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0. | ||
|- | |- | ||
|messages-prives/nouveau_ws.php | | messages-prives/nouveau_ws.php | ||
|Permet d'envoyer un nouveau message privé. Paramètres à envoyer : | |Permet d'envoyer un nouveau message privé. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''all_dest'' : les destinataires, séparés pas des point-virgules | *''all_dest'' : les destinataires, séparés pas des point-virgules | ||
*''sujet'' : le titre du MP | *''sujet'' : le titre du MP | ||
*''yournewmessage'' : le contenu du MP | *''yournewmessage'' : le contenu du MP | ||
*''tmp'' : le timestamp actuel | *''tmp'' : le timestamp actuel | ||
* ''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im") | *''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im") | ||
Il se peut également que vous ayez à gérer un code de confirmation. | Il se peut également que vous ayez à gérer un code de confirmation. | ||
|- | |- | ||
|messages-prives/repondre_ws.php | |messages-prives/repondre_ws.php | ||
|Permet de répondre à un message privé. Paramètres à envoyer : | |Permet de répondre à un message privé. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
*''yournewmessage'' : le contenu du message | *''yournewmessage'' : le contenu du message | ||
Ligne 994 : | Ligne 906 : | ||
|messages-prives/suggest_pseudo_ws.php | |messages-prives/suggest_pseudo_ws.php | ||
|Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer : | |Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''search'' : ce que l'utilisateur est en train de taper | *''search'' : ce que l'utilisateur est en train de taper | ||
|- | |- | ||
Ligne 1 012 : | Ligne 924 : | ||
|messages-prives/del_indesirable_ws.php | |messages-prives/del_indesirable_ws.php | ||
|Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer : | |Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur actuel | *''id_user'' : id de l'utilisateur actuel | ||
*''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables | * ''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables | ||
|- | |- | ||
|messages-prives/info_alerte_ws.php | |messages-prives/info_alerte_ws.php | ||
|Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer : | |Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur qui fait la DDB | *''id_user'' : id de l'utilisateur qui fait la DDB | ||
*''id_message'' : id du message concerné | * ''id_message'' : id du message concerné | ||
|- | |- | ||
|messages-prives/alerte_ws.php | |messages-prives/alerte_ws.php | ||
|Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer : | | Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur qui fait la DDB | *''id_user'' : id de l'utilisateur qui fait la DDB | ||
*''pseudo'' : pseudo de l'utilisateur | *''pseudo'' : pseudo de l'utilisateur | ||
*''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal) | *''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal) | ||
Ligne 1 031 : | Ligne 943 : | ||
|- | |- | ||
|messages-prives/connexion_valid_ws.php | |messages-prives/connexion_valid_ws.php | ||
|Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer : | |Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''pseudo'' : pseudo de l'utilisateur | *''pseudo'' : pseudo de l'utilisateur | ||
|- | |- | ||
|messages-prives/add_destinataire_ws.php | |messages-prives/add_destinataire_ws.php | ||
|Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer : | |Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer : | ||
* ''id_user'' : id de l'utilisateur | *''id_user'' : id de l'utilisateur | ||
*''id_discussion'' : id de la discussion | *''id_discussion'' : id de la discussion | ||
*''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule | *''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule | ||
Ligne 1 091 : | Ligne 1 003 : | ||
print repr(string[:-ord(string[-1])]) | print repr(string[:-ord(string[-1])]) | ||
Modifiez la clé selon l'application que vous décompilez: | Modifiez la clé selon l'application que vous décompilez: | ||
*Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity'' | *Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity'' | ||
Ligne 1 100 : | Ligne 1 012 : | ||
==Liens externes== | ==Liens externes== | ||
*[https://fr.wikipedia.org/wiki/Interface_de_programmation API sur Wikipédia] | *[https://fr.wikipedia.org/wiki/Interface_de_programmation API sur Wikipédia] | ||
*[http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions] | *[http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions] | ||
*[https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android] | *[https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android] |