initial commit

This commit is contained in:
antifallobst 2023-08-15 19:43:53 +02:00
commit 267c66d686
Signed by: antifallobst
GPG Key ID: 2B4F402172791BAF
2 changed files with 110 additions and 0 deletions

106
API.md Normal file
View File

@ -0,0 +1,106 @@
# API
All API endpoints are accessible with this base URL: `https://api.nerdcult.net/`.
Some API endpoints require an Authorization HTTP header.
The token for this can be aquired using the `/account/authenticate` endpoint.
## Endpoints
### `/account/register` - POST
Requests a new nerdcult account.
This sends a verification E-Mail which contains a link to the veriication frontend with an verification token as url parameter.
This verification link will time out after 10 minutes.
#### HTTP Headers
| Header | Content |
|--------------|--------------------|
| Content-Type | `application/json` |
#### Content - JSON
| Field | Description |
|----------|----------------------------------------|
| username | The accounts username / userid. |
| password | The password used for authentication. |
| email | The email address used for validation. |
#### Responses
##### 200 - Success
The verification request was sent.
##### 400 - Error
The request was malformed.
##### 403 - Error
The password is not matching the requirements.
##### 409 - Error
The requested username or email is already taken.
__Content - JSON:__
| Field | Description |
|----------|----------------------------------------------------------------------|
| conflict | Can be `username` or `email`, depending on what caused the conflict. |
##### 422 - Error
Malformed email address.
### `/account/verify` - POST
Verifies a requested account.
#### HTTP Headers
| Header | Content |
|--------------|--------------------|
| Content-Type | `application/json` |
#### Content - JSON
| Field | Description |
|-------|--------------------------------------------------------------------------------|
| token | The verification token you received via an email after requesting the account. |
#### Responses
##### 200 - Success
The account was verified. You can login now.
##### 400 - Error
The request was malformed.
##### 403 - Error
The provided token is unknown.
### `/account/authenticate` - POST
Generates an authentication token for an account.
#### HTTP Headers
| Header | Content |
|--------------|--------------------|
| Content-Type | `application/json` |
#### Content - JSON
| Field | Description |
|----------|---------------------------------|
| username | The accounts username / userid. |
| password | The accounts password. |
#### Responses
##### 200 - Success
The authentication was successfull.
__Content - JSON:__
| Field | Description |
|-------|------------------------|
| token | A unique access token. |
##### 400 - Error
The request was malformed.
##### 403 - Error
The provided password was wrong.
##### 404 - Error
The provided username was not found.
### `/account/delete` - DELETE
Deletes the account.
#### HTTP Headers
| Header | Content |
|---------------|--------------------|
| Content-Type | `application/json` |
| Authorization | `Bearer {token}` |
#### Responses
##### 200 - Success
The account was deleted.
##### 403 - Errorpassword was wrong
The provided token doesn't allow you to perform this operation.

4
README.md Normal file
View File

@ -0,0 +1,4 @@
# Nerdcult API
This repo contains the source and documentation of the nerdcult api.
The source can be found in `src` and the docs in `API.md`.