diff --git a/api.md b/api.md
deleted file mode 100644
index 976d629..0000000
--- a/api.md
+++ /dev/null
@@ -1,526 +0,0 @@
-
-
-
Personal Web Services API v1.0.0
-
-> Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
-
-Documentation for various web services hosted under mono.exhq.dev
-
-Discord Lookup
-
-Discord user information lookup service
-
-## Look up Discord user information
-
-`GET /v1/user/{userId}`
-
-Retrieves information about a Discord user using their ID
-
-
-
-|Name|In|Type|Required|Description|
-|---|---|---|---|---|
-|userId|path|string|true|none|
-
-> Example responses
-
-> 200 Response
-
-```json
-{
- "id": "712639419785412668",
- "created_at": "2020-05-20T12:14:37.877Z",
- "username": "exhq",
- "avatar": {
- "id": "93dd1fc1629fb1ec652c68203af4f3f1",
- "link": "https://cdn.discordapp.com/avatars/712639419785412668/93dd1fc1629fb1ec652c68203af4f3f1",
- "is_animated": false
- },
- "avatar_decoration": null,
- "badges": [
- "HOUSE_BALANCE"
- ],
- "accent_color": null,
- "global_name": "ECHO 🐈",
- "banner": {
- "id": null,
- "link": null,
- "is_animated": false,
- "color": null
- },
- "raw": {
- "id": "712639419785412668",
- "username": "exhq",
- "avatar": "93dd1fc1629fb1ec652c68203af4f3f1",
- "discriminator": "0",
- "public_flags": 256,
- "flags": 256,
- "banner": null,
- "accent_color": null,
- "global_name": "ECHO 🐈",
- "avatar_decoration_data": null,
- "banner_color": null,
- "clan": null
- }
-}
-```
-
-
-
-|Status|Meaning|Description|Schema|
-|---|---|---|---|
-|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Successful response with user information|[DiscordUser](#schemadiscorduser)|
-
-
-This operation does not require authentication
-
-
-Review System
-
-Backend review system for website
-
-## Get reviews
-
-`GET /getreviews`
-
-Retrieves reviews from the backend review system
-
-> Example responses
-
-> 200 Response
-
-```json
-[
- {
- "reviewID": 1,
- "discordID": "712653921692155965",
- "reviewText": "meow",
- "timestamp": "1708902649485"
- }
-]
-```
-
-Responses
-
-|Status|Meaning|Description|Schema|
-|---|---|---|---|
-|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Successful response with reviews|Inline|
-
-Response Schema
-
-Status Code **200**
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|*anonymous*|[[Review](#schemareview)]|false|none|none|
-|» reviewID|integer|false|none|none|
-|» discordID|string|false|none|none|
-|» reviewText|string|false|none|none|
-|» timestamp|string|false|none|none|
-
-
-This operation does not require authentication
-
-
-Song Link Cache
-
-Cached proxy for song.link API
-
-## Get cached song.link data
-
-`GET /`
-
-Cached proxy for song.link API responses with CORS support
-
-Parameters
-
-|Name|In|Type|Required|Description|
-|---|---|---|---|---|
-|url|query|string|true|Encoded song URL or identifier|
-
-> Example responses
-
-> 200 Response
-
-```json
-{
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "userCountry": "US",
- "pageUrl": "https://song.link/s/6BJHsLiE47Sk0wQkuppqhr",
- "entitiesByUniqueId": {
- "property1": {
- "id": "6BJHsLiE47Sk0wQkuppqhr",
- "type": "song",
- "title": "From the Start",
- "artistName": "Good Kid",
- "thumbnailUrl": "https://i.scdn.co/image/ab67616d0000b273e67835d0a5d81fa4f268b513",
- "thumbnailWidth": 640,
- "thumbnailHeight": 640,
- "apiProvider": "spotify",
- "platforms": [
- "spotify"
- ]
- },
- "property2": {
- "id": "6BJHsLiE47Sk0wQkuppqhr",
- "type": "song",
- "title": "From the Start",
- "artistName": "Good Kid",
- "thumbnailUrl": "https://i.scdn.co/image/ab67616d0000b273e67835d0a5d81fa4f268b513",
- "thumbnailWidth": 640,
- "thumbnailHeight": 640,
- "apiProvider": "spotify",
- "platforms": [
- "spotify"
- ]
- }
- },
- "linksByPlatform": {
- "property1": {
- "country": "US",
- "url": "https://open.spotify.com/track/6BJHsLiE47Sk0wQkuppqhr",
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriMobile": "spotify:track:6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriDesktop": "spotify:track:6BJHsLiE47Sk0wQkuppqhr"
- },
- "property2": {
- "country": "US",
- "url": "https://open.spotify.com/track/6BJHsLiE47Sk0wQkuppqhr",
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriMobile": "spotify:track:6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriDesktop": "spotify:track:6BJHsLiE47Sk0wQkuppqhr"
- }
- }
-}
-```
-
-Responses
-
-|Status|Meaning|Description|Schema|
-|---|---|---|---|
-|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|Cached song.link response|[SongLinkResponse](#schemasonglinkresponse)|
-
-
-This operation does not require authentication
-
-
-# Schemas
-
-DiscordUser
-
-
-
-
-
-
-```json
-{
- "id": "712639419785412668",
- "created_at": "2020-05-20T12:14:37.877Z",
- "username": "exhq",
- "avatar": {
- "id": "93dd1fc1629fb1ec652c68203af4f3f1",
- "link": "https://cdn.discordapp.com/avatars/712639419785412668/93dd1fc1629fb1ec652c68203af4f3f1",
- "is_animated": false
- },
- "avatar_decoration": null,
- "badges": [
- "HOUSE_BALANCE"
- ],
- "accent_color": null,
- "global_name": "ECHO 🐈",
- "banner": {
- "id": null,
- "link": null,
- "is_animated": false,
- "color": null
- },
- "raw": {
- "id": "712639419785412668",
- "username": "exhq",
- "avatar": "93dd1fc1629fb1ec652c68203af4f3f1",
- "discriminator": "0",
- "public_flags": 256,
- "flags": 256,
- "banner": null,
- "accent_color": null,
- "global_name": "ECHO 🐈",
- "avatar_decoration_data": null,
- "banner_color": null,
- "clan": null
- }
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|id|string|false|none|none|
-|created_at|string(date-time)|false|none|none|
-|username|string|false|none|none|
-|avatar|[DiscordAvatar](#schemadiscordavatar)|false|none|none|
-|avatar_decoration|string¦null|false|none|none|
-|badges|[string]|false|none|none|
-|accent_color|string¦null|false|none|none|
-|global_name|string|false|none|none|
-|banner|[DiscordBanner](#schemadiscordbanner)|false|none|none|
-|raw|[DiscordRawData](#schemadiscordrawdata)|false|none|none|
-
-DiscordAvatar
-
-
-
-
-
-
-```json
-{
- "id": "93dd1fc1629fb1ec652c68203af4f3f1",
- "link": "https://cdn.discordapp.com/avatars/712639419785412668/93dd1fc1629fb1ec652c68203af4f3f1",
- "is_animated": false
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|id|string|false|none|none|
-|link|string|false|none|none|
-|is_animated|boolean|false|none|none|
-
-DiscordBanner
-
-
-
-
-
-
-```json
-{
- "id": null,
- "link": null,
- "is_animated": false,
- "color": null
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|id|string¦null|false|none|none|
-|link|string¦null|false|none|none|
-|is_animated|boolean|false|none|none|
-|color|string¦null|false|none|none|
-
-DiscordRawData
-
-
-
-
-
-
-```json
-{
- "id": "712639419785412668",
- "username": "exhq",
- "avatar": "93dd1fc1629fb1ec652c68203af4f3f1",
- "discriminator": "0",
- "public_flags": 256,
- "flags": 256,
- "banner": null,
- "accent_color": null,
- "global_name": "ECHO 🐈",
- "avatar_decoration_data": null,
- "banner_color": null,
- "clan": null
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|id|string|false|none|none|
-|username|string|false|none|none|
-|avatar|string|false|none|none|
-|discriminator|string|false|none|none|
-|public_flags|integer|false|none|none|
-|flags|integer|false|none|none|
-|banner|string¦null|false|none|none|
-|accent_color|string¦null|false|none|none|
-|global_name|string|false|none|none|
-|avatar_decoration_data|string¦null|false|none|none|
-|banner_color|string¦null|false|none|none|
-|clan|string¦null|false|none|none|
-
-Review
-
-
-
-
-
-
-```json
-{
- "reviewID": 1,
- "discordID": "712653921692155965",
- "reviewText": "meow",
- "timestamp": "1708902649485"
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|reviewID|integer|false|none|none|
-|discordID|string|false|none|none|
-|reviewText|string|false|none|none|
-|timestamp|string|false|none|none|
-
-SongLinkResponse
-
-
-
-
-
-
-```json
-{
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "userCountry": "US",
- "pageUrl": "https://song.link/s/6BJHsLiE47Sk0wQkuppqhr",
- "entitiesByUniqueId": {
- "property1": {
- "id": "6BJHsLiE47Sk0wQkuppqhr",
- "type": "song",
- "title": "From the Start",
- "artistName": "Good Kid",
- "thumbnailUrl": "https://i.scdn.co/image/ab67616d0000b273e67835d0a5d81fa4f268b513",
- "thumbnailWidth": 640,
- "thumbnailHeight": 640,
- "apiProvider": "spotify",
- "platforms": [
- "spotify"
- ]
- },
- "property2": {
- "id": "6BJHsLiE47Sk0wQkuppqhr",
- "type": "song",
- "title": "From the Start",
- "artistName": "Good Kid",
- "thumbnailUrl": "https://i.scdn.co/image/ab67616d0000b273e67835d0a5d81fa4f268b513",
- "thumbnailWidth": 640,
- "thumbnailHeight": 640,
- "apiProvider": "spotify",
- "platforms": [
- "spotify"
- ]
- }
- },
- "linksByPlatform": {
- "property1": {
- "country": "US",
- "url": "https://open.spotify.com/track/6BJHsLiE47Sk0wQkuppqhr",
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriMobile": "spotify:track:6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriDesktop": "spotify:track:6BJHsLiE47Sk0wQkuppqhr"
- },
- "property2": {
- "country": "US",
- "url": "https://open.spotify.com/track/6BJHsLiE47Sk0wQkuppqhr",
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriMobile": "spotify:track:6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriDesktop": "spotify:track:6BJHsLiE47Sk0wQkuppqhr"
- }
- }
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|entityUniqueId|string|false|none|none|
-|userCountry|string|false|none|none|
-|pageUrl|string|false|none|none|
-|entitiesByUniqueId|object|false|none|none|
-|» **additionalProperties**|[SongEntity](#schemasongentity)|false|none|none|
-|linksByPlatform|object|false|none|none|
-|» **additionalProperties**|[PlatformLink](#schemaplatformlink)|false|none|none|
-
-SongEntity
-
-
-
-
-
-
-```json
-{
- "id": "6BJHsLiE47Sk0wQkuppqhr",
- "type": "song",
- "title": "From the Start",
- "artistName": "Good Kid",
- "thumbnailUrl": "https://i.scdn.co/image/ab67616d0000b273e67835d0a5d81fa4f268b513",
- "thumbnailWidth": 640,
- "thumbnailHeight": 640,
- "apiProvider": "spotify",
- "platforms": [
- "spotify"
- ]
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|id|string|false|none|none|
-|type|string|false|none|none|
-|title|string|false|none|none|
-|artistName|string|false|none|none|
-|thumbnailUrl|string|false|none|none|
-|thumbnailWidth|integer|false|none|none|
-|thumbnailHeight|integer|false|none|none|
-|apiProvider|string|false|none|none|
-|platforms|[string]|false|none|none|
-
-
-
-
-
-
-
-
-```json
-{
- "country": "US",
- "url": "https://open.spotify.com/track/6BJHsLiE47Sk0wQkuppqhr",
- "entityUniqueId": "SPOTIFY_SONG::6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriMobile": "spotify:track:6BJHsLiE47Sk0wQkuppqhr",
- "nativeAppUriDesktop": "spotify:track:6BJHsLiE47Sk0wQkuppqhr"
-}
-
-```
-
-### Properties
-
-|Name|Type|Required|Restrictions|Description|
-|---|---|---|---|---|
-|country|string|false|none|none|
-|url|string|false|none|none|
-|entityUniqueId|string|false|none|none|
-|nativeAppUriMobile|string|false|none|none|
-|nativeAppUriDesktop|string|false|none|none|
-