Line 3: |
Line 3: |
| == Basic concepts == | | == Basic concepts == |
| | | |
− | TrackMania uses a XML-RPC based API to authenticate players, load server lists, load rankings, etc. Below is some documentation about what has been reversed engineered. A lot is still left to be documented, as logged on the [[Web_API/Progress|Progress]] page. | + | TrackMania uses a XML-RPC based protocol to authenticate players, load server lists, load rankings, etc. Below is some documentation about what has been reversed engineered. A lot is still left to be documented, as logged on the [[Web_API/Progress|Progress]] page. |
| | | |
− | The game sends HTTP(s) POST requests to | + | The client sends HTTP(S) POST requests to |
| * [http://game.trackmaniaforever.com/online_game/request.php http://game.trackmaniaforever.com/online_game/request.php] | | * [http://game.trackmaniaforever.com/online_game/request.php http://game.trackmaniaforever.com/online_game/request.php] |
| * [http://game2.trackmaniaforever.com/online_game/request.php http://game2.trackmaniaforever.com/online_game/request.php] | | * [http://game2.trackmaniaforever.com/online_game/request.php http://game2.trackmaniaforever.com/online_game/request.php] |
| * [http://nations.trackmaniaforever.com/online_game/request.php http://nations.trackmaniaforever.com/online_game/request.php] | | * [http://nations.trackmaniaforever.com/online_game/request.php http://nations.trackmaniaforever.com/online_game/request.php] |
− | to communicate with the API, using the headers: <code>User-Agent: GameBox</code> and <code>Accept: */*</code> | + | to communicate with the master server, using the headers: |
| + | User-Agent: GameBox |
| + | Accept: */* |
| + | Content-Type: application/binary |
| + | Connection: Keep-Alive |
| + | Pragma: no-cache |
| | | |
− | === Request === | + | === Request body === |
| <pre> | | <pre> |
| <?xml version="1.0" encoding="UTF-8"?> | | <?xml version="1.0" encoding="UTF-8"?> |
Line 20: |
Line 25: |
| <distro>MOLUX</distro> | | <distro>MOLUX</distro> |
| <lang>fr</lang> | | <lang>fr</lang> |
− | <sd>2011-02-21</sd> <!-- Only sent by server, see below --> | + | <sd>2011-02-21</sd> <!-- Only sent by dedicated server, see below --> |
| </game> | | </game> |
| <author> | | <author> |
Line 43: |
Line 48: |
| *** '''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''' Unknown. Set to MOLUX for TMNF or TAHOR for TMUF. | + | *** '''distro''' Software distribution. E.g. MOLUX for TMNF or ORTIC for TMUF. |
− | *** '''lang''' Language of the client, as ISO 639-1. Server sets it to "xx". | + | *** '''lang''' Language of the client, as ISO 639-1. Dedicated server sets it to "xx". |
− | *** '''sd''' Server release date as YYYY-MM-DD, only sent by server. | + | *** '''sd''' Dedicated Server release date as YYYY-MM-DD, only sent by server. |
| ** '''author''' ''See [[#Author]]''. | | ** '''author''' ''See [[#Author]]''. |
| ** '''request''' | | ** '''request''' |
− | *** '''name''' Name of the requested function. | + | *** '''name''' Name of the remote procedure. |
| *** '''param''' Parameters for the call. | | *** '''param''' Parameters for the call. |
| ** '''auth''' ''Optional. Only seen on Connect and Disconnect''. | | ** '''auth''' ''Optional. Only seen on Connect and Disconnect''. |
Line 54: |
Line 59: |
| | | |
| ==== Author ==== | | ==== Author ==== |
− | The author tag identifies the user sending the request. In this documentation, three cases are possible for the author tag: | + | The author tag identifies the user for whom the request is sent. In this documentation, three cases are possible for the author tag: |
| | | |
| <ul> | | <ul> |
Line 65: |
Line 70: |
| <li>The method requires user name (denoted as "No (Set to 1)"), the author tag is filled with following content: | | <li>The method requires user name (denoted as "No (Set to 1)"), the author tag is filled with following content: |
| <pre> | | <pre> |
− | <login>the user's name</login> | + | <login>the user's login</login> |
| <session>1</session> | | <session>1</session> |
| </pre> | | </pre> |
Line 71: |
Line 76: |
| <li>The method requires authentication (denoted as "Yes"), the author tag is filled with following content: | | <li>The method requires authentication (denoted as "Yes"), the author tag is filled with following content: |
| <pre> | | <pre> |
− | <login>the user's name</login> | + | <login>the user's login</login> |
| <session>the session's id</session> | | <session>the session's id</session> |
| </pre> | | </pre> |
Line 77: |
Line 82: |
| </ul> | | </ul> |
| | | |
− | === Response === | + | === Response body === |
| <pre> | | <pre> |
| <?xml version="1.0" encoding="UTF-8"?> | | <?xml version="1.0" encoding="UTF-8"?> |
Line 95: |
Line 100: |
| * '''r''' | | * '''r''' |
| ** '''r''' | | ** '''r''' |
− | *** '''n''' The name of the called function. | + | *** '''n''' The name of the called procedure. |
− | *** '''c''' The returned data. | + | *** '''c''' The returned content. |
| ** '''e''' A string giving the execution time. | | ** '''e''' A string giving the execution time. |
| | | |