# 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.