Difference between revisions of "Web API"
Jump to navigation
Jump to 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 | + | *** '''name''' the client you are using. Known values: TmForever |
− | *** version | + | *** '''version''' Version of the client |
− | *** distro | + | *** '''distro''' Unknown. Set to MOLUX or TAHOR |
− | *** lang | + | *** '''lang''' lang of the client, as ISO 639-1 |
− | ** author | + | ** '''author''' |
− | *** login | + | *** '''login''' is not set when calling GetConnectionAndGameParams |
− | *** session | + | *** '''session''' is not set when calling GetConnectionAndGameParams |
− | ** request | + | ** '''request''' |
− | *** name | + | *** '''name''' Name of the requested function. |
− | *** param | + | *** '''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 | + | *** '''n''' The name of the called function |
− | *** c | + | *** '''c''' The return data |
− | ** e | + | ** '''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''' 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 | + | * '''a''' |
− | **b | + | ** '''b''' Full game name (Set to "Trackmania United Forever" for TMNF and TMUF) |
− | **c | + | ** '''c''' Set to "game.trackmaniaforever.com" or "game2.trackmaniaforever.com". Server the client should use to continue talking with the API. |
− | **d | + | ** '''d''' ?. Set to "online_game" |
− | **e | + | ** '''e''' Set to 443. Maybe HTTPS port? |
− | **f | + | ** '''f''' Set to 80. Maybe HTTP port? |
− | **g | + | ** '''g''' Set to "World". Maybe base region? |
− | **h | + | ** '''h''' ?. Set to 1 |
− | **i | + | ** '''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''' Player login. |
− | |||
| | | | ||
− | * | + | * '''e''' Set to 1 if login is used, otherwise 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''' 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
- http://game.trackmaniaforever.com/online_game/request.php
- http://game2.trackmaniaforever.com/online_game/request.php
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.
- game
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.
- r
Functions calls
GetConnectionAndGameParams
First request sent by client.
Auth required? | Parameters | Response |
---|---|---|
No |
|
|
CheckLogin
Used to check if login is already used for account creation.
Auth required? | Parameters | Response |
---|---|---|
No |
|
|
MailAccount
Used to make the server send a password recovery email.
Auth required? | Parameters | Response |
---|---|---|
No |
|
No content is returned. |