From c444f561b3d9026a0724d04764f25838c5e867de Mon Sep 17 00:00:00 2001 From: antifallobst Date: Fri, 18 Aug 2023 16:39:56 +0200 Subject: [PATCH] docs(api): designed a bunch of endpoints --- API.md | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++- README.md | 18 +++-- 2 files changed, 207 insertions(+), 8 deletions(-) diff --git a/API.md b/API.md index ae2d2ec..edc7acb 100644 --- a/API.md +++ b/API.md @@ -158,4 +158,199 @@ __Content - JSON:__ ##### 401 - Error: Unauthorized The provided auth token doesn't allow you to perform this operation. ##### 403 - Error: Forbidden -Blocked for security reasons. \ No newline at end of file +Blocked for security reasons. + + +### `/account/follows` - GET +Lists all acccounts that the authenticated account follows. + +#### HTTP Headers +| Header | Content | +|---------------|--------------------| +| Authorization | `Bearer {token}` | + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------| +| accounts | A list of (username, userid) pairs. | +##### 401 - Error: Unauthorized +The provided auth token doesn't allow you to perform this operation. +##### 403 - Error: Forbidden +Blocked for security reasons. + + +### `/account/followers` - GET +Lists all acccounts that are following the authenticated account. + +#### HTTP Headers +| Header | Content | +|---------------|--------------------| +| Authorization | `Bearer {token}` | + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------| +| accounts | A list of (username, userid) pairs. | +##### 401 - Error: Unauthorized +The provided auth token doesn't allow you to perform this operation. +##### 403 - Error: Forbidden +Blocked for security reasons. + + +### `/user/{username}/info` - GET +Returns information about the user. + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------------------------------------| +| id | The users unique id. | +| name | The users unique username. | +| joined | The datetime when the user joined. Represented as UNIX timestamp. | +| is_admin | A boolean if the user is an admin. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The user wasn't found. + + +### `/user/{username}/follow` - POST +Let the authenticated account follow the user. + +#### HTTP Headers +| Header | Content | +|---------------|--------------------| +| Authorization | `Bearer {token}` | + +#### Responses +##### 200 - Success +Successfully followed the user. +##### 208 - Already Reported +You already follow the user. +##### 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 user wasn't found. + + +### `/user/{username}/follows` - GET +Returns the list of accounts the user is following. + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------| +| accounts | A list of (username, userid) pairs. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The user wasn't found. + + +### `/user/{username}/followers` - GET +Returns the list of accounts following the user. + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------| +| accounts | A list of (username, userid) pairs. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The user wasn't found. + + +### `/user/{username}/projects` - GET +Returns the list of public projects the user is part of. + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|----------|-------------------------------------------| +| projects | A list of (projectname, projectid) pairs. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The user wasn't found. + + +### `/project/create` - POST +Creates a new project. + +#### HTTP Headers +| Header | Content | +|---------------|--------------------| +| Authorization | `Bearer {token}` | +| Content-Type | `application/json` | + +#### Content - JSON +| Field | Description | +|-------------|-----------------------------------------------| +| name | The name of the project to be created. | +| description | The description of the project to be created. | + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|-------|---------------------------------| +| id | The created projects unique id. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 409 - Error: Conflict +The requested project name is already taken. + + +### `/project/{projectname}/info` - GET +Returns the list of public projects the user is part of. + +#### Responses +##### 200 - Success +__Content - JSON:__ +| Field | Description | +|-------------|---------------------------------------------------------------------------| +| id | The projects unique id. | +| name | The projects unique name. | +| description | The projects description. | +| created | The datetime when the project was created. Represented as UNIX timestamp. | +| members | A list of (username, userid) pairs. | +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The project wasn't found. + + +### `/project/{projectname}/join` - POST +Returns the list of public projects the user is part of. + +#### HTTP Headers +| Header | Content | +|---------------|--------------------| +| Authorization | `Bearer {token}` | +| Content-Type | `application/json` | + +#### Content - JSON +| Field | Description | +|---------|-----------------------------------------------------------| +| message | The request message the projects maintainers will review. | + +#### Responses +##### 200 - Success +Your request will be reviewed. +##### 208 - Already Reported +You already joined the project. +##### 403 - Error: Forbidden +Blocked for security reasons. +##### 404 - Error: Not Found +The project wasn't found. \ No newline at end of file diff --git a/README.md b/README.md index 2d03de4..5e13a17 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,16 @@ export SMTP_PASSWORD=password - [X] `/delete` - DELETE - [X] `/tokens` - DELETE - [X] `/tokens` - GET - - [ ] `/follow` - DELETE (not designed yet) - - [ ] `/info` - GET (not designed yet) + - [ ] `/follows` - GET + - [ ] `/followers` - GET - `/user/{username}` - - [ ] `/info` - GET (not designed yet) - - [ ] `/follow` - POST (not designed yet) + - [ ] `/info` - GET + - [ ] `/follow` - POST + - [ ] `/follows` - GET + - [ ] `/followers` - GET + - [ ] `/projects` - GET - `/project` - - [ ] `/create` - POST (not designed yet) - - [ ] `/info` - GET (not designed yet) - - [ ] `/join` - POST (not designed yet) \ No newline at end of file + - [ ] `/create` - POST + - `/{projectname}` + - [ ] `/info` - GET + - [ ] `/join` - POST \ No newline at end of file