-
Notifications
You must be signed in to change notification settings - Fork 13
There's a simple JSON API to create and stop reservations. It typically returns a prefilled JSON response, which you can edit and send to one of the URLs listed in the "actions".
All requests should have the API key as the HTTP request parameter api_key or as a request header Authorization: Token token=api-token-here. Donators can find the API key in their settings page, or you can contact me to get yours.
curl -X GET -H "Content-Type: application/json" 'http://serveme.tf/api/reservations/new?api_key=your_api_key'This will return a prefilled JSON response, which you can POST to the action "find_servers"
{
"reservation": {
"starts_at":"2014-04-13T18:00:20.415+02:00",
"ends_at":"2014-04-13T20:00:20.415+02:00"
},
"actions": {
"find_servers": "http://serveme.tf/api/reservations/find_servers"
}
}
POST a reservation with starts_at and ends_at filled in to find_servers.
curl -X POST -H "Content-Type: application/json" -d '{"reservation":{"starts_at":"2014-04-13T18:00:20.415+02:00","ends_at":"2014-04-13T20:00:20.415+02:00"}}' 'http://serveme.tf/api/reservations/find_servers?api_key=your_api_key'This will return a prefilled JSON response with available servers, whitelists and server configs included:
{
"reservation": {
"starts_at": "2014-04-13T18:00:20.415+02:00",
"ends_at": "2014-04-13T20:00:20.415+02:00",
"server_id": null,
"password": null,
"rcon": null,
"first_map": null,
"tv_password": "tv",
"tv_relaypassword": "tv",
"server_config_id": null,
"whitelist_id": null,
"custom_whitelist_id": null,
"auto_end": true
},
"servers": [
{
"id": 64,
"name": "FritzBrigade #10",
"location": {
"id": 8,
"name": "Germany",
"flag": "de"
}
}
],
"server_configs": [
{
"id": 2,
"file": "etf2l_6v6"
},
{
"id": 3,
"file": "etf2l_9v9"
}
],
"whitelists": [
{
"id": 2,
"file": "etf2l_whitelist_6v6.txt"
},
{
"id": 3,
"file": "etf2l_whitelist_9v9.txt"
}
],
"actions": {
"create": "http://serveme.tf/api/reservations"
}
}
POST a complete reservation to the "create" action
curl -X POST -H "Content-Type: application/json" -d '{"reservation":{"starts_at":"2014-04-13T18:00:20.415+02:00","ends_at":"2014-04-13T20:00:20.415+02:00","rcon":"foo","password":"bar","server_id":1337}}' 'http://serveme.tf/api/reservations?api_key=your_api_key'If there's any errors, you'll get a HTTP 400 and a new prefilled reservation JSON with errors:
{
"reservation": {
"starts_at": "2014-04-13T18:00:20.415+02:00",
"ends_at": "2014-04-13T20:00:20.415+02:00",
"server_id": null,
"password": "bar",
"rcon": "foo",
"first_map": null,
"tv_password": "tv",
"tv_relaypassword": "tv",
"server_config_id": null,
"whitelist_id": null,
"custom_whitelist_id": null,
"auto_end": true,
"errors": {
"server": {
"error": "can't be blank"
},
"starts_at": {
"error": "can't be more than 15 minutes in the past"
}
}
},
"actions": {
"create": "http://serveme.tf/api/reservations"
},
"servers": [
{
"id": 64,
"name": "FritzBrigade #10",
"flag": "de"
}
],
"server_configs": [
{
"id": 19,
"file": "wptf2l"
}
],
"whitelists": [
{
"id": 9,
"file": "wp9v9_whitelist.txt"
}
]
}
If everything went alright, you'll get a HTTP 200 and shown your reservation details:
{
"reservation": {
"starts_at": "2014-04-13T19:00:20.415+02:00",
"ends_at": "2014-04-13T20:00:20.415+02:00",
"server_id": 64,
"password": "bar",
"rcon": "foo",
"first_map": null,
"tv_password": "tv",
"tv_relaypassword": "tv",
"server_config_id": null,
"whitelist_id": null,
"custom_whitelist_id": null,
"auto_end": true,
"id": 12345,
"last_number_of_players": 0,
"inactive_minute_counter": 0,
"logsecret": 298424416816498481223654962917404607282,
"start_instantly": false,
"end_instantly": false,
"server": {
"name": "Server name",
"ip_and_port": "127.0.0.1:27015"
},
"errors": {}
},
"actions": {
"delete": "http://serveme.tf/api/reservations/12345"
}
}
After the match is over, you can end your reservation
First, you can check your reservation details:
curl -X GET -H "Content-Type: application/json" 'http://serveme.tf/api/reservations/12345?api_key=your_api_key'This JSON response will tell you if the reservation hasn't ended by itself already with the "ended" boolean. If you want to end it yourself, you need to send a HTTP DELETE to the "delete" action URL:
curl -X DELETE -H "Content-Type: application/json" 'http://serveme.tf/api/reservations/12345?api_key=your_api_key'The "delete" action will respond with a 204 if the reservation was deleted before it was started, else it will respond with a 200 and the reservation's information.