api/API.md

161 lines
5.0 KiB
Markdown

# 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: Bad Request
The request was malformed.
##### 403 - Error: Forbidden
Blocked for security reasons.
##### 409 - Error: Conflict
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: Unprocessable Entity
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: Bad Request
The request was malformed.
##### 403 - Error: Forbidden
Blocked for security reasons.
##### 404 - Error: Forbidden
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: Bad Request
The request was malformed.
##### 401 - Error: Unauthorized
The provided password was wrong.
##### 403 - Error: Forbidden
Blocked for security reasons.
##### 404 - Error: Not Found
The provided username was not found.
##### 424 - Error: Failed Dependency
The account isn't verified yet.
### `/account/delete` - DELETE
Deletes the account.
#### HTTP Headers
| Header | Content |
|---------------|--------------------|
| Authorization | `Bearer {token}` |
#### Responses
##### 200 - Success
The account was deleted.
##### 401 - Error: Unauthorized
The provided auth token doesn't allow you to perform this operation.
##### 403 - Error: Forbidden
Blocked for security reasons.
### `/account/tokens` - DELETE
Deletes a token of the authenticated account.
#### HTTP Headers
| Header | Content |
|---------------|--------------------|
| Authorization | `Bearer {token}` |
| Content-Type | `application/json` |
#### Content - JSON
| Field | Description |
|-------|-----------------------------------|
| token | The token that should be deleted. |
#### Responses
##### 200 - Success
The token was deleted.
##### 401 - Error: Unauthorized
The provided auth token doesn't allow you to perform this operation.
##### 403 - Error: Forbidden
Blocked for security reasons.
##### 404 - Error: Not Found
The token that should be deleted wasn't found.
### `/account/tokens` - GET
Lists all active auth tokens for the account.
#### HTTP Headers
| Header | Content |
|---------------|--------------------|
| Authorization | `Bearer {token}` |
#### Responses
##### 200 - Success
__Content - JSON:__
| Field | Description |
|--------|-------------------------------------------------------------------------------------------------|
| tokens | A list of (token, expiration date) pairs. The expiration date is given as a UTC UNIX timestamp. |
##### 401 - Error: Unauthorized
The provided auth token doesn't allow you to perform this operation.
##### 403 - Error: Forbidden
Blocked for security reasons.