128 lines
3.1 KiB
Markdown
128 lines
3.1 KiB
Markdown
# ddstats-server
|
|
|
|
This server will serve the API needed for DD Stats to work properly.
|
|
|
|
# API Reference
|
|
|
|
## Maps
|
|
|
|
### Map count: `/api/maps/count`
|
|
Returns the total amount of maps.
|
|
|
|
Example output:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"response": 2028
|
|
}
|
|
```
|
|
|
|
### Get specific map: `/api/maps/get/:map`
|
|
Returns the `map` (if found in the database). `map` has to be the full map name **and** URL encoded.
|
|
|
|
Example output (`/api/maps/get/1Hook`):
|
|
```json
|
|
{
|
|
"success": true,
|
|
"response": {
|
|
"_id": "6154a3a3db94330b8f12682e",
|
|
"name": "1Hook",
|
|
"mapper": "Starkiller",
|
|
"release": "2020-11-15T14:00:00.000Z",
|
|
"category": "Race",
|
|
"rating": 5,
|
|
"awardPoints": 10,
|
|
"__v": 0,
|
|
"totalFinishes": 42
|
|
}
|
|
}
|
|
```
|
|
|
|
Example output (`/api/maps/get/1ook`):
|
|
```json
|
|
{
|
|
"success": false,
|
|
"response": "No map found!"
|
|
}
|
|
```
|
|
|
|
### Get all maps: `/api/maps/getAll`
|
|
Returns all maps from the database.
|
|
|
|
### Get a category: `/api/maps/category/:category`
|
|
Returns all maps from `category` from the database.
|
|
|
|
Valid categories:
|
|
- Novice
|
|
- Moderate
|
|
- Brutal
|
|
- Insane
|
|
- Dummy
|
|
- DDMaX
|
|
- Oldschool
|
|
- Solo
|
|
- Race
|
|
- Fun
|
|
|
|
## Players
|
|
|
|
### Player count: `/api/players/count`
|
|
Returns the total amount of players.
|
|
|
|
Example output:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"response": 465362
|
|
}
|
|
```
|
|
|
|
### Get specific player: `/api/players/get/:player`
|
|
Returns the `player` (if found in the database). `player` has to be the full player name **and** URL encoded.
|
|
|
|
Example output (`/api/players/get/Yumiko`):
|
|
```json
|
|
{
|
|
"success": true,
|
|
"response": {
|
|
"_id": "6158a7f96f251f358de0e78e",
|
|
"name": "Yumiko",
|
|
"firstFinish": "2015-07-14T22:52:24.000Z",
|
|
"__v": 0,
|
|
"points": 5944,
|
|
"rankPoints": 356,
|
|
"teamPoints": 171,
|
|
"pointsThisWeek": 257
|
|
}
|
|
}
|
|
```
|
|
|
|
Example output (`/api/players/get/Yumi`):
|
|
```json
|
|
{
|
|
"success": false,
|
|
"response": "No player found!"
|
|
}
|
|
```
|
|
|
|
## Searching
|
|
You can search both for players and maps in a more *advanced* way. You can provide a case-insensitive regex or search term to get all matching entries. This is, however, paginated...
|
|
|
|
- Search for player: `/api/players/search?q=name`
|
|
- Search for map: `/api/maps/search?q=name`
|
|
|
|
### Options (queries)
|
|
These are queries you can use:
|
|
- `q` : [String | RegExp] → This is the actual search term or regex.
|
|
- `sort` : [String = field_name] → This chooses what field to sort by. Some example fields:
|
|
- `name` (player or map)
|
|
- `points` (player)
|
|
- `releaseDate` (map)
|
|
- `order` : [String = asc | desc] → This chooses between ordering it by **asc**ending or **desc**ending order.
|
|
- `page` : [Int = page_num] → This chooses what page to load in.
|
|
- `byMapper` : [Boolean] (only for maps) → Searches by the mapper's name instead of by the map's name.
|
|
|
|
### Examples
|
|
- `/api/players/search?q=Yumiko&sort=points&order=desc` would search for players with `Yumiko` in their names, sort by their points in descending order (the one wiht the most points first).
|
|
- `/api/players/search?q=burnyllama` would search for players with `burnyllama` in their names.
|
|
- `/api/players/search?q=^[0-9]` would search for players with a name begining with a number. |