Back to top

Running With Rifles Stats REST API

Documentation about the Running With Rifles Stats (RWRS) REST API. About RWRS

Getting a Personal Access Token

Although this API is public, a Personal Access Token is required to prevent abuses. To obtain a Personal Access Token:

  1. Create an RWRS account by signing in using your Steam account

  2. Get your Personal Access Token by heading to your settings page

You are required to mention somewhere in your project - in a visible manner - that you’re using the RWRS REST API.

Sending the Personal Access Token

All endpoints needs a valid Personal Access Token, otherwise a 403 HTTP status code will be returned. Send this HTTP header in all of your HTTP requests along your Personal Access Token:

Authorization: Token {Your Personal Access Token}

Base URL

The RWRS REST API base URL is https://rwrstats.com/api.

Using HTTPS is mandatory or you’ll encounter redirections (which may not be appreciated by your HTTP client).

Rate limiting

To prevent abuse, all resources are rate-limited. Each IP address + Personal Access Token couple is limited to 1 request per second. Failing to respect this rate-limiting window will lead to a 429 HTTP status code.

Cache

Some resources are subject to server-side caching (i.e you’ll not necessarily get the most up-to-date data from the server). Check their respective documentation for more information.

HTTP status codes

The HTTP response status code must be used to check if the sent request was successfully handled or not:

  • 2xx Everything is OK. The response body will contain whatever the resource provide (check its doc)

  • 4xx The client made a mistake in its request, typically it’s an input parameter validation error

  • 5xx There were a server error

The RWRS REST API doesn’t provide internal error codes, but tries to make a meaningful use of HTTP status codes instead.

Input & output data format

Everything is JSON along a Content-Type HTTP header of application/json.

Success (2xx)

The output can be different regarding the resource. Check their respective doc.

Client error (4xx)

Typically an input parameters validation error:

{
    "message": {
        "blow": "Missing required parameter in the JSON body",
        "hey": "Missing required parameter in the JSON body"
    }
}

In this case the hey and blow input parameters are missing.

If a query string parameter is missing or invalid, it’s the same output:

{
    "message": {
        "active": "Missing required parameter in the query string"
    }
}

May also happen in other cases like the requested resource wasn’t found:

{
    "message": "This thing does not exists."
}

Server error (5xx)

They should not happen (exception for 503). If so, please get in touch.

Example:

{
    "message": "Error creating this thing: IndexError: out of bounds"
}

Servers

A Server represent a public multiplayer Running With Rifles game.

Servers

Get the list of Servers
GET/servers{?location,map,type,mode,dedicated,ranked,not_empty,not_full,limit}

Return the list of Servers. The list may be optionally filtered by several criteria. These last are taken into account only if it they are present in the query string.

Server-side caching

This resource has a cache lifetime of 1 minute.

Example URI

GET https://rwrstats.com/api/servers?location=continent:eu&map=map10&type=vanilla&mode=COOP&dedicated=true&ranked=true&not_empty=true&not_full=true&limit=10
URI Parameters
HideShow
location
string (optional) Default: any Example: continent:eu

Servers country or continent of residence. This criterion format is either:

  • A concatenation of a location type and a location code, separated by a colon, OR

  • Just a country code OR

  • any

Available location types are:

  • continent

  • country

Available continent codes:

  • af - Africa

  • na - North America

  • oc - Oceania

  • an - Antarctica (who knows!)

  • as - Asia

  • eu - Europe

  • sa - South America

Country code must conform to ISO 3166-1 alpha-2.

map
string (optional) Default: any Example: map10

Servers map ID.

See also this file, part of the RWRS source code, which contains all the RWR maps metadata stored in the JSON format.

Choices: any lobby_2p island1 island2 island3 island4 island5 island6 island7 island8 pvp1 map1 map1_2 map2 map3 map4 map5 map6 map7 map8 map9 map10 map11 map12 map13 map14 map15 rwd_map1 def_dday def_lab viper def_lab_koth

type
string (optional) Default: any Example: vanilla

Servers type (used mod or DLC).

Choices: any vanilla vanilla.winter pvp pacific man_vs_world_mp Running_with_the_Dead overlord_defense lab_defense lab_def_koth viper

mode
string (optional) Default: any Example: COOP

Servers mode (game mode).

Choices: any COOP DOM PvP PvE PvPvE

dedicated
string, number (optional) Example: true

Whether to filter dedicated servers only. true or 1 to enable this filter. false or 0 will be ignored and thus disable this filter.

Choices: true 1 false 0

ranked
string, number (optional) Example: true

Whether to filter official servers only. true or 1 to enable this filter. false or 0 will be ignored and thus disable this filter.

Choices: true 1 false 0

not_empty
string, number (optional) Example: true

Whether to filter non-empty servers only. true or 1 to enable this filter. false or 0 will be ignored and thus disable this filter.

Choices: true 1 false 0

not_full
string, number (optional) Example: true

Whether to filter non-full servers only. true or 1 to enable this filter. false or 0 will be ignored and thus disable this filter.

Choices: true 1 false 0

limit
number (optional) Example: 10

Return the n first servers of the filtered list.

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow

An empty list is returned if no Servers were found.

Headers
Content-Type: application/json
Body
[
  {
    "name": "InvasionEU2",
    "ip": "31.186.250.67",
    "port": 1235,
    "is_ranked": true,
    "website_url": "https://runningwithrifles.com/",
    "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
    "type": {
      "id": "vanilla",
      "name": "Vanilla"
    },
    "mode": {
      "id": "COOP",
      "name": "Coop."
    },
    "database": {
      "id": "invasion",
      "name": "Invasion"
    },
    "map": {
      "id": "map10",
      "name": "Railroad Gap"
    },
    "players": {
      "current": 20,
      "max": 24,
      "free": 4
    },
    "location": {
      "name": "Frankfurt am Main, Germany",
      "country_code": "de",
      "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
    },
    "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
    "event": {
      "name": "PvP event!",
      "is_ongoing": true,
      "starts_at": "2019-04-16T16:00:00+02:00"
    },
    "has_friends": true
  }
]
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "name": {
        "type": "string",
        "description": "Server name"
      },
      "ip": {
        "type": "string",
        "description": "Server IP address"
      },
      "port": {
        "type": "number",
        "description": "Server port"
      },
      "is_ranked": {
        "type": "boolean",
        "description": "Whether this server is an official one"
      },
      "website_url": {
        "type": [
          "string",
          "null"
        ],
        "description": "Server website URL. `null` if none",
        "default": "null"
      },
      "url": {
        "type": "string",
        "description": "RWRS server page URL"
      },
      "type": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Server type ID (used mod or DLC)"
          },
          "name": {
            "type": "string",
            "description": "Server type name (used mod or DLC)"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Server type"
      },
      "mode": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Server mode ID (game mode)"
          },
          "name": {
            "type": "string",
            "description": "Server mode name (game mode)"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Server mode. `null` if unknown"
      },
      "database": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The database ID"
          },
          "name": {
            "type": "string",
            "description": "The database name"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Server used database. `null` if not a ranked (official) server"
      },
      "map": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
          },
          "name": {
            "type": "string",
            "description": "Map name. If unknown, `id` will be used"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Server map"
      },
      "players": {
        "type": "object",
        "properties": {
          "current": {
            "type": "number",
            "description": "Number of current players"
          },
          "max": {
            "type": "number",
            "description": "Maximum allowed number of players"
          },
          "free": {
            "type": "number",
            "description": "Number of free player slots"
          }
        },
        "required": [
          "current",
          "max",
          "free"
        ],
        "description": "Server players"
      },
      "location": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "City name (if available) + country name of the server location"
          },
          "country_code": {
            "type": "string",
            "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
          },
          "flag_image_url": {
            "type": "string",
            "description": "Image URL of the server country location. 24x24 pixels"
          }
        },
        "required": [
          "name",
          "country_code",
          "flag_image_url"
        ],
        "description": "Server location. `null` if unknown"
      },
      "steam_join_url": {
        "type": "string",
        "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
      },
      "event": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Event name"
          },
          "is_ongoing": {
            "type": "boolean",
            "description": "Whether this event is ongoing or not"
          },
          "starts_at": {
            "type": "string",
            "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
          }
        },
        "required": [
          "name",
          "is_ongoing",
          "starts_at"
        ],
        "description": "Event linked to this Server. `null` if none"
      },
      "has_friends": {
        "type": "boolean",
        "description": "Whether there's friends from the current user playing on this server"
      }
    },
    "required": [
      "name",
      "ip",
      "port",
      "is_ranked",
      "url",
      "type",
      "map",
      "players",
      "steam_join_url",
      "has_friends"
    ]
  }
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Server

