In other languages:

Mod portal API: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Updated to reflect changes to the API. Many features were removed unfortunately. I most likely missed some things that changed...)
Line 19: Line 19:
{| class="wikitable"
{| class="wikitable"
! Key !! Values !! Description
! Key !! Values !! Description
|-
| order ||updated, alpha, top||How to order the mods, by most recently updated, alphabetically, or by most downloaded. '''(Removed, not working anymore)'''
|-
| owner ||||
|-
|-
| page ||{an integer}||Page number you would like to show. Makes it so you can see a certain part of the list without getting detail on all
| page ||{an integer}||Page number you would like to show. Makes it so you can see a certain part of the list without getting detail on all
|-
|-
| page_size ||{an integer}||The amount of results to show in your search
| page_size ||{an integer or 'max'}||The amount of results to show in your search
|-
| q ||{a string}||Name/Partial Name of mod you want to search '''(Removed, not working anymore)'''
|-
| tags ||||
|-
|-
| namelist || {array of strings} || Return only mods that match the given names.  
| namelist || {array of strings} || Return only mods that match the given names.  
Line 39: Line 31:


=== /api/mods/{mod_name} ===
=== /api/mods/{mod_name} ===
=== /api/messages ===
GET Parameters:
{| class="wikitable"
! Key !! Values !! Description
|-
| page_size || {an integer} || How many messages on one page
|-
| page || {an integer} || Which page of messages
|-
| mod || {name of mod} || Name of the specific mod that you want messages for
|-
| tag || {a letter} || The letter that represents the different message tags
|}
=== /api/users ===


== JSON Object Types ==
== JSON Object Types ==
Line 106: Line 80:
{| class="wikitable"
{| class="wikitable"
! Key !! Type !!+ style='writing-mode:vertical-lr;vertical-align:bottom;font-size:90%' | Short !!+ style='writing-mode:vertical-lr;vertical-align:bottom;font-size:90%' | Full !! Description
! Key !! Type !!+ style='writing-mode:vertical-lr;vertical-align:bottom;font-size:90%' | Short !!+ style='writing-mode:vertical-lr;vertical-align:bottom;font-size:90%' | Full !! Description
|-
| created_at || String(ISO 8601) || ✓ || ✓
| The datetime the mod was uploaded, in the full ISO 8601 format, with a space separator instead of 'T'.
|-
| current_user_rating || Null || ✓ || ✓
| Doesn't seem to be implemented yet. Always null.
|-
| description || String || || ✓
| A longer description of the mod, in text only format.
|-
| description_html || String(HTML) || || ✓
| A longer description of the mod, with HTML tags.
|-
|-
| downloads_count || Integer || ✓ || ✓
| downloads_count || Integer || ✓ || ✓
| Number of downloads.
| Number of downloads.
|-
| first_media_file || [[#Media Files|Media File]] || ✓ ||
| The first media file in the "media_files" list.
|-
| game_versions || String[] || ✓ || ✓
| A list of major Factorio version strings (e.g. "0.13") starting with 0.13 that the mod is compatible with, ''in addition to'' the version(s) found in "latest_release" / "releases".
|-
| github_path || String || ✓ || ✓
| A link to the mod's github project page, just prepend "github.com/". Can be blank ("").
|-
| homepage || String || ✓ || ✓
| Usually a URL to the mod's main project page, but can be any string.
|-
| id || Integer || ✓ || ✓
| A numerical mod ID used to identify the mod in other API endpoints.
|-
|-
| latest_release || [[#Releases|Release]] || ✓ ||  
| latest_release || [[#Releases|Release]] || ✓ ||  
| The latest version of the mod available for download. See [[#Releases]]
| The latest version of the mod available for download. See [[#Releases]]
|-
| license_flags || Integer(11 bit) || ✓ || ✓
| A bit field describing what permissions the mod's license grants. See [[#License Flags]]
|-
| license_name || String || ✓ || ✓
| The mod's license name.
|-
| license_url || String || ✓ || ✓
| A URL link to the full license agreement. Can be any string in case of custom licenses.
|-
| media_files || [[#Media Files|Media File]][] || || ✓
| A list of media files, such as screen shots of the mod in action. See [[#Media Files]].
|-
|-
| name || String || ✓ || ✓
| name || String || ✓ || ✓
Line 157: Line 92:
| owner || String || ✓ || ✓
| owner || String || ✓ || ✓
| The Factorio username of the mod's author.
| The Factorio username of the mod's author.
|-
| ratings_count || Integer || ✓ || ✓
| Doesn't seem to be implemented yet. Always 0.
|-
|-
| releases || [[#Releases|Release]][] || || ✓
| releases || [[#Releases|Release]][] || || ✓
Line 166: Line 98:
| summary || String || ✓ || ✓
| summary || String || ✓ || ✓
| A shorter mod description.
| A shorter mod description.
|-
| tags || [[#Tags|Tag]][] || ✓ || ✓
| A list of tag objects that categorize the mod. See [[#Tags]].
|-
|-
| title || String || ✓ || ✓
| title || String || ✓ || ✓
| The mod's human-readable name.
| The mod's human-readable name.
|-
|-
| updated_at || String(ISO 8601) || ✓ || ✓
| The datetime the mod was last updated, in the full ISO 8601 format, with a space separator instead of 'T'.
|-
| visits_count || Integer || ✓ || ✓
| The number of times the mod was viewed, but perhaps only counted on the web interface???
|}
=== License Flags ===
The "license_flags" is an 11 bit number that describe generally what permissions the mod's license grants.
{| class="wikitable"
! 2<sup>n</sup> !! Title !! Description
|-
! colspan=3 | Permissions
|-
| 0 || Commercial Use || This software and derivatives may be used for commercial purposes
|-
| 1 || Modification || The software may be modified.
|-
| 2 || Distribution || You may distribute this software.
|-
| 3 || Patent Use || This license provides an express grant of patent rights from the contributor to the recipient.
|-
| 4 || Private Use || You may use and modify the software without distributing it.
|-
! colspan=3 | Conditions
|-
| 5 || Disclose Source || Source code must be made available when distributing the software.
|-
| 6 || License & Copyright Notice || Include a copy of the license and copyright notice with the code.
|-
| 7 || Same License || Modifications must be released under the same license when distributing the software. In some cases a similar or related license may be used.
|-
| 8 || State Changes || Indicate changes made to the code.
|-
! colspan=3 | Limitations
|-
| 9 || Hold Liable || Software is provided without warranty and the software author/license owner cannot be held liable for damages.
|-
| 10 || Trademark Use || This license explicitly states that it does NOT grant you trademark rights, even though licenses without such a statement probably do not grant you any implicit trademark rights.
|}
=== Tags ===
{| class="wikitable"
! Key !! Type !! Description
|-
| id || Integer || A numerical ID unique to this tag.
|-
| name || String || An all lower-case string used to identify this tag internally.
|-
| title || String || The tag's human-readable tag name.
|-
| description || String || A short description for the tag.
|-
| type || String ||
|}
|}
Currently, there are only a fixed number of tags available, these include:
{| class="wikitable"
! id !! type !! name !! title !! description
|-
| 1 || t || general || General || Mods that cannot be sorted into other categories
|-
| 2 || t || non-game-changing || Non-Game-Changing || Changes only look&feel. New graphics, new sounds, ... such things.
|-
| 3 || t || helper-mods || Helper Mods || These mods are not game-changing, but enhance the gameplay by helping you with useful functions. Mods like showing the current game-time, keep track over your resources, rail-laying...
|-
| 6 || t || big-mods || Big Mods || Too big and/or changes too much of the game to be fit anywhere else
|-
| 12 || t || transportation || Transportation || Player transport
|-
| 13 || t || logistics || Logistics || Transport of materials
|-
| 14 || t || utility || Utility || Helps with certain things the player is doing.
|-
| 15 || t || balancing || Balancing || Makes the game much more fair
|-
| 17 || t || enemies || Enemies || Adds more enemies for more challange
|-
| 16 || t || weapons || Weapons || Adds more weapons to annihilate the enemy
|-
| 18 || t || armor || Armor || Armors or armor equipment related.
|-
| 19 || t || oil || Oil || Things related to oil related manufacture
|-
| 20 || t || logistics-network || Logistics Network || Related to roboports and logistic robots
|-
| 21 || t || storage || Storage || Allows more ways to be able to store items
|-
| 22 || t || power-production || Power Production || Allows more ways to create mass amounts of energy
|-
| 23 || t || manufacture || Manufacture || Furnaces, assembling machines, production chains
|-
| 24 || t || blueprints || Blueprints ||
|-
| 25 || t || cheats || Cheats || Well, they let you cheat
|-
| 26 || t || defense || Defense || Mods that add the ability to protect your base more
|-
| 27 || t || mining || Mining || Mods that provide better or new ways of mining resources
|-
| 28 || t || info || Info || Mods that provide additional information to the player
|-
| 29 || t || trains || Trains || Related to trains
|}
=== Media Files ===
A media file object describes a single image, along with a smaller thumbnail sized version of the image.
{| class="wikitable"
! Key !! Type !! Description
|-
| id || Integer || A numerical ID unique to this media file.
|-
| width || Integer || Width of the full sized image in pixels.
|-
| height || Integer || Height of the full sized image in pixels.
|-
| size || Integer || Size of the full image in bytes.
|-
| urls || [[#Media URLs|Media URL]] || URLs to the full sized image and a thumbnail, see below.
|}
=== Media URLs ===
{| class="wikitable"
! Key !! Type !! Description
|-
| original || String(URL) || URL to full sized image.
|-
| thumb || String(URL) || URL to 128x128px sized thumbnail of image.
|}
The original image is in either PNG, JPEG, or GIF formats, with the extensions ".png", ".jpg", or ".gif". All image URLs seem to be located at https://mods-data.factorio.com/pub_data/media_files/ with a file name consisting of 12 alphanumerical characters (of the base64 alphabet) followed by the file extension. The thumbnail URL contains the same code, but instead with a file extension of ".thumb.png".


=== Releases ===
=== Releases ===
Line 318: Line 110:
|-
|-
| download_url || String || Path to download for a mod. starts with "/api" and does not include a full url
| download_url || String || Path to download for a mod. starts with "/api" and does not include a full url
|-
| downloads_count || Integer || Count of how many times a mod has been downloaded
|-
| factorio_version || String || The version of the game the mod is intended for
|-
|-
| file_name || String || The file name of the release. Always seems to follow the pattern "{name}_{version}.zip"
| file_name || String || The file name of the release. Always seems to follow the pattern "{name}_{version}.zip"
|-
|-
| file_size || Integer || The size of the file
| info_json || Object || A copy of the mod's info.json file, only contains factorio_version
|-
| game_version || String || The version of the mod (do not confuse with factorio version)
|-
| id || Integer || A numerical ID unique to this release.
|-
| info_json || Object || A copy of the mod's info.json file.
|-  
|-  
| released_at || String(ISO 8601) || ISO 6501 for when the mod was released.
| released_at || String(ISO 8601) || ISO 6501 for when the mod was released.
|-
|-
| version || String || The version string of this mod release. Used to determine dependencies.  
| version || String || The version string of this mod release. Used to determine dependencies.  
|-
| sha1 || String || The sha1 key for the file
|}
|}



Revision as of 17:21, 4 September 2018

No-building-material-icon.png
This article is a stub, and not comprehensive.
You can help this wiki by expanding it.

The Mod Portal API is used to both browse and download all mods available on the official Factorio mod portal. Using the API does not require any kind of authentication or account information and can be viewed simply by following the URLs below in any web browser.

https://mods.factorio.com/api/mods

More detailed information about a particular mod can be obtained by retrieving the following URL, where {name} is the mod's name field in the result object.

https://mods.factorio.com/api/mods/{name}

Endpoints

TODO!!! Note: The mod portal has been partially rewritten, and much of this section is out of date. Most of the parameters have been shifted to url path strings. Documentation needs to be updated, I'll do it soon(tm)! --Lexxy Fox (talk) 15:44, 24 February 2018 (UTC)

/api/mods

GET Parameters:

Key Values Description
page {an integer} Page number you would like to show. Makes it so you can see a certain part of the list without getting detail on all
page_size {an integer or 'max'} The amount of results to show in your search
namelist {array of strings} Return only mods that match the given names.


Returns #Mod List Response

/api/mods/{mod_name}

JSON Object Types

Mod List Response

Key Type Description
pagination Pagination See #Pagination
results Result[] A list of mods, matching any filters you specified.

Pagination

Key Type Description
count Integer Total number of mods that match your specified filters.
links Links Utility links to mod portal api requests, preserving all filters and search queries.
page Integer The current page number.
page_count Integer The total number of pages returned.
page_size Integer The number of results per page.

Pagination Links

Key Type Description
first String(URL) URL to the first page of the results, or null if you're already on the first page.
prev String(URL) URL to the previous page of the results, or null if you're already on the first page.
next String(URL) URL to the next page of the results, or null if you're already on the last page.
last String(URL) URL to the last page of the results, or null if you're already on the last page.

Result Entry

Fields returned by the api/mods endpoint are marked with a check (✓) in the "Short" column, and those returned the the api/mods/{name} endpoint are marked with a check in the "Full" column.

Key Type Short Full Description
downloads_count Integer Number of downloads.
latest_release Release The latest version of the mod available for download. See #Releases
name String The mod's machine-readable ID string.
owner String The Factorio username of the mod's author.
releases Release[] A list of different versions of the mod available for download. See #Releases
summary String A shorter mod description.
title String The mod's human-readable name.

Releases

Key Type Description
download_url String Path to download for a mod. starts with "/api" and does not include a full url
file_name String The file name of the release. Always seems to follow the pattern "{name}_{version}.zip"
info_json Object A copy of the mod's info.json file, only contains factorio_version
released_at String(ISO 8601) ISO 6501 for when the mod was released.
version String The version string of this mod release. Used to determine dependencies.
sha1 String The sha1 key for the file

Error

Key Type Description
detail String