Difference between revisions of "Web API"

From Mania Tech Wiki
Jump to: navigation, search
m (More info about distro.)
(Formatting.)
Line 34: Line 34:
 
Here is a description of the parameters :
 
Here is a description of the parameters :
  
* root
+
* '''root'''
** game
+
** '''game'''
*** name: the client you are using. Known values: TmForever
+
*** '''name''' the client you are using. Known values: TmForever
*** version: Version of the client
+
*** '''version''' Version of the client
*** distro: ?. Set to MOLUX for TMNF, TAHOR for TMUF
+
*** '''distro''' Unknown. Set to MOLUX or TAHOR
*** lang: lang of the client, as ISO 639-1
+
*** '''lang''' lang of the client, as ISO 639-1
** author
+
** '''author'''
*** login: is not set when calling GetConnectionAndGameParams
+
*** '''login''' is not set when calling GetConnectionAndGameParams
*** session: obtained by calling GetConnectionAndGameParams. Unset when calling that function.
+
*** '''session''' is not set when calling GetConnectionAndGameParams
** request:
+
** '''request'''
*** name: Name of the requested function.
+
*** '''name''' Name of the requested function.
*** param: Parameters for the call.
+
*** '''param''' Parameters for the call.
  
 
The server responds with XML, which has obfurscated names:
 
The server responds with XML, which has obfurscated names:
Line 64: Line 64:
 
Here is a description of the return:
 
Here is a description of the return:
  
* r
+
* '''r'''
** r
+
** '''r'''
*** n: The name of the called function
+
*** '''n''' The name of the called function
*** c: The return data
+
*** '''c''' The return data
** e: A string giving the execution time.
+
** '''e''' A string giving the execution time.
  
 
== Functions calls ==
 
== Functions calls ==
  
 
=== GetConnectionAndGameParams ===
 
=== GetConnectionAndGameParams ===
First request sent by client.
+
''First request sent by client.''
 
{|class="wikitable"
 
{|class="wikitable"
 
  ! Auth required?
 
  ! Auth required?
Line 81: Line 81:
 
  | No
 
  | No
 
  |
 
  |
*;dedicated
+
* '''dedicated''' Set to 0 with TMF. Purpose is unknown. Maybe for servers.
: Set to 0 with TMF. Purpose is unknown. Maybe for servers.
+
* '''download''' Max P2P download speed, as set in game config, in B/s
*;download
+
* '''upload''' Max P2P upload speed, as set in game config, in B/s
: Max P2P download speed, as set in game config, in B/s
 
*;upload
 
: Max P2P upload speed, as set in game config, in B/s
 
 
  |
 
  |
* a
+
* '''a'''
**b : Full game name (Set to "Trackmania United Forever" for TMNF and TMUF)
+
** '''b''' Full game name (Set to "Trackmania United Forever" for TMNF and TMUF)
**c : Set to "game.trackmaniaforever.com" or "game2.trackmaniaforever.com". Server the client should use to continue talking with the API.
+
** '''c''' Set to "game.trackmaniaforever.com" or "game2.trackmaniaforever.com". Server the client should use to continue talking with the API.
**d : ?. Set to "online_game"
+
** '''d''' ?. Set to "online_game"
**e : Set to 443. Maybe HTTPS port?
+
** '''e''' Set to 443. Maybe HTTPS port?
**f : Set to 80. Maybe HTTP port?
+
** '''f''' Set to 80. Maybe HTTP port?
**g : Set to "World". Maybe base region?
+
** '''g''' Set to "World". Maybe base region?
**h : ?. Set to 1
+
** '''h''' ?. Set to 1
**i : ?. Set to 1
+
** '''i''' ?. Set to 1
 
  |}
 
  |}
  
 
=== CheckLogin ===
 
=== CheckLogin ===
Used to check if login is already used for account creation.
+
''Used to check if login is already used for account creation.''
 
{|class="wikitable"
 
{|class="wikitable"
 
  ! Auth required?
 
  ! Auth required?
Line 108: Line 105:
 
  | No
 
  | No
 
  |
 
  |
*;l
+
* '''l''' Player login.
: Player login.
 
 
  |
 
  |
*;e
+
* '''e''' Set to 1 if login is used, otherwise 0.
:Set to 1 if login is used, otherwise 0.
+
* '''p''' ?. Set to 0.
*;p
 
: ?. Set to 0.
 
 
  |}
 
  |}
  
 
=== MailAccount ===
 
=== MailAccount ===
Used to make the server send a password recovery email.
+
''Used to make the server send a password recovery email.''
 
{|class="wikitable"
 
{|class="wikitable"
 
  ! Auth required?
 
  ! Auth required?
Line 126: Line 120:
 
  | No
 
  | No
 
  |
 
  |
*;login
+
* '''login''' Player login
:Player login
 
 
  |
 
  |
No content is returned.
+
''No content is returned.''
 
  |}
 
  |}
  
 
[[Category:Specifications]]
 
[[Category:Specifications]]

Revision as of 09:51, 12 May 2019

Basic concepts

TrackMania uses a XML-RPC-like API to authenticate players, load server lists, load rankings, etc... Here is some documentation about what has been reversed engineered. A lot is still left to be documented.

The game sends unencrypted POST requests to

to communicate with the API.

It sets two headers: User-Agent: GameBox and Accept: */*, and uses the following format as request body :

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <game>
    <name>TmForever</name>
    <version>2.11.16</version>
    <distro>MOLUX</distro>
    <lang>fr</lang>
  </game>
  <author>
    <login/>
    <session/>
  </author>
  <request>
    <name>[...]</name>
    <params>
      [...]
    </params>
  </request>
</root>

Here is a description of the parameters :

  • root
    • game
      • name the client you are using. Known values: TmForever
      • version Version of the client
      • distro Unknown. Set to MOLUX or TAHOR
      • lang lang of the client, as ISO 639-1
    • author
      • login is not set when calling GetConnectionAndGameParams
      • session is not set when calling GetConnectionAndGameParams
    • request
      • name Name of the requested function.
      • param Parameters for the call.

The server responds with XML, which has obfurscated names:

<?xml version="1.0" encoding="UTF-8"?>
<r>
  <r>
    <n>[...]</n>
    <c>
      [...]
    </c>
  </r>
  <e>execution time : 0.0010 s</e>
</r>

Here is a description of the return:

  • r
    • r
      • n The name of the called function
      • c The return data
    • e A string giving the execution time.

Functions calls

GetConnectionAndGameParams

First request sent by client.

Auth required? Parameters Response
No
  • dedicated Set to 0 with TMF. Purpose is unknown. Maybe for servers.
  • download Max P2P download speed, as set in game config, in B/s
  • upload Max P2P upload speed, as set in game config, in B/s
  • a
    • b Full game name (Set to "Trackmania United Forever" for TMNF and TMUF)
    • c Set to "game.trackmaniaforever.com" or "game2.trackmaniaforever.com". Server the client should use to continue talking with the API.
    • d ?. Set to "online_game"
    • e Set to 443. Maybe HTTPS port?
    • f Set to 80. Maybe HTTP port?
    • g Set to "World". Maybe base region?
    • h ?. Set to 1
    • i ?. Set to 1

CheckLogin

Used to check if login is already used for account creation.

Auth required? Parameters Response
No
  • l Player login.
  • e Set to 1 if login is used, otherwise 0.
  • p ?. Set to 0.

MailAccount

Used to make the server send a password recovery email.

Auth required? Parameters Response
No
  • login Player login

No content is returned.