Get a specific Server
GET/servers/{ip}:{port}

Return the Server corresponding to the given IP address / port couple. This resource returns more information comparing to the GET /servers resource (e.g the player list).

Server-side caching

This resource has a cache lifetime of 1 minute.

Example URI

GET https://rwrstats.com/api/servers/31.186.250.67:1235
URI Parameters
HideShow
ip
string (required) Example: 31.186.250.67

The Server IP

port
integer (required) Example: 1235

The Server port

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "name": "InvasionEU2",
  "ip": "31.186.250.67",
  "port": 1235,
  "is_ranked": true,
  "website_url": "https://runningwithrifles.com/",
  "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
  "type": {
    "id": "vanilla",
    "name": "Vanilla"
  },
  "mode": {
    "id": "COOP",
    "name": "Coop.",
    "name_long": "Cooperation"
  },
  "database": {
    "id": "invasion",
    "name": "Invasion"
  },
  "map": {
    "id": "map10",
    "name": "Railroad Gap",
    "preview_image_url": "https://rwrstats.com/images/maps/preview/vanilla/map10.png",
    "minimap_image_url": "https://rwrstats.com/images/maps/minimap/vanilla/map10.png"
  },
  "players": {
    "current": 20,
    "max": 24,
    "free": 4,
    "list": [
      {
        "username": "EPOCDOTFR",
        "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
        "is_rwrs_creator": true,
        "is_contributor": false,
        "is_rwr_dev": false,
        "is_ranked_servers_admin": false,
        "database": {
          "id": "invasion",
          "name": "Invasion"
        },
        "is_friend": true
      }
    ]
  },
  "location": {
    "name": "Frankfurt am Main, Germany",
    "country_code": "de",
    "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
  },
  "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
  "event": {
    "name": "PvP event!",
    "is_ongoing": true,
    "starts_at": "2019-04-16T16:00:00+02:00"
  },
  "version": "1.70.2",
  "is_dedicated": true,
  "comment": "Coop campaign",
  "bots": 104,
  "banner_image_url": "https://rwrstats.com/images/servers/106.14.208.129-1234.png"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Server name"
    },
    "ip": {
      "type": "string",
      "description": "Server IP address"
    },
    "port": {
      "type": "number",
      "description": "Server port"
    },
    "is_ranked": {
      "type": "boolean",
      "description": "Whether this server is an official one"
    },
    "website_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Server website URL. `null` if none",
      "default": "null"
    },
    "url": {
      "type": "string",
      "description": "RWRS server page URL"
    },
    "type": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Server type ID (used mod or DLC)"
        },
        "name": {
          "type": "string",
          "description": "Server type name (used mod or DLC)"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Server type"
    },
    "mode": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Server mode ID (game mode)"
        },
        "name": {
          "type": "string",
          "description": "Server mode name (game mode)"
        },
        "name_long": {
          "type": [
            "string",
            "null"
          ],
          "description": "Long server mode name (game mode). `null` if unknown",
          "default": "null"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Server mode. `null` if unknown"
    },
    "database": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The database ID"
        },
        "name": {
          "type": "string",
          "description": "The database name"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Server used database. `null` if not a ranked (official) server"
    },
    "map": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
        },
        "name": {
          "type": "string",
          "description": "Map name. If unknown, `id` will be used"
        },
        "preview_image_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Map preview image URL (ingame screenshot). `null` if none available. Size may vary",
          "default": "null"
        },
        "minimap_image_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Mapview image URL. `null` if none available. 2048x2048 pixels",
          "default": "null"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Server map"
    },
    "players": {
      "type": "object",
      "properties": {
        "current": {
          "type": "number",
          "description": "Number of current players"
        },
        "max": {
          "type": "number",
          "description": "Maximum allowed number of players"
        },
        "free": {
          "type": "number",
          "description": "Number of free player slots"
        },
        "list": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "username": {
                "type": "string",
                "description": "Player username"
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
                "default": "null"
              },
              "is_rwrs_creator": {
                "type": "boolean",
                "description": "Whether this player is the creator of RWRS"
              },
              "is_contributor": {
                "type": "boolean",
                "description": "Whether this player contributed in a way or another to RWRS"
              },
              "is_rwr_dev": {
                "type": "boolean",
                "description": "Whether this player is one of the RWR developers"
              },
              "is_ranked_servers_admin": {
                "type": "boolean",
                "description": "Whether this player is admin on ranked (official) servers"
              },
              "database": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The database ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "The database name"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "Player database. `null` if not a ranked (official) player profile"
              },
              "is_friend": {
                "type": "boolean",
                "description": "Whether this player is friend with the current user"
              }
            },
            "required": [
              "username",
              "is_rwrs_creator",
              "is_contributor",
              "is_rwr_dev",
              "is_ranked_servers_admin",
              "is_friend"
            ]
          },
          "description": "List of current players"
        }
      },
      "required": [
        "current",
        "max",
        "free",
        "list"
      ],
      "description": "Server players"
    },
    "location": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "City name (if available) + country name of the server location"
        },
        "country_code": {
          "type": "string",
          "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
        },
        "flag_image_url": {
          "type": "string",
          "description": "Image URL of the server country location. 24x24 pixels"
        }
      },
      "required": [
        "name",
        "country_code",
        "flag_image_url"
      ],
      "description": "Server location. `null` if unknown"
    },
    "steam_join_url": {
      "type": "string",
      "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
    },
    "event": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Event name"
        },
        "is_ongoing": {
          "type": "boolean",
          "description": "Whether this event is ongoing or not"
        },
        "starts_at": {
          "type": "string",
          "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
        }
      },
      "required": [
        "name",
        "is_ongoing",
        "starts_at"
      ],
      "description": "Event linked to this Server. `null` if none"
    },
    "version": {
      "type": "string",
      "description": "Server game version"
    },
    "is_dedicated": {
      "type": "boolean",
      "description": "Whether this server is a dedicated one"
    },
    "comment": {
      "type": [
        "string",
        "null"
      ],
      "description": "Server comment. `null` if none",
      "default": "null"
    },
    "bots": {
      "type": "number",
      "description": "Number of current bots"
    },
    "banner_image_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Server banner image URL. Only available for dedicated servers. 485x95 pixels",
      "default": "null"
    }
  },
  "required": [
    "name",
    "ip",
    "port",
    "is_ranked",
    "website_url",
    "url",
    "type",
    "mode",
    "database",
    "map",
    "players",
    "location",
    "steam_join_url",
    "event",
    "version",
    "is_dedicated",
    "comment",
    "bots",
    "banner_image_url"
  ],
  "additionalProperties": false
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

The Server wasn’t found.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Players

A Player represent an online multiplayer Running With Rifles account on ranked (official) servers.

Important note

Players stats are updated daily and only concerns ranked (official) Invasion and Pacific servers.

Also, stats history is only recorded for the 5000 most experienced players.

Players

Get a list of Players
GET/players/{database}{?start,sort,target,limit}

Return a list of Players (leaderboard). The list may be optionally filtered or sorted.

Server-side caching

This resource has a cache lifetime of 1 hour.

Example URI

