mirror of
https://github.com/hknsh/project-knedita.git
synced 2024-12-01 02:41:17 +00:00
feat: added swagger for documentation
This commit is contained in:
parent
2ad6018806
commit
2191b01a93
8 changed files with 2421 additions and 3 deletions
42
package-lock.json
generated
42
package-lock.json
generated
|
@ -26,8 +26,10 @@
|
||||||
"redis": "^4.6.7",
|
"redis": "^4.6.7",
|
||||||
"sharp": "^0.32.3",
|
"sharp": "^0.32.3",
|
||||||
"socket.io": "^4.7.2",
|
"socket.io": "^4.7.2",
|
||||||
|
"swagger-ui-express": "^5.0.0",
|
||||||
"validator": "^13.9.0",
|
"validator": "^13.9.0",
|
||||||
"winston": "^3.10.0"
|
"winston": "^3.10.0",
|
||||||
|
"yaml": "^2.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.7.2",
|
"@commitlint/cli": "^17.7.2",
|
||||||
|
@ -45,6 +47,7 @@
|
||||||
"@types/multer-s3": "^3.0.0",
|
"@types/multer-s3": "^3.0.0",
|
||||||
"@types/node": "^20.3.1",
|
"@types/node": "^20.3.1",
|
||||||
"@types/supertest": "^2.0.12",
|
"@types/supertest": "^2.0.12",
|
||||||
|
"@types/swagger-ui-express": "^4.1.4",
|
||||||
"@types/validator": "^13.7.17",
|
"@types/validator": "^13.7.17",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
||||||
"@typescript-eslint/parser": "^6.7.3",
|
"@typescript-eslint/parser": "^6.7.3",
|
||||||
|
@ -3414,6 +3417,16 @@
|
||||||
"@types/superagent": "*"
|
"@types/superagent": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/swagger-ui-express": {
|
||||||
|
"version": "4.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.4.tgz",
|
||||||
|
"integrity": "sha512-h6dfIPFveCJKpStDtjrB+4pig4DAf9Uu2Z51RB7Fj3s6AifexmqhZxBoG50K/k3Afz7wyXsIAY5ZIDTlC2VjrQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/express": "*",
|
||||||
|
"@types/serve-static": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/triple-beam": {
|
"node_modules/@types/triple-beam": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.3.tgz",
|
||||||
|
@ -11671,6 +11684,25 @@
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/swagger-ui-dist": {
|
||||||
|
"version": "5.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.9.0.tgz",
|
||||||
|
"integrity": "sha512-NUHSYoe5XRTk/Are8jPJ6phzBh3l9l33nEyXosM17QInoV95/jng8+PuSGtbD407QoPf93MH3Bkh773OgesJpA=="
|
||||||
|
},
|
||||||
|
"node_modules/swagger-ui-express": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==",
|
||||||
|
"dependencies": {
|
||||||
|
"swagger-ui-dist": ">=5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= v0.10.32"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"express": ">=4.0.0 || >=5.0.0-beta"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/synckit": {
|
"node_modules/synckit": {
|
||||||
"version": "0.8.5",
|
"version": "0.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz",
|
||||||
|
@ -12887,6 +12919,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||||
},
|
},
|
||||||
|
"node_modules/yaml": {
|
||||||
|
"version": "2.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz",
|
||||||
|
"integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/yamljs": {
|
"node_modules/yamljs": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
"@types/multer-s3": "^3.0.0",
|
"@types/multer-s3": "^3.0.0",
|
||||||
"@types/node": "^20.3.1",
|
"@types/node": "^20.3.1",
|
||||||
"@types/supertest": "^2.0.12",
|
"@types/supertest": "^2.0.12",
|
||||||
|
"@types/swagger-ui-express": "^4.1.4",
|
||||||
"@types/validator": "^13.7.17",
|
"@types/validator": "^13.7.17",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
"@typescript-eslint/eslint-plugin": "^6.7.3",
|
||||||
"@typescript-eslint/parser": "^6.7.3",
|
"@typescript-eslint/parser": "^6.7.3",
|
||||||
|
@ -85,7 +86,9 @@
|
||||||
"redis": "^4.6.7",
|
"redis": "^4.6.7",
|
||||||
"sharp": "^0.32.3",
|
"sharp": "^0.32.3",
|
||||||
"socket.io": "^4.7.2",
|
"socket.io": "^4.7.2",
|
||||||
|
"swagger-ui-express": "^5.0.0",
|
||||||
"validator": "^13.9.0",
|
"validator": "^13.9.0",
|
||||||
"winston": "^3.10.0"
|
"winston": "^3.10.0",
|
||||||
|
"yaml": "^2.3.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
BIN
public/favicon.png
Normal file
BIN
public/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
1826
public/swagger-ui.css
Normal file
1826
public/swagger-ui.css
Normal file
File diff suppressed because it is too large
Load diff
14
src/app.ts
14
src/app.ts
|
@ -6,11 +6,13 @@ import express from 'express'
|
||||||
import limiter from 'middlewares/rate-limit'
|
import limiter from 'middlewares/rate-limit'
|
||||||
import morganMiddleware from 'middlewares/morgan'
|
import morganMiddleware from 'middlewares/morgan'
|
||||||
import router from './routes'
|
import router from './routes'
|
||||||
|
import swaggerUI from 'swagger-ui-express'
|
||||||
|
import swaggerDocument from 'helpers/parse-swagger'
|
||||||
|
import swaggerConfig from 'config/swagger'
|
||||||
|
|
||||||
const app = express()
|
const app = express()
|
||||||
|
|
||||||
// TODO: test socket io, emit notifications when create one.
|
// TODO: test socket io, emit notifications when create one.
|
||||||
// TODO: start to create the client, or a barebone to test socket io
|
|
||||||
|
|
||||||
app.use(express.json())
|
app.use(express.json())
|
||||||
app.use(express.urlencoded({ extended: true }))
|
app.use(express.urlencoded({ extended: true }))
|
||||||
|
@ -24,10 +26,20 @@ app.use(
|
||||||
optionsSuccessStatus: 200,
|
optionsSuccessStatus: 200,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
app.use(express.static('public'))
|
||||||
app.use(limiter)
|
app.use(limiter)
|
||||||
app.use(router)
|
app.use(router)
|
||||||
|
app.use(
|
||||||
|
'/docs',
|
||||||
|
swaggerUI.serve,
|
||||||
|
swaggerUI.setup(swaggerDocument, swaggerConfig),
|
||||||
|
)
|
||||||
app.use(compression({ level: 9 }))
|
app.use(compression({ level: 9 }))
|
||||||
|
|
||||||
|
app.get('/', function (_req, res) {
|
||||||
|
res.redirect('/docs')
|
||||||
|
})
|
||||||
|
|
||||||
app.use((_req, res) => {
|
app.use((_req, res) => {
|
||||||
res.status(404).json({
|
res.status(404).json({
|
||||||
error: 'Endpoint not found',
|
error: 'Endpoint not found',
|
||||||
|
|
9
src/config/swagger.ts
Normal file
9
src/config/swagger.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
import type { SwaggerUiOptions } from 'swagger-ui-express'
|
||||||
|
|
||||||
|
const swaggerConfig: SwaggerUiOptions = {
|
||||||
|
customCssUrl: '/swagger-ui.css',
|
||||||
|
customSiteTitle: 'Project Knedita Docs',
|
||||||
|
customfavIcon: '/favicon.png',
|
||||||
|
}
|
||||||
|
|
||||||
|
export default swaggerConfig
|
7
src/helpers/parse-swagger.ts
Normal file
7
src/helpers/parse-swagger.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
import { parse } from 'yaml'
|
||||||
|
import { readFileSync } from 'fs'
|
||||||
|
|
||||||
|
const swaggerConfigFile = readFileSync('./swagger.yaml', 'utf-8')
|
||||||
|
const swaggerDocument = parse(swaggerConfigFile)
|
||||||
|
|
||||||
|
export default swaggerDocument
|
521
swagger.yaml
Normal file
521
swagger.yaml
Normal file
|
@ -0,0 +1,521 @@
|
||||||
|
openapi: 3.0.0
|
||||||
|
|
||||||
|
info:
|
||||||
|
version: 0.0.1
|
||||||
|
title: Project Knedita - Documentation
|
||||||
|
description: An open source social media project.
|
||||||
|
license:
|
||||||
|
name: MIT
|
||||||
|
url: https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
|
tags:
|
||||||
|
- name: Users
|
||||||
|
description: User related endpoints
|
||||||
|
- name: Posts
|
||||||
|
description: Post related endpoints
|
||||||
|
- name: Comments
|
||||||
|
description: Comment related endpoints
|
||||||
|
|
||||||
|
paths:
|
||||||
|
# Users - GET paths
|
||||||
|
/user/info:
|
||||||
|
get:
|
||||||
|
summary: Returns information about a specific user.
|
||||||
|
description: Returns information about a specific user (profile picture, display name, etc).
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
parameters:
|
||||||
|
- name: u
|
||||||
|
in: query
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'cookie'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: An object containing all user information.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
profileImage:
|
||||||
|
type: string
|
||||||
|
displayName:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
followers:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
following:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
posts:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
content:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
likedPosts:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
postId:
|
||||||
|
type: string
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
|
||||||
|
/user/fetch-posts:
|
||||||
|
get:
|
||||||
|
summary: Returns all posts made by specific user.
|
||||||
|
description: Returns all posts made by specific user.
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
parameters:
|
||||||
|
- name: u
|
||||||
|
in: query
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'cookie'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: An array of objects containing post information (returns an empty array if no posts were found).
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
content:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
author:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
displayName:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
profileImage:
|
||||||
|
type: string
|
||||||
|
_count:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
likes:
|
||||||
|
type: integer
|
||||||
|
comments:
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
/user/search:
|
||||||
|
get:
|
||||||
|
summary: Returns user with the provided username.
|
||||||
|
description: Returns up to 10 users with the provided username.
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
parameters:
|
||||||
|
- name: u
|
||||||
|
in: query
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'cookie'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: An array of objects containing basic user information (returns an empty array if no users were found).
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
displayName:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
profileImage:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
/user/auth:
|
||||||
|
post:
|
||||||
|
summary: Authenticate user
|
||||||
|
description: Authenticate the provided user
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Returns authentication token and user's username
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
token:
|
||||||
|
type: string
|
||||||
|
user:
|
||||||
|
type: string
|
||||||
|
example: 'cookie'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
|
||||||
|
/user/signup:
|
||||||
|
post:
|
||||||
|
summary: Creates a new user
|
||||||
|
description: Creates a new user
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
email:
|
||||||
|
type: string
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: An object containing basic user information
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
displayName:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
|
||||||
|
# Users - POST paths
|
||||||
|
/user/delete:
|
||||||
|
post:
|
||||||
|
summary: Deletes an authenticated user
|
||||||
|
description: Deletes an authenticated user
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/EmptyResponse'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
/user/follow-user:
|
||||||
|
post:
|
||||||
|
summary: Follows a user
|
||||||
|
description: Follows a user
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
userToFollow:
|
||||||
|
type: string
|
||||||
|
example: 'cookie1'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/EmptyResponse'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
/user/like-comment:
|
||||||
|
post:
|
||||||
|
summary: Likes a post comment
|
||||||
|
description: Likes a post comment
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
commentId:
|
||||||
|
type: string
|
||||||
|
example: '7fb6e6e7-8e37-4814-bab6-36e5aa35796c'
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/EmptyResponse'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
/user/like-post:
|
||||||
|
post:
|
||||||
|
summary: Likes a post
|
||||||
|
description: Likes a post
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
postId:
|
||||||
|
type: string
|
||||||
|
example: f4e2b724-f226-4674-8e3b-0c0c512b09d4
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
$ref: '#/components/responses/EmptyResponse'
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
/user/me:
|
||||||
|
post:
|
||||||
|
summary: Returns basic information about the authenticated user
|
||||||
|
description: Returns basic information about the authenticated user
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Authenticated user information
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
profileImage:
|
||||||
|
type: string
|
||||||
|
displayName:
|
||||||
|
type: string
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
followers:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
following:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
posts:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
content:
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
type: string
|
||||||
|
updatedAt:
|
||||||
|
type: string
|
||||||
|
likedPosts:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
postId:
|
||||||
|
type: string
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
# Users - PUT paths
|
||||||
|
/user/profile-picture/upload:
|
||||||
|
put:
|
||||||
|
summary: Uploads a profile picture for the authenticated user
|
||||||
|
description: Uploads a profile picture for the authenticated user
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
multipart/form-data:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
image:
|
||||||
|
type: string
|
||||||
|
format: binary
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successful response
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
profileImage:
|
||||||
|
type: string
|
||||||
|
'400':
|
||||||
|
$ref: '#/components/responses/BadRequest'
|
||||||
|
'401':
|
||||||
|
$ref: '#/components/responses/Unauthorized'
|
||||||
|
|
||||||
|
/user/update-name:
|
||||||
|
put:
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
|
||||||
|
/user/update-email:
|
||||||
|
put:
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
|
||||||
|
/user/update-password:
|
||||||
|
put:
|
||||||
|
security:
|
||||||
|
- JWTAuth: []
|
||||||
|
tags:
|
||||||
|
- Users
|
||||||
|
|
||||||
|
# Posts - GET paths
|
||||||
|
/post/info:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Posts
|
||||||
|
|
||||||
|
/post/fetch-likes:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Posts
|
||||||
|
|
||||||
|
# Posts - POST paths
|
||||||
|
/post/create:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Posts
|
||||||
|
|
||||||
|
/post/delete:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Posts
|
||||||
|
|
||||||
|
# Posts - PUT paths
|
||||||
|
/post/update:
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- Posts
|
||||||
|
|
||||||
|
# Comments - GET paths
|
||||||
|
/comment/info:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Comments
|
||||||
|
|
||||||
|
/comment/fetch-likes:
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- Comments
|
||||||
|
|
||||||
|
# Comments - POST paths
|
||||||
|
/comment/create:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Comments
|
||||||
|
|
||||||
|
/comment/delete:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Comments
|
||||||
|
|
||||||
|
# Comments - PUT paths
|
||||||
|
/comment/update:
|
||||||
|
put:
|
||||||
|
tags:
|
||||||
|
- Comments
|
||||||
|
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
JWTAuth:
|
||||||
|
type: http
|
||||||
|
scheme: bearer
|
||||||
|
description: JWT Authentication via Authorization header
|
||||||
|
responses:
|
||||||
|
BadRequest:
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
||||||
|
EmptyResponse:
|
||||||
|
description: Successful Response (empty response)
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
Unauthorized:
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
Loading…
Reference in a new issue