swagger: add user endpoint to get user info, and their posts

master
ALI Hamza 2020-09-09 22:43:10 +07:00
parent 92117aa93c
commit 8302b02b90
Signed by: hamza
GPG Key ID: 22473A32291F8CB6
1 changed files with 100 additions and 1 deletions

@ -74,6 +74,47 @@ paths:
500:
$ref: '#/components/responses/ServerError'
/users/{username}:
get:
tags:
- User Endpoints
summary: Get the information for a user
parameters:
- name: username
required: true
in: path
schema:
type: string
responses:
200:
description: Public information for the requested user.
content:
application/json:
schema:
$ref: '#/components/schemas/User'
/users/{username}/posts:
get:
tags:
- User Endpoints
- Posts Endpoints
summary: Get the list of posts a user has created/submitted.
requestBody:
$ref: '#/components/requestBodies/Listing'
responses:
200:
description: A list of posts filtered and formatted.
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
400:
$ref: '#/components/responses/MalformedBody'
422:
$ref: '#/components/responses/Unprocessable'
500:
$ref: '#/components/responses/ServerError'
components:
requestBodies:
AuthCredentials:
@ -104,6 +145,12 @@ components:
token:
type: string
description: The access token.
Listing:
description: Query particular data sorted by date and time.
content:
application/json:
schema:
$ref: '#/components/schemas/Listing'
responses:
MalformedBody:
description: The information in your body is incomplete, or your JSON format is invalid.
@ -132,6 +179,15 @@ components:
example:
reason: The token provided is invalid.
code: 401
Unprocessable:
description: The request was valid, however some of the parameters have an invalid value.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
reason: Varies
code: 422
ServerError:
description: The server could not complete a request due to an unknown error. More informatino may be available in the description.
content:
@ -164,6 +220,13 @@ components:
format: password
minLength: 8
maxLength: 32
User:
type: object
required:
- id
- username
- points
- date_created
Token:
required:
- token
@ -172,6 +235,15 @@ components:
token:
type: string
description: The access token value
Post:
type: object
required:
- id
- user_id
- title
- description
- upvotes
- downvotes
Error:
required:
- reason
@ -184,3 +256,30 @@ components:
code:
type: integer
description: The HTTP error code value accompanying the error.
Listing:
type: object
properties:
after:
type: string
format: 'date-time'
description: Filter items to only return those after this date and time.
default: 2020-01-01T00:00:00.000z
before:
type: string
format: 'date-time'
description: Filter items to only return those before this date and time.
default: 2030-01-01T00:00:00.000z
count:
type: integer
description: The number of items already seen in this listing. Items will always be sorted by newest first.
default: 0
limit:
type: integer
maximum: 100
description: The maximum number of items to provide. Can be used in conjunction with 'count' to paginate.
default: 10
example:
after: 2020-01-01T00:00:00.000z
before: 2030-01-01T00:00:00.000z
count: 0
limit: 10