GET https://rwrstats.com/api/players/invasion?start=15&sort=rank_progression&target=EPOCDOTFR&limit=25
URI Parameters
HideShow
database
string (required) Example: invasion

The players database.

Choices: invasion pacific

start
integer (optional) Default: 0 Example: 15

Pagination start offset.

Minimum value: 0

sort
string (optional) Default: score Example: rank_progression

The stat value (or column) on which the player list should be sorted.

Choices: username kills deaths score kd time_played longest_kill_streak targets_destroyed vehicles_destroyed soldiers_healed teamkills distance_moved shots_fired throwables_thrown rank_progression

target
string (optional) Example: EPOCDOTFR

A player username that should be highlighted.

limit
integer (optional) Default: 15 Example: 25

Number of players to return.

Minimum value: 1

Maximum value: 100

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "username": "EPOCDOTFR",
    "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
    "is_rwrs_creator": true,
    "is_contributor": false,
    "is_rwr_dev": false,
    "is_ranked_servers_admin": false,
    "database": {
      "id": "invasion",
      "name": "Invasion"
    },
    "is_friend": true,
    "current_server": {
      "name": "InvasionEU2",
      "ip": "31.186.250.67",
      "port": 1235,
      "is_ranked": true,
      "website_url": "https://runningwithrifles.com/",
      "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
      "type": {
        "id": "vanilla",
        "name": "Vanilla"
      },
      "mode": {
        "id": "COOP",
        "name": "Coop."
      },
      "database": {
        "id": "invasion",
        "name": "Invasion"
      },
      "map": {
        "id": "map10",
        "name": "Railroad Gap"
      },
      "players": {
        "current": 20,
        "max": 24,
        "free": 4
      },
      "location": {
        "name": "Frankfurt am Main, Germany",
        "country_code": "de",
        "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
      },
      "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
      "event": {
        "name": "PvP event!",
        "is_ongoing": true,
        "starts_at": "2019-04-16T16:00:00+02:00"
      }
    },
    "stats": {
      "kills": 38689,
      "deaths": 3695,
      "score": 34994,
      "kd_ratio": 10.47,
      "time_played": 640200,
      "longest_kill_streak": 301,
      "targets_destroyed": 633,
      "vehicles_destroyed": 638,
      "soldiers_healed": 31,
      "teamkills": 785,
      "distance_moved": 790.4,
      "shots_fired": 417868,
      "throwables_thrown": 3057,
      "xp": 219921
    },
    "current_rank": {
      "id": 14,
      "name": "Lieutenant General",
      "alternative_name": "Hello, world!",
      "required_xp": 200000,
      "image_url": "https://rwrstats.com/images/ranks/us/14.png",
      "icon_url": "https://rwrstats.com/images/ranks/us/14_icon.png"
    },
    "position": 42
  }
]
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "username": {
        "type": "string",
        "description": "Player username"
      },
      "url": {
        "type": [
          "string",
          "null"
        ],
        "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
        "default": "null"
      },
      "is_rwrs_creator": {
        "type": "boolean",
        "description": "Whether this player is the creator of RWRS"
      },
      "is_contributor": {
        "type": "boolean",
        "description": "Whether this player contributed in a way or another to RWRS"
      },
      "is_rwr_dev": {
        "type": "boolean",
        "description": "Whether this player is one of the RWR developers"
      },
      "is_ranked_servers_admin": {
        "type": "boolean",
        "description": "Whether this player is admin on ranked (official) servers"
      },
      "database": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The database ID"
          },
          "name": {
            "type": "string",
            "description": "The database name"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Player database. `null` if not a ranked (official) player profile"
      },
      "is_friend": {
        "type": "boolean",
        "description": "Whether this player is friend with the current user"
      },
      "current_server": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Server name"
          },
          "ip": {
            "type": "string",
            "description": "Server IP address"
          },
          "port": {
            "type": "number",
            "description": "Server port"
          },
          "is_ranked": {
            "type": "boolean",
            "description": "Whether this server is an official one"
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Server website URL. `null` if none",
            "default": "null"
          },
          "url": {
            "type": "string",
            "description": "RWRS server page URL"
          },
          "type": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Server type ID (used mod or DLC)"
              },
              "name": {
                "type": "string",
                "description": "Server type name (used mod or DLC)"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server type"
          },
          "mode": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Server mode ID (game mode)"
              },
              "name": {
                "type": "string",
                "description": "Server mode name (game mode)"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server mode. `null` if unknown"
          },
          "database": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "The database ID"
              },
              "name": {
                "type": "string",
                "description": "The database name"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server used database. `null` if not a ranked (official) server"
          },
          "map": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
              },
              "name": {
                "type": "string",
                "description": "Map name. If unknown, `id` will be used"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server map"
          },
          "players": {
            "type": "object",
            "properties": {
              "current": {
                "type": "number",
                "description": "Number of current players"
              },
              "max": {
                "type": "number",
                "description": "Maximum allowed number of players"
              },
              "free": {
                "type": "number",
                "description": "Number of free player slots"
              }
            },
            "required": [
              "current",
              "max",
              "free"
            ],
            "description": "Server players"
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "City name (if available) + country name of the server location"
              },
              "country_code": {
                "type": "string",
                "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
              },
              "flag_image_url": {
                "type": "string",
                "description": "Image URL of the server country location. 24x24 pixels"
              }
            },
            "required": [
              "name",
              "country_code",
              "flag_image_url"
            ],
            "description": "Server location. `null` if unknown"
          },
          "steam_join_url": {
            "type": "string",
            "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
          },
          "event": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Event name"
              },
              "is_ongoing": {
                "type": "boolean",
                "description": "Whether this event is ongoing or not"
              },
              "starts_at": {
                "type": "string",
                "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
              }
            },
            "required": [
              "name",
              "is_ongoing",
              "starts_at"
            ],
            "description": "Event linked to this Server. `null` if none"
          }
        },
        "required": [
          "name",
          "ip",
          "port",
          "is_ranked",
          "url",
          "type",
          "map",
          "players",
          "steam_join_url"
        ],
        "description": "Server on which the player is currently playing"
      },
      "stats": {
        "type": "object",
        "properties": {
          "kills": {
            "type": "number",
            "description": "Number of soldiers killed"
          },
          "deaths": {
            "type": "number",
            "description": "Number of times being killed"
          },
          "score": {
            "type": "number",
            "description": "Score as shown in-game (kills minus deaths)"
          },
          "kd_ratio": {
            "type": "number",
            "description": "Kills / deaths ratio. The higher above 1.0, the better"
          },
          "time_played": {
            "type": "number",
            "description": "Number of seconds played online"
          },
          "longest_kill_streak": {
            "type": "number",
            "description": "Maximum number of consecutive kills without a single death"
          },
          "targets_destroyed": {
            "type": "number",
            "description": "Number of structures destroyed (radars, prisons, etc)"
          },
          "vehicles_destroyed": {
            "type": "number",
            "description": "Number of vehicles destroyed"
          },
          "soldiers_healed": {
            "type": "number",
            "description": "Number of soldiers healed"
          },
          "teamkills": {
            "type": "number",
            "description": "Number of friendly soldiers killed"
          },
          "distance_moved": {
            "type": "number",
            "description": "Number of kilometers traveled (includes vehicles use)"
          },
          "shots_fired": {
            "type": "number",
            "description": "Number of bullets fired (includes static weapons, tank turrets, etc)"
          },
          "throwables_thrown": {
            "type": "number",
            "description": "Number of grenades, C4s, etc thrown"
          },
          "xp": {
            "type": "number",
            "description": "Current number of experience points"
          }
        },
        "required": [
          "kills",
          "deaths",
          "score",
          "kd_ratio",
          "time_played",
          "longest_kill_streak",
          "targets_destroyed",
          "vehicles_destroyed",
          "soldiers_healed",
          "teamkills",
          "distance_moved",
          "shots_fired",
          "throwables_thrown",
          "xp"
        ],
        "description": "Player statistics"
      },
      "current_rank": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number",
            "description": "Rank ID"
          },
          "name": {
            "type": "string",
            "description": "Rank name"
          },
          "alternative_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "English rank name if this rank is an IJA one",
            "default": "null"
          },
          "required_xp": {
            "type": "number",
            "description": "Number of experience points this rank requires to be promoted to"
          },
          "image_url": {
            "type": "string",
            "description": "Rank image URL. 64x64 pixels"
          },
          "icon_url": {
            "type": "string",
            "description": "Small rank image URL. 20x20 pixels"
          }
        },
        "required": [
          "id",
          "name",
          "required_xp",
          "image_url",
          "icon_url"
        ],
        "description": "Player current rank"
      },
      "position": {
        "type": "number",
        "description": "Position on the leaderboard"
      }
    },
    "required": [
      "username",
      "is_rwrs_creator",
      "is_contributor",
      "is_rwr_dev",
      "is_ranked_servers_admin",
      "is_friend",
      "stats",
      "current_rank",
      "position"
    ]
  }
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

