966 lines
25 KiB
YAML
966 lines
25 KiB
YAML
openapi: 3.0.1
|
|
info:
|
|
version: '0.1'
|
|
title: 'DC Project'
|
|
description: 'A free comunity program for create constitution'
|
|
|
|
paths:
|
|
/register:
|
|
post:
|
|
summary: Create account
|
|
tags:
|
|
- authentification
|
|
operationId: register
|
|
requestBody:
|
|
$ref: '#/components/requestBodies/RegisterRequest'
|
|
|
|
responses:
|
|
200:
|
|
description: User created and JWT returned
|
|
content:
|
|
text/plain:
|
|
example:
|
|
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBdXRoZW50aWNhdGlvbiIsImlzcyI6ImRjLXByb2plY3QuZnIiLCJpZCI6ImQ1NDRhNmE4LWJhYjgtNDU2MC05NWIxLThhZjAyMDNkOTEwNCIsImV4cCI6MTU2NzA3Mzc0Mn0.0VTetv8fZFjVgpJ-bwJpidGNHJUOmgj8vuZcZXzwnLa7TtFwcXWvh3bDPYHqB66nmOfXyM57XnHDbmRwtipCag
|
|
|
|
/login:
|
|
post:
|
|
summary: sign in
|
|
tags:
|
|
- authentification
|
|
operationId: login
|
|
requestBody:
|
|
$ref: '#/components/requestBodies/LoginRequest'
|
|
responses:
|
|
200:
|
|
description: return JWT
|
|
content:
|
|
text/plain:
|
|
example:
|
|
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBdXRoZW50aWNhdGlvbiIsImlzcyI6ImRjLXByb2plY3QuZnIiLCJpZCI6ImQ1NDRhNmE4LWJhYjgtNDU2MC05NWIxLThhZjAyMDNkOTEwNCIsImV4cCI6MTU2NzA3Mzc0Mn0.0VTetv8fZFjVgpJ-bwJpidGNHJUOmgj8vuZcZXzwnLa7TtFwcXWvh3bDPYHqB66nmOfXyM57XnHDbmRwtipCag
|
|
|
|
/citizens/{citizen}:
|
|
get:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Get Citizen
|
|
tags:
|
|
- citizen
|
|
operationId: getCitizen
|
|
parameters:
|
|
- name: citizen
|
|
in: path
|
|
description: ID of citizen
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
responses:
|
|
200:
|
|
description: The Citizen object
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CitizenResponse'
|
|
404:
|
|
description: Citizen not found
|
|
/citizens:
|
|
get:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Get all citizens
|
|
tags:
|
|
- citizen
|
|
operationId: getCitizens
|
|
parameters:
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/limit'
|
|
- $ref: '#/components/parameters/sort'
|
|
- $ref: '#/components/parameters/direction'
|
|
- $ref: '#/components/parameters/search'
|
|
responses:
|
|
200:
|
|
description: The Citizen objects
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Paginated'
|
|
- type: object
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CitizenResponse'
|
|
|
|
/articles:
|
|
get:
|
|
summary: Get all articles
|
|
tags:
|
|
- article
|
|
operationId: getArticles
|
|
parameters:
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/limit'
|
|
- $ref: '#/components/parameters/sort'
|
|
- $ref: '#/components/parameters/direction'
|
|
- $ref: '#/components/parameters/search'
|
|
responses:
|
|
200:
|
|
description: The Article objects
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Paginated'
|
|
- type: object
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ArticleResponse'
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Create new Article
|
|
tags:
|
|
- article
|
|
operationId: insertArticle
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ArticleRequest'
|
|
responses:
|
|
201:
|
|
description: Article created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ArticleResponse'
|
|
/articles/{article}:
|
|
get:
|
|
summary: Get one article
|
|
tags:
|
|
- article
|
|
operationId: getArticle
|
|
parameters:
|
|
- name: article
|
|
in: path
|
|
required: true
|
|
description: the ID of article
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
responses:
|
|
200:
|
|
description: The Article objects
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ArticleResponse'
|
|
/articles/{article}/versions:
|
|
get:
|
|
summary: Get all versions of articles
|
|
tags:
|
|
- article
|
|
operationId: getArticleVersions
|
|
parameters:
|
|
- name: article
|
|
in: path
|
|
required: true
|
|
description: the ID of article
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
responses:
|
|
200:
|
|
description: The versions of Article
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Paginated'
|
|
- type: object
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ArticleResponse'
|
|
|
|
/constitutions:
|
|
get:
|
|
summary: Get all constitutions
|
|
tags:
|
|
- constitution
|
|
operationId: getConstitutions
|
|
parameters:
|
|
- $ref: '#/components/parameters/page'
|
|
- $ref: '#/components/parameters/limit'
|
|
- $ref: '#/components/parameters/sort'
|
|
- $ref: '#/components/parameters/direction'
|
|
- $ref: '#/components/parameters/search'
|
|
responses:
|
|
200:
|
|
description: The Constitution objects
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Paginated'
|
|
- type: object
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ConstitutionResponse'
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Create new Constitution
|
|
tags:
|
|
- constitution
|
|
operationId: insertConstitution
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ConstitutionRequest'
|
|
responses:
|
|
201:
|
|
description: Constitution created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ConstitutionResponse'
|
|
/constitutions/{constitution}:
|
|
get:
|
|
summary: Get all constitutions
|
|
tags:
|
|
- constitution
|
|
operationId: getConstitutions
|
|
parameters:
|
|
- name: constitution
|
|
in: query
|
|
required: true
|
|
description: the ID of constitution
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
responses:
|
|
200:
|
|
description: The Constitution objects
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ConstitutionResponse'
|
|
/comments/{comment}:
|
|
parameters:
|
|
- name: comment
|
|
in: path
|
|
description: The ID of comment
|
|
example: 701dc504-db49-7e3a-2c0a-32542507ea57
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
get:
|
|
summary: Get Comment by Comment ID
|
|
tags:
|
|
- comment
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
put:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Edit existing comment
|
|
tags:
|
|
- comment
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentRequest'
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
|
|
/comments/{comment}/children:
|
|
parameters:
|
|
- name: comment
|
|
in: path
|
|
description: The ID of comment
|
|
example: 701dc504-db49-7e3a-2c0a-32542507ea57
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
get:
|
|
summary: Get Comment children by Comment ID
|
|
tags:
|
|
- comment
|
|
responses:
|
|
200:
|
|
description: Return Comment children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Paginated'
|
|
- type: object
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
|
|
/articles/{article}/comments:
|
|
parameters:
|
|
- name: article
|
|
in: path
|
|
description: The ID of article
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
get:
|
|
summary: Get comments of one article
|
|
tags:
|
|
- comment
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Create Comment to article
|
|
tags:
|
|
- comment
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentRequest'
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
/constitutions/{constitution}/comments:
|
|
parameters:
|
|
- name: constitution
|
|
in: path
|
|
description: The ID of constitution
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
get:
|
|
summary: Get comment and children of one constitution
|
|
tags:
|
|
- comment
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Create Comment to constitution
|
|
tags:
|
|
- comment
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentRequest'
|
|
responses:
|
|
200:
|
|
description: Return Comment and children
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/CommentResponse'
|
|
/articles/{article}/follows:
|
|
parameters:
|
|
- name: article
|
|
in: path
|
|
description: The ID of article
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Follow one article
|
|
tags:
|
|
- follow
|
|
responses:
|
|
201:
|
|
description: Return only http status 201 on success
|
|
delete:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Unfollow one article
|
|
tags:
|
|
- follow
|
|
responses:
|
|
204:
|
|
description: Return only http status 204 on success
|
|
/constitutions/{constitution}/follows:
|
|
parameters:
|
|
- name: constitution
|
|
in: path
|
|
description: The ID of constitution
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
post:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Follow one constitution
|
|
tags:
|
|
- follow
|
|
responses:
|
|
201:
|
|
description: Return only http status 201 on success
|
|
delete:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Unfollow one constitution
|
|
tags:
|
|
- follow
|
|
responses:
|
|
204:
|
|
description: Return only http status 204 on success
|
|
/articles/{article}/vote:
|
|
parameters:
|
|
- name: article
|
|
in: path
|
|
description: The ID of article
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
put:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Vote for one article
|
|
tags:
|
|
- vote
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/VoteRequest'
|
|
responses:
|
|
201:
|
|
description: Return only http status 201 on success
|
|
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/VoteAggregation'
|
|
/constitutions/{constitution}/vote:
|
|
parameters:
|
|
- name: constitution
|
|
in: path
|
|
description: The ID of constitution
|
|
example: e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
required: true
|
|
schema:
|
|
type: string
|
|
format: uuid
|
|
put:
|
|
security:
|
|
- JWTAuth: []
|
|
summary: Vote for one constitution
|
|
tags:
|
|
- vote
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/VoteRequest'
|
|
responses:
|
|
201:
|
|
description: Return only http status 201 on success
|
|
|
|
components:
|
|
parameters:
|
|
page:
|
|
name: page
|
|
in: query
|
|
description: The current page
|
|
example: 1
|
|
required: false
|
|
schema:
|
|
default: 1
|
|
type: integer
|
|
minimum: 1
|
|
limit:
|
|
name: limit
|
|
in: query
|
|
description: The number of object per page
|
|
example: 50
|
|
required: false
|
|
schema:
|
|
default: 50
|
|
type: integer
|
|
minimum: 1
|
|
maximum: 50
|
|
sort:
|
|
name: sort
|
|
in: query
|
|
description: The sort field name
|
|
example: first_name
|
|
required: false
|
|
schema:
|
|
type: string
|
|
direction:
|
|
name: direction
|
|
in: query
|
|
description: The sort direction
|
|
example: asc
|
|
required: false
|
|
schema:
|
|
type: string
|
|
default: asc
|
|
enum: [asc, desc]
|
|
search:
|
|
name: search
|
|
in: query
|
|
description: A text to seach
|
|
example: John Doe
|
|
required: false
|
|
schema:
|
|
type: string
|
|
|
|
securitySchemes:
|
|
JWTAuth:
|
|
type: http
|
|
scheme: bearer
|
|
description: call /login to get token
|
|
|
|
schemas:
|
|
UUID:
|
|
type: string
|
|
pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
|
|
description: UUID
|
|
format: uuid
|
|
example:
|
|
e74be8e4-6823-47c4-bd1b-789725b2fa8e
|
|
|
|
UuidEntity:
|
|
properties:
|
|
id:
|
|
$ref: '#/components/schemas/UUID'
|
|
|
|
CreatedBy:
|
|
properties:
|
|
created_by:
|
|
$ref: '#/components/schemas/CitizenResponse'
|
|
|
|
CreatedAt:
|
|
properties:
|
|
created_at:
|
|
type: string
|
|
format: 'date-time'
|
|
UpdatedAt:
|
|
properties:
|
|
updated_at:
|
|
type: string
|
|
format: 'date-time'
|
|
|
|
versionId:
|
|
properties:
|
|
version_id:
|
|
$ref: '#/components/schemas/UUID'
|
|
|
|
lastVersion:
|
|
properties:
|
|
last_version:
|
|
type: boolean
|
|
required: false
|
|
default: false
|
|
|
|
Paginated:
|
|
properties:
|
|
result:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/UuidEntity'
|
|
count:
|
|
type: integer
|
|
minimum: 0
|
|
example: 1
|
|
currentPage:
|
|
type: integer
|
|
minimum: 0
|
|
example: 1
|
|
limit:
|
|
type: integer
|
|
minimum: 0
|
|
example: 50
|
|
offset:
|
|
type: integer
|
|
minimum: 0
|
|
example: 1
|
|
total:
|
|
type: integer
|
|
minimum: 0
|
|
example: 1
|
|
|
|
UserBase:
|
|
properties:
|
|
username:
|
|
type: string
|
|
required: true
|
|
example:
|
|
john-doe
|
|
UserResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserBase'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
UserRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserBase'
|
|
- type: object
|
|
properties:
|
|
plain_password:
|
|
type: string
|
|
required: true
|
|
example:
|
|
azerty
|
|
format: password
|
|
|
|
CitizenResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/CitizenBase'
|
|
- $ref: '#/components/schemas/CreatedAt'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- type: object
|
|
properties:
|
|
user:
|
|
$ref: '#/components/schemas/UserResponse'
|
|
CitizenBase:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: object
|
|
properties:
|
|
first_name:
|
|
type: string
|
|
required: true
|
|
example:
|
|
john
|
|
last_name:
|
|
type: string
|
|
required: true
|
|
example:
|
|
Doe
|
|
birthday:
|
|
type: string
|
|
example:
|
|
1984-12-25
|
|
CitizenRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/CitizenBase'
|
|
- type: object
|
|
properties:
|
|
user:
|
|
$ref: '#/components/schemas/UserRequest'
|
|
|
|
RegisterRequest:
|
|
$ref: '#/components/schemas/CitizenRequest'
|
|
|
|
LoginRequest:
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: username
|
|
required: true
|
|
example:
|
|
john-doe
|
|
password:
|
|
type: string
|
|
description: Pasword
|
|
required: true
|
|
example:
|
|
azerty
|
|
|
|
ArticleBase:
|
|
type: object
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
required: true
|
|
example:
|
|
Limit power of press
|
|
content:
|
|
type: string
|
|
required: true
|
|
example:
|
|
Lorem upsum...
|
|
descritption:
|
|
type: string
|
|
required: true
|
|
example:
|
|
I think is the bether choice
|
|
tags:
|
|
type: array
|
|
items:
|
|
type: string
|
|
required: false
|
|
default: []
|
|
example: [power, press]
|
|
annonymous:
|
|
type: boolean
|
|
required: false
|
|
default: true
|
|
draft:
|
|
type: boolean
|
|
required: false
|
|
default: false
|
|
- $ref: '#/components/schemas/versionId'
|
|
ArticleResponse:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/ArticleBase'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- $ref: '#/components/schemas/CreatedBy'
|
|
- $ref: '#/components/schemas/CreatedAt'
|
|
- $ref: '#/components/schemas/lastVersion'
|
|
- properties:
|
|
votes:
|
|
$ref: '#/components/schemas/VoteAggregation'
|
|
|
|
ArticleRequest:
|
|
$ref: '#/components/schemas/ArticleBase'
|
|
|
|
ConstitutionBase:
|
|
type: object
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
required: true
|
|
example:
|
|
Constitution for the liberty
|
|
titles:
|
|
type: array
|
|
required: false
|
|
default: []
|
|
items:
|
|
$ref: '#/components/schemas/TitleBase'
|
|
annonymous:
|
|
type: boolean
|
|
required: false
|
|
default: true
|
|
draft:
|
|
type: boolean
|
|
required: false
|
|
default: false
|
|
- $ref: '#/components/schemas/versionId'
|
|
ConstitutionResponse:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/ConstitutionBase'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- $ref: '#/components/schemas/CreatedBy'
|
|
- $ref: '#/components/schemas/CreatedAt'
|
|
- type: object
|
|
properties:
|
|
titles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TitleResponse'
|
|
ConstitutionRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ConstitutionBase'
|
|
- type: object
|
|
properties:
|
|
titles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TitleRequest'
|
|
|
|
TitleBase:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
required: true
|
|
example:
|
|
The liberties
|
|
rank:
|
|
type: integer
|
|
minimum: 0
|
|
example:
|
|
0
|
|
TitleRequest:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/TitleBase'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- type: object
|
|
properties:
|
|
articles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/UuidEntity'
|
|
TitleResponse:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/TitleBase'
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- $ref: '#/components/schemas/CreatedAt'
|
|
- $ref: '#/components/schemas/CreatedBy'
|
|
- type: object
|
|
properties:
|
|
articles:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ArticleResponse'
|
|
|
|
Extra:
|
|
type: object
|
|
allOf:
|
|
- $ref: '#/components/schemas/UuidEntity'
|
|
- $ref: '#/components/schemas/CreatedAt'
|
|
- $ref: '#/components/schemas/CreatedBy'
|
|
- type: object
|
|
properties:
|
|
target:
|
|
$ref: '#/components/schemas/UuidEntity'
|
|
|
|
CommentBase:
|
|
type: object
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
content:
|
|
type: string
|
|
required: true
|
|
example:
|
|
Lorem ipsum...
|
|
CommentRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/CommentBase'
|
|
|
|
CommentResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/CommentBase'
|
|
- $ref: '#/components/schemas/UpdatedAt'
|
|
- $ref: '#/components/schemas/Extra'
|
|
- type: object
|
|
properties:
|
|
parents_ids:
|
|
type: array
|
|
required: false
|
|
items:
|
|
$ref: '#/components/schemas/UUID'
|
|
parent:
|
|
required: false
|
|
allOf:
|
|
- $ref: '#/components/schemas/UUID'
|
|
- $ref: '#/components/schemas/UUID'
|
|
|
|
FollowBase:
|
|
allOf:
|
|
- $ref: '#/components/schemas/Extra'
|
|
FollowResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/FollowBase'
|
|
|
|
|
|
VoteBase:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
note:
|
|
type: integer
|
|
minimum: -1
|
|
maximum: 1
|
|
required: true
|
|
VoteRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/VoteBase'
|
|
VoteResponse:
|
|
allOf:
|
|
- $ref: '#/components/schemas/VoteBase'
|
|
- $ref: '#/components/schemas/Extra'
|
|
VoteAggregation:
|
|
allOf:
|
|
- type: object
|
|
properties:
|
|
up:
|
|
type: number
|
|
minimum: 0
|
|
neutral:
|
|
type: number
|
|
minimum: 0
|
|
down:
|
|
type: number
|
|
minimum: 0
|
|
- $ref: '#/components/schemas/UpdatedAt'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requestBodies:
|
|
RegisterRequest:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RegisterRequest'
|
|
description: Register
|
|
required: true
|
|
|
|
LoginRequest:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/LoginRequest'
|
|
description: Login
|
|
required: true
|
|
|
|
servers:
|
|
- description: localhost
|
|
url: http://localhost:8080
|
|
- description: production
|
|
url: http://dc-project.fr
|
|
- description: SwaggerHub API Auto Mocking
|
|
url: https://virtserver.swaggerhub.com/flecomte/dc-project/0.1 |