Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


Warning for game developers: PCGamingWiki staff members will only ever reach out to you using the official press@pcgamingwiki.com mail address.
Be aware of scammers claiming to be representatives or affiliates of PCGamingWiki who promise a PCGW page for a game key.

Difference between revisions of "PCGamingWiki:API"

From PCGamingWiki, the wiki about fixing PC games
m (updated page and included mention of MediaWiki API)
m (Fix)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
==API==
 
''This page might not be updated to reflect all available API endpoints or functionality.''
 
''This page might not be updated to reflect all available API endpoints or functionality.''
 +
  
 
===MediaWiki API===
 
===MediaWiki API===
{{ii}} As the PCGamingWiki is based on MediaWiki, the built-in [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] can be used to access a lot of data. MediaWiki extensions we use, such as [https://www.semantic-mediawiki.org/wiki/Help:API Semantic MediaWiki] and [https://www.mediawiki.org/wiki/Extension:Cargo/Exporting_data#API Cargo], also exposes their own API actions through the MediaWiki API.
+
{{ii}} As the PCGamingWiki is based on MediaWiki, the built-in [https://www.mediawiki.org/wiki/API:Main_page MediaWiki API] endpoint can be used to access a lot of data. Some MediaWiki extensions we use such as [https://www.mediawiki.org/wiki/Extension:Cargo/Exporting_data#API Cargo] also exposes their own API actions through the MediaWiki API.
{{ii}} The [[Special:ApiSandbox|API Sandbox]] can be helpful in figuring the API out.
+
{{++}} If you want to retrieve the Cargo table and their columns (e.g. cover image, developer, publisher, release date, etc) of a page, the '''[[Special:CargoTables|Cargo Tables]]''' page is the go-to place to understanding the structure, while {{Code|cargoquery}} is the API call you will mostly use. See [https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game._pageName%3D%22Half-Life%22&format=jsonfm this example] ([https://www.pcgamingwiki.com/wiki/Special:ApiSandbox#action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game._pageName%3D%22Half-Life%22 sandbox]).
{{++}} If you want to retrieve the Semanic MediaWiki properties (e.g. cover image, developer, publisher, release date, etc) of a page, the {{Code|browsebysubject}} API action is currently the most relevant one if you know the page name. See [https://www.pcgamingwiki.com/w/api.php?action=browsebysubject&format=json&subject=NieR%3A%20Automata this example] ([https://www.pcgamingwiki.com/wiki/Special:ApiSandbox#action=browsebysubject&format=json&subject=NieR%3A%20Automata sandbox])
+
{{mm}} The '''[[Special:ApiSandbox|API Sandbox]]''' can be helpful in figuring the API out, and the '''[[Special:CargoQuery|Cargo Query]]''' page for figuring out Cargo.
 +
{{mm}} When querying {{Code|_pageName}} or {{Code|_pageID}} (or any Cargo column that starts with an _ underscore), the fields parts of the query needs to alias it to another name, using e.g. <code>&fields=Infobox_game._pageName=Page</code>
 +
{{mm}} See the '''[https://www.mediawiki.org/wiki/Extension:Cargo/Querying_data Extension:Cargo/Querying data]''' for even more information about Cargo.
 +
 
 +
 
 +
'''Examples:'''
 +
 
 +
{{ii}} '''Retrieve some specific Cargo values from the Infobox_game table using its Steam AppID:''' {{Pre|1=https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm}}
 +
 
 +
:* ''If the exact page name is known, it is also possible to retrieve using <code>_pageName</code> like so: <code>&where=Infobox_game._pageName%3D"Elden Ring"</code>
 +
 
 +
{{ii}} '''Find the page ID of a PCGW page using the Cargo Infobox_game.Steam_AppID column:''' {{Pre|1=https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageID%3DPageID%2CInfobox_game.Steam_AppID&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm}}
 +
 
 +
{{ii}} '''Retrieve some specific Cargo values from the Infobox_game table using the page ID retrieved earlier:''' {{Pre|1=https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game._pageID%3D%22146683%22&format=jsonfm}}
 +
 
 +
{{ii}} '''Retrieve the wikitext of the page using the page ID retrieved earlier:''' {{Pre|1=https://www.pcgamingwiki.com/w/api.php?action=parse&format=json&pageid=146683&prop=wikitext}}
 +
 
 +
{{ii}} '''Retrieve specific Cargo values stored in different tables using its Steam AppID:''' {{Pre|1=https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game,Video&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL,Video.4K_Ultra_HD,Video.HDR,Video.Ultrawidescreen&join_on=Infobox_game._pageID=Video._pageID&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm}}
 +
:* ''This example retrieves three values from the '''Video''' table as well as four values from the '''Infobox_game''' table for a single page.
 +
 
  
 
===Redirect API===
 
===Redirect API===
{{ii}} Our custom redirect API allows us to redirect incoming users using any Steam ID to the relevant PCGamingWiki page.
+
{{ii}} Our custom redirect API allows us to redirect incoming users using any registered GOG Product ID or Steam App ID to the relevant PCGamingWiki page.
 
{{mm}} [https://github.com/PCGamingWiki/api Source code]
 
{{mm}} [https://github.com/PCGamingWiki/api Source code]
{{ii}} '''Example''' {{Pre|1=https://pcgamingwiki.com/api/appid.php?appid=674020}}
 
  
  
 +
'''Examples:'''
 +
{{ii}} '''GOG ID:''' {{Pre|1=https://www.pcgamingwiki.com/api/gog.php?page=1785384169}}
 +
 +
{{ii}} '''Steam App ID:''' {{Pre|1=https://www.pcgamingwiki.com/api/appid.php?appid=674020}}
 +
<!-- Disabled due to Cargo not tracking this property
 +
{{ii}} '''WineHQ:''' {{Pre|1=https://www.pcgamingwiki.com/api/winehq.php?appid=15482}}
 +
-->
 +
__NOTOC__ __NOEDITSECTION__ [[Category:PCGamingWiki]]
  
[[Category:PCGamingWiki]]
+
&nbsp;

Latest revision as of 12:19, 12 September 2022

API

This page might not be updated to reflect all available API endpoints or functionality.


MediaWiki API

As the PCGamingWiki is based on MediaWiki, the built-in MediaWiki API endpoint can be used to access a lot of data. Some MediaWiki extensions we use such as Cargo also exposes their own API actions through the MediaWiki API.
If you want to retrieve the Cargo table and their columns (e.g. cover image, developer, publisher, release date, etc) of a page, the Cargo Tables page is the go-to place to understanding the structure, while cargoquery is the API call you will mostly use. See this example (sandbox).
The API Sandbox can be helpful in figuring the API out, and the Cargo Query page for figuring out Cargo.
When querying _pageName or _pageID (or any Cargo column that starts with an _ underscore), the fields parts of the query needs to alias it to another name, using e.g. &fields=Infobox_game._pageName=Page
See the Extension:Cargo/Querying data for even more information about Cargo.


Examples:

Retrieve some specific Cargo values from the Infobox_game table using its Steam AppID:
https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm
  • If the exact page name is known, it is also possible to retrieve using _pageName like so: &where=Infobox_game._pageName%3D"Elden Ring"
Find the page ID of a PCGW page using the Cargo Infobox_game.Steam_AppID column:
https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageID%3DPageID%2CInfobox_game.Steam_AppID&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm
Retrieve some specific Cargo values from the Infobox_game table using the page ID retrieved earlier:
https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL&where=Infobox_game._pageID%3D%22146683%22&format=jsonfm
Retrieve the wikitext of the page using the page ID retrieved earlier:
https://www.pcgamingwiki.com/w/api.php?action=parse&format=json&pageid=146683&prop=wikitext
Retrieve specific Cargo values stored in different tables using its Steam AppID:
https://www.pcgamingwiki.com/w/api.php?action=cargoquery&tables=Infobox_game,Video&fields=Infobox_game._pageName=Page,Infobox_game.Developers,Infobox_game.Released,Infobox_game.Cover_URL,Video.4K_Ultra_HD,Video.HDR,Video.Ultrawidescreen&join_on=Infobox_game._pageID=Video._pageID&where=Infobox_game.Steam_AppID%20HOLDS%20%221245620%22&format=jsonfm
  • This example retrieves three values from the Video table as well as four values from the Infobox_game table for a single page.


Redirect API

Our custom redirect API allows us to redirect incoming users using any registered GOG Product ID or Steam App ID to the relevant PCGamingWiki page.
Source code


Examples:

GOG ID:
https://www.pcgamingwiki.com/api/gog.php?page=1785384169
Steam App ID:
https://www.pcgamingwiki.com/api/appid.php?appid=674020