Only if the target parameter was provided: the given player username doesn’t exist.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Player

Get a specific Player
GET/players/{database}/{username}{?date}

Return the Player corresponding to the given database / player username couple.

Server-side caching

This resource has a cache lifetime of 1 hour.

Example URI

GET https://rwrstats.com/api/players/invasion/EPOCDOTFR?date=2018-11-30
URI Parameters
HideShow
database
string (required) Example: invasion

The player database.

Choices: invasion pacific

username
string (required) Example: EPOCDOTFR

The player username.

date
string (optional) Example: 2018-11-30

ISO 8601 date for which to retrieve the stats for.

Note the player must be part of the 5000 most experienced players for its stats history to be recorded.

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "username": "EPOCDOTFR",
  "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
  "is_rwrs_creator": true,
  "is_contributor": false,
  "is_rwr_dev": false,
  "is_ranked_servers_admin": false,
  "database": {
    "id": "invasion",
    "name": "Invasion"
  },
  "is_friend": true,
  "current_server": {
    "name": "InvasionEU2",
    "ip": "31.186.250.67",
    "port": 1235,
    "is_ranked": true,
    "website_url": "https://runningwithrifles.com/",
    "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
    "type": {
      "id": "vanilla",
      "name": "Vanilla"
    },
    "mode": {
      "id": "COOP",
      "name": "Coop."
    },
    "database": {
      "id": "invasion",
      "name": "Invasion"
    },
    "map": {
      "id": "map10",
      "name": "Railroad Gap"
    },
    "players": {
      "current": 20,
      "max": 24,
      "free": 4
    },
    "location": {
      "name": "Frankfurt am Main, Germany",
      "country_code": "de",
      "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
    },
    "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
    "event": {
      "name": "PvP event!",
      "is_ongoing": true,
      "starts_at": "2019-04-16T16:00:00+02:00"
    }
  },
  "stats": {
    "kills": 38689,
    "deaths": 3695,
    "score": 34994,
    "kd_ratio": 10.47,
    "time_played": 640200,
    "longest_kill_streak": 301,
    "targets_destroyed": 633,
    "vehicles_destroyed": 638,
    "soldiers_healed": 31,
    "teamkills": 785,
    "distance_moved": 790.4,
    "shots_fired": 417868,
    "throwables_thrown": 3057,
    "xp": 219921
  },
  "current_rank": {
    "id": 14,
    "name": "Lieutenant General",
    "alternative_name": "Hello, world!",
    "required_xp": 200000,
    "image_url": "https://rwrstats.com/images/ranks/us/14.png",
    "icon_url": "https://rwrstats.com/images/ranks/us/14_icon.png"
  },
  "next_rank": {
    "id": 14,
    "name": "Lieutenant General",
    "alternative_name": "Hello, world!",
    "required_xp": 200000,
    "image_url": "https://rwrstats.com/images/ranks/us/14.png",
    "icon_url": "https://rwrstats.com/images/ranks/us/14_icon.png"
  },
  "xp_to_next_rank": 280079,
  "xp_percent_completion_to_next_rank": 43.98,
  "date": "2018-11-30",
  "signature_image_url": "https://rwrstats.com/images/players/EPOCDOTFR-invasion.png",
  "promoted_to_rank": {
    "id": 14,
    "name": "Lieutenant General",
    "alternative_name": "Hello, world!",
    "required_xp": 200000,
    "image_url": "https://rwrstats.com/images/ranks/us/14.png",
    "icon_url": "https://rwrstats.com/images/ranks/us/14_icon.png"
  },
  "owner": {
    "id": 56,
    "username": "Epoc",
    "url": "https://rwrstats.com/users/56/epoc",
    "steam_id": 76561198051750940,
    "steam_profile_url": "https://steamcommunity.com/profiles/76561198051750940",
    "small_avatar_url": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/18/18a19ee73965fb3b92f39db8a307df80f5624122.jpg",
    "large_avatar_url": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/18/18a19ee73965fb3b92f39db8a307df80f5624122_full.jpg"
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "Player username"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
      "default": "null"
    },
    "is_rwrs_creator": {
      "type": "boolean",
      "description": "Whether this player is the creator of RWRS"
    },
    "is_contributor": {
      "type": "boolean",
      "description": "Whether this player contributed in a way or another to RWRS"
    },
    "is_rwr_dev": {
      "type": "boolean",
      "description": "Whether this player is one of the RWR developers"
    },
    "is_ranked_servers_admin": {
      "type": "boolean",
      "description": "Whether this player is admin on ranked (official) servers"
    },
    "database": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The database ID"
        },
        "name": {
          "type": "string",
          "description": "The database name"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Player database. `null` if not a ranked (official) player profile"
    },
    "is_friend": {
      "type": "boolean",
      "description": "Whether this player is friend with the current user"
    },
    "current_server": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Server name"
        },
        "ip": {
          "type": "string",
          "description": "Server IP address"
        },
        "port": {
          "type": "number",
          "description": "Server port"
        },
        "is_ranked": {
          "type": "boolean",
          "description": "Whether this server is an official one"
        },
        "website_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Server website URL. `null` if none",
          "default": "null"
        },
        "url": {
          "type": "string",
          "description": "RWRS server page URL"
        },
        "type": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Server type ID (used mod or DLC)"
            },
            "name": {
              "type": "string",
              "description": "Server type name (used mod or DLC)"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server type"
        },
        "mode": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Server mode ID (game mode)"
            },
            "name": {
              "type": "string",
              "description": "Server mode name (game mode)"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server mode. `null` if unknown"
        },
        "database": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "The database ID"
            },
            "name": {
              "type": "string",
              "description": "The database name"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server used database. `null` if not a ranked (official) server"
        },
        "map": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
            },
            "name": {
              "type": "string",
              "description": "Map name. If unknown, `id` will be used"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server map"
        },
        "players": {
          "type": "object",
          "properties": {
            "current": {
              "type": "number",
              "description": "Number of current players"
            },
            "max": {
              "type": "number",
              "description": "Maximum allowed number of players"
            },
            "free": {
              "type": "number",
              "description": "Number of free player slots"
            }
          },
          "required": [
            "current",
            "max",
            "free"
          ],
          "description": "Server players"
        },
        "location": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "City name (if available) + country name of the server location"
            },
            "country_code": {
              "type": "string",
              "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
            },
            "flag_image_url": {
              "type": "string",
              "description": "Image URL of the server country location. 24x24 pixels"
            }
          },
          "required": [
            "name",
            "country_code",
            "flag_image_url"
          ],
          "description": "Server location. `null` if unknown"
        },
        "steam_join_url": {
          "type": "string",
          "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
        },
        "event": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "Event name"
            },
            "is_ongoing": {
              "type": "boolean",
              "description": "Whether this event is ongoing or not"
            },
            "starts_at": {
              "type": "string",
              "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
            }
          },
          "required": [
            "name",
            "is_ongoing",
            "starts_at"
          ],
          "description": "Event linked to this Server. `null` if none"
        }
      },
      "required": [
        "name",
        "ip",
        "port",
        "is_ranked",
        "url",
        "type",
        "map",
        "players",
        "steam_join_url"
      ],
      "description": "Server on which the player is currently playing"
    },
    "stats": {
      "type": "object",
      "properties": {
        "kills": {
          "type": "number",
          "description": "Number of soldiers killed"
        },
        "deaths": {
          "type": "number",
          "description": "Number of times being killed"
        },
        "score": {
          "type": "number",
          "description": "Score as shown in-game (kills minus deaths)"
        },
        "kd_ratio": {
          "type": "number",
          "description": "Kills / deaths ratio. The higher above 1.0, the better"
        },
        "time_played": {
          "type": "number",
          "description": "Number of seconds played online"
        },
        "longest_kill_streak": {
          "type": "number",
          "description": "Maximum number of consecutive kills without a single death"
        },
        "targets_destroyed": {
          "type": "number",
          "description": "Number of structures destroyed (radars, prisons, etc)"
        },
        "vehicles_destroyed": {
          "type": "number",
          "description": "Number of vehicles destroyed"
        },
        "soldiers_healed": {
          "type": "number",
          "description": "Number of soldiers healed"
        },
        "teamkills": {
          "type": "number",
          "description": "Number of friendly soldiers killed"
        },
        "distance_moved": {
          "type": "number",
          "description": "Number of kilometers traveled (includes vehicles use)"
        },
        "shots_fired": {
          "type": "number",
          "description": "Number of bullets fired (includes static weapons, tank turrets, etc)"
        },
        "throwables_thrown": {
          "type": "number",
          "description": "Number of grenades, C4s, etc thrown"
        },
        "xp": {
          "type": "number",
          "description": "Current number of experience points"
        }
      },
      "required": [
        "kills",
        "deaths",
        "score",
        "kd_ratio",
        "time_played",
        "longest_kill_streak",
        "targets_destroyed",
        "vehicles_destroyed",
        "soldiers_healed",
        "teamkills",
        "distance_moved",
        "shots_fired",
        "throwables_thrown",
        "xp"
      ],
      "description": "Player statistics"
    },
    "current_rank": {
      "type": "object",
      "properties": {
        "id": {
          "type": "number",
          "description": "Rank ID"
        },
        "name": {
          "type": "string",
          "description": "Rank name"
        },
        "alternative_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "English rank name if this rank is an IJA one",
          "default": "null"
        },
        "required_xp": {
          "type": "number",
          "description": "Number of experience points this rank requires to be promoted to"
        },
        "image_url": {
          "type": "string",
          "description": "Rank image URL. 64x64 pixels"
        },
        "icon_url": {
          "type": "string",
          "description": "Small rank image URL. 20x20 pixels"
        }
      },
      "required": [
        "id",
        "name",
        "required_xp",
        "image_url",
        "icon_url"
      ],
      "description": "Player current rank"
    },
    "next_rank": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "number",
          "description": "Rank ID"
        },
        "name": {
          "type": "string",
          "description": "Rank name"
        },
        "alternative_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "English rank name if this rank is an IJA one",
          "default": "null"
        },
        "required_xp": {
          "type": "number",
          "description": "Number of experience points this rank requires to be promoted to"
        },
        "image_url": {
          "type": "string",
          "description": "Rank image URL. 64x64 pixels"
        },
        "icon_url": {
          "type": "string",
          "description": "Small rank image URL. 20x20 pixels"
        }
      },
      "required": [
        "id",
        "name",
        "required_xp",
        "image_url",
        "icon_url"
      ],
      "description": "Player next rank (if applicable)"
    },
    "xp_to_next_rank": {
      "type": "number",
      "description": "Number of experience points to gain until the next promotion",
      "default": 0
    },
    "xp_percent_completion_to_next_rank": {
      "type": "number",
      "description": "Percentage of experience points to gain until the next promotion",
      "default": 0
    },
    "date": {
      "type": [
        "string",
        "null"
      ],
      "description": "If not `null`: [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date for which this player date are available for (stats history mode only)",
      "default": "null"
    },
    "signature_image_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Player signature image URL. 387x108 pixels"
    },
    "promoted_to_rank": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "number",
          "description": "Rank ID"
        },
        "name": {
          "type": "string",
          "description": "Rank name"
        },
        "alternative_name": {
          "type": [
            "string",
            "null"
          ],
          "description": "English rank name if this rank is an IJA one",
          "default": "null"
        },
        "required_xp": {
          "type": "number",
          "description": "Number of experience points this rank requires to be promoted to"
        },
        "image_url": {
          "type": "string",
          "description": "Rank image URL. 64x64 pixels"
        },
        "icon_url": {
          "type": "string",
          "description": "Small rank image URL. 20x20 pixels"
        }
      },
      "required": [
        "id",
        "name",
        "required_xp",
        "image_url",
        "icon_url"
      ],
      "description": "If not `null`: rank this player has been promoted to (stats history mode only)"
    },
    "owner": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "number",
          "description": "RWRS user ID"
        },
        "username": {
          "type": "string",
          "description": "The user nickname (as provided by Steam)"
        },
        "url": {
          "type": "string",
          "description": "RWRS user profile page URL"
        },
        "steam_id": {
          "type": "number",
          "description": "SteamID64 of this user"
        },
        "steam_profile_url": {
          "type": "string",
          "description": "URL to this Steam user profile page"
        },
        "small_avatar_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "User small avatar (as provided by Steam). 32x32 pixels",
          "default": "null"
        },
        "large_avatar_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "User large avatar (as provided by Steam). 184x184 pixels",
          "default": "null"
        }
      },
      "required": [
        "id",
        "username",
        "url",
        "steam_id",
        "steam_profile_url"
      ],
      "description": "The RWRS user that owns this RWR account or `null` if this player wasn't claimed by anyone or if the RWRS user has defined its profile as private"
    }
  },
  "required": [
    "username",
    "url",
    "is_rwrs_creator",
    "is_contributor",
    "is_rwr_dev",
    "is_ranked_servers_admin",
    "database",
    "is_friend",
    "current_server",
    "stats",
    "current_rank",
    "next_rank",
    "xp_to_next_rank",
    "xp_percent_completion_to_next_rank",
    "date",
    "signature_image_url",
    "promoted_to_rank",
    "owner"
  ],
  "additionalProperties": false
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

The Player wasn’t found or, only when the date parameter is provided: no stats found for this player (although he’s eligible for stats history).

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  412
HideShow

If the date parameter is provided: the Player isn’t eligible for stats history (5000 most experienced players only).

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Player

Get stats history
GET/players/{database}/{username}/stats-history{?page,limit}

Return stats history corresponding to the given database / player username couple.

Available only for the 5000 most experienced players.

Example URI

GET https://rwrstats.com/api/players/invasion/EPOCDOTFR/stats-history?page=1&limit=25
URI Parameters
HideShow
database
string (required) Example: invasion

The player database.

Choices: invasion pacific

username
string (required) Example: EPOCDOTFR

The player username.

page
integer (optional) Default: 1 Example: 1

Minimum value: 1

limit
integer (optional) Default: 15 Example: 25

Number of stats row to return.

Minimum value: 1

Maximum value: 100

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "kills": 38689,
    "deaths": 3695,
    "score": 34994,
    "kd_ratio": 10.47,
    "time_played": 640200,
    "longest_kill_streak": 301,
    "targets_destroyed": 633,
    "vehicles_destroyed": 638,
    "soldiers_healed": 31,
    "teamkills": 785,
    "distance_moved": 790.4,
    "shots_fired": 417868,
    "throwables_thrown": 3057,
    "xp": 219921,
    "position": 42,
    "date": "2018-11-30",
    "promoted_to_rank": {
      "id": 14,
      "name": "Lieutenant General",
      "alternative_name": "Hello, world!",
      "required_xp": 200000,
      "image_url": "https://rwrstats.com/images/ranks/us/14.png",
      "icon_url": "https://rwrstats.com/images/ranks/us/14_icon.png"
    }
  }
]
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "kills": {
        "type": "number",
        "description": "Number of soldiers killed"
      },
      "deaths": {
        "type": "number",
        "description": "Number of times being killed"
      },
      "score": {
        "type": "number",
        "description": "Score as shown in-game (kills minus deaths)"
      },
      "kd_ratio": {
        "type": "number",
        "description": "Kills / deaths ratio. The higher above 1.0, the better"
      },
      "time_played": {
        "type": "number",
        "description": "Number of seconds played online"
      },
      "longest_kill_streak": {
        "type": "number",
        "description": "Maximum number of consecutive kills without a single death"
      },
      "targets_destroyed": {
        "type": "number",
        "description": "Number of structures destroyed (radars, prisons, etc)"
      },
      "vehicles_destroyed": {
        "type": "number",
        "description": "Number of vehicles destroyed"
      },
      "soldiers_healed": {
        "type": "number",
        "description": "Number of soldiers healed"
      },
      "teamkills": {
        "type": "number",
        "description": "Number of friendly soldiers killed"
      },
      "distance_moved": {
        "type": "number",
        "description": "Number of kilometers traveled (includes vehicles use)"
      },
      "shots_fired": {
        "type": "number",
        "description": "Number of bullets fired (includes static weapons, tank turrets, etc)"
      },
      "throwables_thrown": {
        "type": "number",
        "description": "Number of grenades, C4s, etc thrown"
      },
      "xp": {
        "type": "number",
        "description": "Current number of experience points"
      },
      "position": {
        "type": "number",
        "description": "Position on the leaderboard"
      },
      "date": {
        "type": "string",
        "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when stats have been recorded"
      },
      "promoted_to_rank": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "id": {
            "type": "number",
            "description": "Rank ID"
          },
          "name": {
            "type": "string",
            "description": "Rank name"
          },
          "alternative_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "English rank name if this rank is an IJA one",
            "default": "null"
          },
          "required_xp": {
            "type": "number",
            "description": "Number of experience points this rank requires to be promoted to"
          },
          "image_url": {
            "type": "string",
            "description": "Rank image URL. 64x64 pixels"
          },
          "icon_url": {
            "type": "string",
            "description": "Small rank image URL. 20x20 pixels"
          }
        },
        "required": [
          "id",
          "name",
          "required_xp",
          "image_url",
          "icon_url"
        ],
        "description": "If not `null`: rank this player has been promoted to"
      }
    },
    "required": [
      "kills",
      "deaths",
      "score",
      "kd_ratio",
      "time_played",
      "longest_kill_streak",
      "targets_destroyed",
      "vehicles_destroyed",
      "soldiers_healed",
      "teamkills",
      "distance_moved",
      "shots_fired",
      "throwables_thrown",
      "xp",
      "position"
    ]
  }
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

The Player wasn’t found.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  412
HideShow

The Player isn’t eligible for stats history (5000 most experienced players only).

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Friends

A Friend is an online multiplayer Running With Rifles account which is existing in the current user’s friends list.

Friends

Get the Friends list
GET/friends

Return the list of Friends for the current user, ordered by username.

Example URI

GET https://rwrstats.com/api/friends
Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
[
  {
    "username": "EPOCDOTFR",
    "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
    "is_rwrs_creator": true,
    "is_contributor": false,
    "is_rwr_dev": false,
    "is_ranked_servers_admin": false,
    "database": {
      "id": "invasion",
      "name": "Invasion"
    },
    "current_server": {
      "name": "InvasionEU2",
      "ip": "31.186.250.67",
      "port": 1235,
      "is_ranked": true,
      "website_url": "https://runningwithrifles.com/",
      "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
      "type": {
        "id": "vanilla",
        "name": "Vanilla"
      },
      "mode": {
        "id": "COOP",
        "name": "Coop."
      },
      "database": {
        "id": "invasion",
        "name": "Invasion"
      },
      "map": {
        "id": "map10",
        "name": "Railroad Gap"
      },
      "players": {
        "current": 20,
        "max": 24,
        "free": 4
      },
      "location": {
        "name": "Frankfurt am Main, Germany",
        "country_code": "de",
        "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
      },
      "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
      "event": {
        "name": "PvP event!",
        "is_ongoing": true,
        "starts_at": "2019-04-16T16:00:00+02:00"
      }
    },
    "friend_since": "2019-02-22T10:46:00+00:00"
  }
]
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "username": {
        "type": "string",
        "description": "Player username"
      },
      "url": {
        "type": [
          "string",
          "null"
        ],
        "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
        "default": "null"
      },
      "is_rwrs_creator": {
        "type": "boolean",
        "description": "Whether this player is the creator of RWRS"
      },
      "is_contributor": {
        "type": "boolean",
        "description": "Whether this player contributed in a way or another to RWRS"
      },
      "is_rwr_dev": {
        "type": "boolean",
        "description": "Whether this player is one of the RWR developers"
      },
      "is_ranked_servers_admin": {
        "type": "boolean",
        "description": "Whether this player is admin on ranked (official) servers"
      },
      "database": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The database ID"
          },
          "name": {
            "type": "string",
            "description": "The database name"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "description": "Player database. `null` if not a ranked (official) player profile"
      },
      "current_server": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Server name"
          },
          "ip": {
            "type": "string",
            "description": "Server IP address"
          },
          "port": {
            "type": "number",
            "description": "Server port"
          },
          "is_ranked": {
            "type": "boolean",
            "description": "Whether this server is an official one"
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Server website URL. `null` if none",
            "default": "null"
          },
          "url": {
            "type": "string",
            "description": "RWRS server page URL"
          },
          "type": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Server type ID (used mod or DLC)"
              },
              "name": {
                "type": "string",
                "description": "Server type name (used mod or DLC)"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server type"
          },
          "mode": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "Server mode ID (game mode)"
              },
              "name": {
                "type": "string",
                "description": "Server mode name (game mode)"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server mode. `null` if unknown"
          },
          "database": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "The database ID"
              },
              "name": {
                "type": "string",
                "description": "The database name"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server used database. `null` if not a ranked (official) server"
          },
          "map": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
              },
              "name": {
                "type": "string",
                "description": "Map name. If unknown, `id` will be used"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Server map"
          },
          "players": {
            "type": "object",
            "properties": {
              "current": {
                "type": "number",
                "description": "Number of current players"
              },
              "max": {
                "type": "number",
                "description": "Maximum allowed number of players"
              },
              "free": {
                "type": "number",
                "description": "Number of free player slots"
              }
            },
            "required": [
              "current",
              "max",
              "free"
            ],
            "description": "Server players"
          },
          "location": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "City name (if available) + country name of the server location"
              },
              "country_code": {
                "type": "string",
                "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
              },
              "flag_image_url": {
                "type": "string",
                "description": "Image URL of the server country location. 24x24 pixels"
              }
            },
            "required": [
              "name",
              "country_code",
              "flag_image_url"
            ],
            "description": "Server location. `null` if unknown"
          },
          "steam_join_url": {
            "type": "string",
            "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
          },
          "event": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Event name"
              },
              "is_ongoing": {
                "type": "boolean",
                "description": "Whether this event is ongoing or not"
              },
              "starts_at": {
                "type": "string",
                "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
              }
            },
            "required": [
              "name",
              "is_ongoing",
              "starts_at"
            ],
            "description": "Event linked to this Server. `null` if none"
          }
        },
        "required": [
          "name",
          "ip",
          "port",
          "is_ranked",
          "url",
          "type",
          "map",
          "players",
          "steam_join_url"
        ],
        "description": "Server on which the player is currently playing"
      },
      "friend_since": {
        "type": "string",
        "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date / time since the current user is friend with this player"
      }
    },
    "required": [
      "username",
      "is_rwrs_creator",
      "is_contributor",
      "is_rwr_dev",
      "is_ranked_servers_admin",
      "friend_since"
    ]
  }
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Add a new Friend
POST/friends

Add the given player to the current user’s friends list.

Example URI

POST https://rwrstats.com/api/friends
Request
HideShow
Headers
Content-Type: application/json
Authorization: Token {Your Personal Access Token}
Body
{
  "username": "EPOCDOTFR"
}
Response  201
HideShow
Headers
Content-Type: application/json
Body
{
  "username": "EPOCDOTFR",
  "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
  "is_rwrs_creator": true,
  "is_contributor": false,
  "is_rwr_dev": false,
  "is_ranked_servers_admin": false,
  "database": {
    "id": "invasion",
    "name": "Invasion"
  },
  "current_server": {
    "name": "InvasionEU2",
    "ip": "31.186.250.67",
    "port": 1235,
    "is_ranked": true,
    "website_url": "https://runningwithrifles.com/",
    "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
    "type": {
      "id": "vanilla",
      "name": "Vanilla"
    },
    "mode": {
      "id": "COOP",
      "name": "Coop."
    },
    "database": {
      "id": "invasion",
      "name": "Invasion"
    },
    "map": {
      "id": "map10",
      "name": "Railroad Gap"
    },
    "players": {
      "current": 20,
      "max": 24,
      "free": 4
    },
    "location": {
      "name": "Frankfurt am Main, Germany",
      "country_code": "de",
      "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
    },
    "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
    "event": {
      "name": "PvP event!",
      "is_ongoing": true,
      "starts_at": "2019-04-16T16:00:00+02:00"
    }
  },
  "friend_since": "2019-02-22T10:46:00+00:00"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "Player username"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
      "default": "null"
    },
    "is_rwrs_creator": {
      "type": "boolean",
      "description": "Whether this player is the creator of RWRS"
    },
    "is_contributor": {
      "type": "boolean",
      "description": "Whether this player contributed in a way or another to RWRS"
    },
    "is_rwr_dev": {
      "type": "boolean",
      "description": "Whether this player is one of the RWR developers"
    },
    "is_ranked_servers_admin": {
      "type": "boolean",
      "description": "Whether this player is admin on ranked (official) servers"
    },
    "database": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The database ID"
        },
        "name": {
          "type": "string",
          "description": "The database name"
        }
      },
      "required": [
        "id",
        "name"
      ],
      "description": "Player database. `null` if not a ranked (official) player profile"
    },
    "current_server": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Server name"
        },
        "ip": {
          "type": "string",
          "description": "Server IP address"
        },
        "port": {
          "type": "number",
          "description": "Server port"
        },
        "is_ranked": {
          "type": "boolean",
          "description": "Whether this server is an official one"
        },
        "website_url": {
          "type": [
            "string",
            "null"
          ],
          "description": "Server website URL. `null` if none",
          "default": "null"
        },
        "url": {
          "type": "string",
          "description": "RWRS server page URL"
        },
        "type": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Server type ID (used mod or DLC)"
            },
            "name": {
              "type": "string",
              "description": "Server type name (used mod or DLC)"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server type"
        },
        "mode": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "Server mode ID (game mode)"
            },
            "name": {
              "type": "string",
              "description": "Server mode name (game mode)"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server mode. `null` if unknown"
        },
        "database": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "id": {
              "type": "string",
              "description": "The database ID"
            },
            "name": {
              "type": "string",
              "description": "The database name"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server used database. `null` if not a ranked (official) server"
        },
        "map": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
            },
            "name": {
              "type": "string",
              "description": "Map name. If unknown, `id` will be used"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "description": "Server map"
        },
        "players": {
          "type": "object",
          "properties": {
            "current": {
              "type": "number",
              "description": "Number of current players"
            },
            "max": {
              "type": "number",
              "description": "Maximum allowed number of players"
            },
            "free": {
              "type": "number",
              "description": "Number of free player slots"
            }
          },
          "required": [
            "current",
            "max",
            "free"
          ],
          "description": "Server players"
        },
        "location": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "City name (if available) + country name of the server location"
            },
            "country_code": {
              "type": "string",
              "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
            },
            "flag_image_url": {
              "type": "string",
              "description": "Image URL of the server country location. 24x24 pixels"
            }
          },
          "required": [
            "name",
            "country_code",
            "flag_image_url"
          ],
          "description": "Server location. `null` if unknown"
        },
        "steam_join_url": {
          "type": "string",
          "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
        },
        "event": {
          "type": [
            "object",
            "null"
          ],
          "properties": {
            "name": {
              "type": "string",
              "description": "Event name"
            },
            "is_ongoing": {
              "type": "boolean",
              "description": "Whether this event is ongoing or not"
            },
            "starts_at": {
              "type": "string",
              "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
            }
          },
          "required": [
            "name",
            "is_ongoing",
            "starts_at"
          ],
          "description": "Event linked to this Server. `null` if none"
        }
      },
      "required": [
        "name",
        "ip",
        "port",
        "is_ranked",
        "url",
        "type",
        "map",
        "players",
        "steam_join_url"
      ],
      "description": "Server on which the player is currently playing"
    },
    "friend_since": {
      "type": "string",
      "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date / time since the current user is friend with this player"
    }
  },
  "required": [
    "username",
    "url",
    "is_rwrs_creator",
    "is_contributor",
    "is_rwr_dev",
    "is_ranked_servers_admin",
    "database",
    "current_server",
    "friend_since"
  ],
  "additionalProperties": false
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  412
HideShow

The given player is already friend with the current user.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Friend

Remove a Friend
DELETE/friends/{username}

Remove the given player from the current user’s friends list.

Example URI

DELETE https://rwrstats.com/api/friends/EPOCDOTFR
URI Parameters
HideShow
username
string (required) Example: EPOCDOTFR

The player username.

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  204
HideShow
Headers
Content-Type: application/json
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

The given player isn’t friend with the current user.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Users

A User represent a RWRS user, created after the User signed-in via Steam.

User

Get a specific User
GET/users/{user_id}

Return the User corresponding to the given RWRS user ID.

Example URI

GET https://rwrstats.com/api/users/56
URI Parameters
HideShow
user_id
number (required) Example: 56

The RWRS user ID.

Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "id": 56,
  "username": "Epoc",
  "url": "https://rwrstats.com/users/56/epoc",
  "steam_id": 76561198051750940,
  "steam_profile_url": "https://steamcommunity.com/profiles/76561198051750940",
  "small_avatar_url": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/18/18a19ee73965fb3b92f39db8a307df80f5624122.jpg",
  "large_avatar_url": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/18/18a19ee73965fb3b92f39db8a307df80f5624122_full.jpg",
  "registered_at": "2019-02-22T10:46:00+00:00",
  "country": {
    "name": "France",
    "code": "fr",
    "flag_image_url": "https://rwrstats.com/images/flags/FR.png"
  },
  "accounts": [
    {
      "username": "EPOCDOTFR",
      "url": "https://rwrstats.com/players/invasion/EPOCDOTFR",
      "is_rwrs_creator": true,
      "is_contributor": false,
      "is_rwr_dev": false,
      "is_ranked_servers_admin": false,
      "database": {
        "id": "invasion",
        "name": "Invasion"
      },
      "is_friend": true,
      "current_server": {
        "name": "InvasionEU2",
        "ip": "31.186.250.67",
        "port": 1235,
        "is_ranked": true,
        "website_url": "https://runningwithrifles.com/",
        "url": "https://rwrstats.com/servers/31.186.250.67:1235/invasioneu2",
        "type": {
          "id": "vanilla",
          "name": "Vanilla"
        },
        "mode": {
          "id": "COOP",
          "name": "Coop."
        },
        "database": {
          "id": "invasion",
          "name": "Invasion"
        },
        "map": {
          "id": "map10",
          "name": "Railroad Gap"
        },
        "players": {
          "current": 20,
          "max": 24,
          "free": 4
        },
        "location": {
          "name": "Frankfurt am Main, Germany",
          "country_code": "de",
          "flag_image_url": "https://rwrstats.com/images/flags/DE.png"
        },
        "steam_join_url": "steam://rungameid/270150//server_address=178.32.58.160 server_port=1240",
        "event": {
          "name": "PvP event!",
          "is_ongoing": true,
          "starts_at": "2019-04-16T16:00:00+02:00"
        }
      }
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "id": {
      "type": "number",
      "description": "RWRS user ID"
    },
    "username": {
      "type": "string",
      "description": "The user nickname (as provided by Steam)"
    },
    "url": {
      "type": "string",
      "description": "RWRS user profile page URL"
    },
    "steam_id": {
      "type": "number",
      "description": "SteamID64 of this user"
    },
    "steam_profile_url": {
      "type": "string",
      "description": "URL to this Steam user profile page"
    },
    "small_avatar_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "User small avatar (as provided by Steam). 32x32 pixels",
      "default": "null"
    },
    "large_avatar_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "User large avatar (as provided by Steam). 184x184 pixels",
      "default": "null"
    },
    "registered_at": {
      "type": "string",
      "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date / time when user registered on RWRS"
    },
    "country": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "User country name"
        },
        "code": {
          "type": "string",
          "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) user country code"
        },
        "flag_image_url": {
          "type": "string",
          "description": "Image URL of the user country. 24x24 pixels"
        }
      },
      "required": [
        "name",
        "code",
        "flag_image_url"
      ],
      "description": "If not `null`: user country (as provided by Steam)"
    },
    "accounts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Player username"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "RWRS player profile page URL. `null` if the player isn't a ranked profile",
            "default": "null"
          },
          "is_rwrs_creator": {
            "type": "boolean",
            "description": "Whether this player is the creator of RWRS"
          },
          "is_contributor": {
            "type": "boolean",
            "description": "Whether this player contributed in a way or another to RWRS"
          },
          "is_rwr_dev": {
            "type": "boolean",
            "description": "Whether this player is one of the RWR developers"
          },
          "is_ranked_servers_admin": {
            "type": "boolean",
            "description": "Whether this player is admin on ranked (official) servers"
          },
          "database": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "description": "The database ID"
              },
              "name": {
                "type": "string",
                "description": "The database name"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "description": "Player database. `null` if not a ranked (official) player profile"
          },
          "is_friend": {
            "type": "boolean",
            "description": "Whether this player is friend with the current user"
          },
          "current_server": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Server name"
              },
              "ip": {
                "type": "string",
                "description": "Server IP address"
              },
              "port": {
                "type": "number",
                "description": "Server port"
              },
              "is_ranked": {
                "type": "boolean",
                "description": "Whether this server is an official one"
              },
              "website_url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Server website URL. `null` if none",
                "default": "null"
              },
              "url": {
                "type": "string",
                "description": "RWRS server page URL"
              },
              "type": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Server type ID (used mod or DLC)"
                  },
                  "name": {
                    "type": "string",
                    "description": "Server type name (used mod or DLC)"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "Server type"
              },
              "mode": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Server mode ID (game mode)"
                  },
                  "name": {
                    "type": "string",
                    "description": "Server mode name (game mode)"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "Server mode. `null` if unknown"
              },
              "database": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The database ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "The database name"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "Server used database. `null` if not a ranked (official) server"
              },
              "map": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "Map ID. **Not unique**: must be used in conjonction of the mode ID"
                  },
                  "name": {
                    "type": "string",
                    "description": "Map name. If unknown, `id` will be used"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "description": "Server map"
              },
              "players": {
                "type": "object",
                "properties": {
                  "current": {
                    "type": "number",
                    "description": "Number of current players"
                  },
                  "max": {
                    "type": "number",
                    "description": "Maximum allowed number of players"
                  },
                  "free": {
                    "type": "number",
                    "description": "Number of free player slots"
                  }
                },
                "required": [
                  "current",
                  "max",
                  "free"
                ],
                "description": "Server players"
              },
              "location": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "City name (if available) + country name of the server location"
                  },
                  "country_code": {
                    "type": "string",
                    "description": "[ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code of the server location"
                  },
                  "flag_image_url": {
                    "type": "string",
                    "description": "Image URL of the server country location. 24x24 pixels"
                  }
                },
                "required": [
                  "name",
                  "country_code",
                  "flag_image_url"
                ],
                "description": "Server location. `null` if unknown"
              },
              "steam_join_url": {
                "type": "string",
                "description": "[Steam browser protocol](https://developer.valvesoftware.com/wiki/Steam_browser_protocol) URL to be used to load Running With Rifles onto the given server lobby screen"
              },
              "event": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Event name"
                  },
                  "is_ongoing": {
                    "type": "boolean",
                    "description": "Whether this event is ongoing or not"
                  },
                  "starts_at": {
                    "type": "string",
                    "description": "[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date when this event will start"
                  }
                },
                "required": [
                  "name",
                  "is_ongoing",
                  "starts_at"
                ],
                "description": "Event linked to this Server. `null` if none"
              }
            },
            "required": [
              "name",
              "ip",
              "port",
              "is_ranked",
              "url",
              "type",
              "map",
              "players",
              "steam_join_url"
            ],
            "description": "Server on which the player is currently playing"
          }
        },
        "required": [
          "username",
          "is_rwrs_creator",
          "is_contributor",
          "is_rwr_dev",
          "is_ranked_servers_admin",
          "is_friend"
        ]
      },
      "description": "List of linked RWR accounts"
    }
  },
  "required": [
    "id",
    "username",
    "url",
    "steam_id",
    "steam_profile_url",
    "small_avatar_url",
    "large_avatar_url",
    "registered_at",
    "country",
    "accounts"
  ],
  "additionalProperties": false
}
Response  400
HideShow

One or more arguments are (is) invalid. Check the error message(s) for more information.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  404
HideShow

The User wasn’t found, or its profile is set as private.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Misc

Miscellanous resources.

Live counters

Get live counters
GET/live-counters

Return the current number of players (total / online) and servers (total / active).

Server-side caching

This resource has a cache lifetime of 1 minute.

Example URI

GET https://rwrstats.com/api/live-counters
Request
HideShow
Headers
Authorization: Token {Your Personal Access Token}
Response  200
HideShow
Headers
Content-Type: application/json
Body
{
  "players": {
    "total": 85,
    "online": 32,
    "friends_online": 12
  },
  "servers": {
    "total": 22,
    "active": 7
  }
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "players": {
      "type": "object",
      "properties": {
        "total": {
          "type": "number",
          "description": "Total number of people playing RWR"
        },
        "online": {
          "type": "number",
          "description": "Number of people playing RWR multiplayer online"
        },
        "friends_online": {
          "type": "number",
          "description": "Number of current user's friends playing RWR multiplayer online"
        }
      },
      "required": [
        "total",
        "online",
        "friends_online"
      ],
      "description": "Player counts"
    },
    "servers": {
      "type": "object",
      "properties": {
        "total": {
          "type": "number",
          "description": "Total number of public RWR servers"
        },
        "active": {
          "type": "number",
          "description": "Number of active (non-empty) public RWR servers"
        }
      },
      "required": [
        "total",
        "active"
      ],
      "description": "Player counts"
    }
  },
  "required": [
    "players",
    "servers"
  ],
  "additionalProperties": false
}
Response  403
HideShow

Invalid Personal Access Token or Personal Access Token not provided.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}
Response  503
HideShow

Maintenance in progress.

Headers
Content-Type: application/json
Body
{
  "message": "Example error message"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "description": "The error message explaining what happened"
    }
  },
  "required": [
    "message"
  ],
  "additionalProperties": false
}

Generated by aglio on 22 May 2019