diff --git a/src/main/resources/openapi.yaml b/src/main/resources/openapi.yaml deleted file mode 100644 index 9e7d336..0000000 --- a/src/main/resources/openapi.yaml +++ /dev/null @@ -1,1846 +0,0 @@ -openapi: 3.0.0 -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 - /auth/passwordless: - post: - summary: Send a connexion link by email - description: Send a connexion link by email with the token required to the connexion - externalDocs: - description: Explanation of Passwordless auth - url: https://en.wikipedia.org/wiki/Passwordless_authentication - tags: - - authentification - operationId: passwordless - requestBody: - content: - application/json: - schema: - properties: - email: - type: string - format: email - description: email to send the token - example: - my.email@dc-project.fr - url: - type: string - description: url tu redirect with the token - example: - http://dc-project.fr/auth/passwordless - - responses: - 204: - description: email send - 404: - description: no user with this email - - /citizens/current: - get: - security: - - JWTAuth: [] - summary: Get Citizen - tags: - - citizen - operationId: getCurrentCitizen - responses: - 200: - description: The Citizen object - content: - application/json: - schema: - $ref: '#/components/schemas/CitizenResponse' - /citizens/{citizen}: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: Get Citizen - tags: - - citizen - operationId: getCitizen - responses: - 200: - description: The Citizen object - content: - application/json: - schema: - $ref: '#/components/schemas/CitizenResponse' - 404: - description: Citizen not found - 401: - $ref: '#/components/responses/401' - /citizens/{citizen}/votes: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: Get Citizen - tags: - - vote - - citizen - operationId: getCitizenVotes - parameters: - - name: id - in: query - required: true - example: - - 1329ab90-edae-cfed-f863-c8cb069fa327 - - cab54e50-ce85-bba0-da23-fc9f75feeaf5 - schema: - type: array - items: - type: string - format: uuid - responses: - 200: - description: The Votes objects - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/VoteResponse' - 404: - description: Citizen not found - 401: - $ref: '#/components/responses/401' - /citizens/{citizen}/password/change: - parameters: - - $ref: '#/components/parameters/citizen' - put: - security: - - JWTAuth: [] - summary: Change Citizen Password - tags: - - citizen - operationId: changePassword - requestBody: - required: true - content: - application/json: - schema: - required: - - old_password - - new_password - properties: - old_password: - type: string - format: password - example: - azerty - new_password: - type: string - format: password - example: - qwerty - responses: - 201: - description: Password changed - 404: - description: Citizen not found - 401: - $ref: '#/components/responses/401' - - /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' - 401: - $ref: '#/components/responses/401' - - /articles: - get: - summary: Get all articles - tags: - - article - operationId: getArticles - parameters: - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/limit' - - $ref: '#/components/parameters/articleSort' - - $ref: '#/components/parameters/direction' - - $ref: '#/components/parameters/search' - - $ref: '#/components/parameters/createdBy' - - name: workgroup - in: query - description: ID of workgroup - example: 82a0e60a-bb55-dbc0-1c3d-0a804df2b5df - required: false - schema: - type: string - format: uuid - responses: - 200: - description: The Article objects - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Paginated' - - type: object - properties: - result: - type: array - items: - properties: - id: - type: string - format: uuid - title: - type: string - created_by: - type: object - properties: - id: - type: string - format: uuid - name: - type: object - properties: - first_name: - type: string - last_name: - type: string - email: - type: string - workgroup: - type: object - properties: - id: - type: string - format: uuid - name: - type: string - draft: - type: boolean - 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' - 401: - $ref: '#/components/responses/401' - /articles/{article}: - parameters: - - $ref: '#/components/parameters/article' - get: - security: - - {} - - JWTAuth: [] - summary: Get one article - tags: - - article - operationId: getArticle - responses: - 200: - description: The Article objects - content: - application/json: - schema: - $ref: '#/components/schemas/ArticleResponse' - /articles/{article}/versions: - parameters: - - $ref: '#/components/parameters/article' - get: - summary: Get all versions of articles - tags: - - article - operationId: getArticleVersions - 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' - 401: - $ref: '#/components/responses/401' - /constitutions/{constitution}: - parameters: - - $ref: '#/components/parameters/constitution' - get: - summary: Get all constitutions - tags: - - constitution - operationId: getConstitutions - responses: - 200: - description: The Constitution objects - content: - application/json: - schema: - $ref: '#/components/schemas/ConstitutionResponse' - - /comments/{comment}: - parameters: - - $ref: '#/components/parameters/comment' - 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' - 401: - $ref: '#/components/responses/401' - /comments/{comment}/children: - parameters: - - $ref: '#/components/parameters/comment' - 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' - post: - security: - - JWTAuth: [] - summary: Create Comment on other comment - tags: - - comment - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CommentRequest' - responses: - 201: - description: Return the created Comment - content: - application/json: - schema: - allOf: - - type: object - properties: - result: - type: array - items: - $ref: '#/components/schemas/CommentResponse' - 404: - description: Comment not found - 401: - $ref: '#/components/responses/401' - - /articles/{article}/comments: - parameters: - - $ref: '#/components/parameters/article' - get: - summary: Get comments of one article - tags: - - comment - - article - parameters: - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/limit' - - $ref: '#/components/parameters/search' - - name: sort - in: query - required: false - example: - - created_at - - votes - schema: - type: string - default: created_at - enum: - - created_at - - votes - 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 - - article - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CommentRequest' - responses: - 200: - description: Return Comment and children - content: - application/json: - schema: - $ref: '#/components/schemas/CommentResponse' - 401: - $ref: '#/components/responses/401' - /constitutions/{constitution}/comments: - parameters: - - $ref: '#/components/parameters/constitution' - get: - summary: Get comment and children of one constitution - tags: - - comment - - constitution - 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 - - constitution - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/CommentRequest' - responses: - 200: - description: Return Comment and children - content: - application/json: - schema: - $ref: '#/components/schemas/CommentResponse' - 401: - $ref: '#/components/responses/401' - - /articles/{article}/follows: - parameters: - - $ref: '#/components/parameters/article' - get: - security: - - JWTAuth: [] - summary: Return Follow or nothing if you not follow - tags: - - follow - - article - responses: - 200: - description: Return your follow - content: - application/json: - schema: - $ref: '#/components/schemas/FollowResponse' - 404: - description: You not follow this article - post: - security: - - JWTAuth: [] - summary: Follow one article - tags: - - follow - - article - responses: - 201: - description: Return only http status 201 on success - delete: - security: - - JWTAuth: [] - summary: Unfollow one article - tags: - - follow - - article - responses: - 204: - description: Return only http status 204 on success - 401: - $ref: '#/components/responses/401' - /constitutions/{constitution}/follows: - parameters: - - $ref: '#/components/parameters/constitution' - post: - security: - - JWTAuth: [] - summary: Follow one constitution - tags: - - follow - - constitution - responses: - 201: - description: Return only http status 201 on success - 401: - $ref: '#/components/responses/401' - delete: - security: - - JWTAuth: [] - summary: Unfollow one constitution - tags: - - follow - - constitution - responses: - 204: - description: Return only http status 204 on success - 401: - $ref: '#/components/responses/401' - - /articles/{article}/vote: - parameters: - - $ref: '#/components/parameters/article' - put: - security: - - JWTAuth: [] - summary: Vote for one article - tags: - - vote - - article - 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' - 401: - $ref: '#/components/responses/401' - /constitutions/{constitution}/vote: - parameters: - - $ref: '#/components/parameters/constitution' - put: - security: - - JWTAuth: [] - summary: Vote for one constitution - tags: - - vote - - constitution - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/VoteRequest' - responses: - 201: - description: Return only http status 201 on success - /comments/{comment}/vote: - parameters: - - $ref: '#/components/parameters/comment' - put: - security: - - JWTAuth: [] - summary: Vote for a comment - tags: - - vote - - comment - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/VoteRequest' - responses: - 201: - description: Return votes aggregation - content: - application/json: - schema: - $ref: '#/components/schemas/VoteAggregation' - 401: - $ref: '#/components/responses/401' - - /articles/{article}/opinions: - parameters: - - $ref: '#/components/parameters/article' - put: - security: - - JWTAuth: [] - summary: Add Opinion on one article - tags: - - opinion - - article - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ArticleOpinionRequest' - responses: - 201: - description: Return the opinion - content: - application/json: - schema: - $ref: '#/components/schemas/Opinion' - 401: - $ref: '#/components/responses/401' - /opinions: - get: - summary: Get all opinions choices - tags: - - opinion - parameters: - - in: query - required: false - name: targets - description: opinion available for defined target - example: - - article - schema: - type: array - items: - type: string - responses: - 200: - description: return - content: - application/json: - schema: - $ref: '#/components/schemas/OpinionChoices' - /opinions/{opinion}: - parameters: - - $ref: '#/components/parameters/opinion' - get: - security: - - {} - summary: Get one opinion Choices - tags: - - opinion - responses: - 200: - description: return - content: - application/json: - schema: - $ref: '#/components/schemas/OpinionChoice' - /citizens/{citizen}/opinions: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: Get all opinions of citizen filtered by target ids - tags: - - opinion - - citizen - parameters: - - in: query - required: true - name: id - description: target ids - example: - - 9226c1a3-8091-c3fa-7d0d-c2e98c9bee7b - schema: - type: array - items: - type: string - format: uuid - responses: - 200: - description: Opinions - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/Opinion' - /citizens/{citizen}/opinions/articles: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: Get all opinions of one citizen - tags: - - opinion - - citizen - responses: - 200: - description: Opinions - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Paginated' - - type: object - properties: - result: - type: array - items: - $ref: '#/components/schemas/Opinion' - - - /citizens/{citizen}/votes/articles: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: all article vote for one citizen - tags: - - vote - - article - - citizen - responses: - 200: - description: Votes - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Paginated' - - type: object - properties: - result: - type: array - items: - $ref: '#/components/schemas/VoteResponse' - 401: - $ref: '#/components/responses/401' - /citizens/{citizen}/comments/articles: - parameters: - - $ref: '#/components/parameters/citizen' - get: - security: - - JWTAuth: [] - summary: all article comments for one citizen - tags: - - comment - - article - - citizen - responses: - 200: - description: Comments - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Paginated' - - type: object - properties: - result: - type: array - items: - $ref: '#/components/schemas/CommentResponse' - 401: - $ref: '#/components/responses/401' - - /workgroups: - get: - summary: Get all Workgroup (Paginated) - security: - - {} - - JWTAuth: [] - tags: - - workgroup - parameters: - - $ref: '#/components/parameters/page' - - $ref: '#/components/parameters/limit' - - $ref: '#/components/parameters/workgroupSort' - - $ref: '#/components/parameters/direction' - - $ref: '#/components/parameters/search' - - $ref: '#/components/parameters/createdBy' - responses: - 200: - description: paginated list of workgroup - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Paginated' - - type: object - properties: - result: - type: array - items: - $ref: '#/components/schemas/WorkgroupSimple' - post: - summary: Create new Workgroup - security: - - JWTAuth: [] - tags: - - workgroup - requestBody: - content: - application/json: - schema: - required: - - name - properties: - id: - type: string - format: uuid - nullable: true - name: - type: string - example: Les partisants du RIC - description: - type: string - example: Group formé pour la conception d'un RIC - logo: - type: string - nullable: true - anonymous: - type: boolean - example: false - nullable: true - default: true - owner: - type: string - format: uuid - example: 6434f4f9-f570-f22a-c134-8668350651ff - nullable: true - responses: - 201: - description: Workgroup created - content: - application/json: - schema: - properties: - id: - type: string - format: uuid - name: - type: string - example: Les partisants du RIC - description: - type: string - example: Group formé pour la conception d'un RIC - logo: - type: string - anonymous: - type: boolean - example: false - owner: - type: string - format: uuid - /workgroups/{workgroup}: - parameters: - - $ref: '#/components/parameters/workgroup' - get: - summary: Get one workgroup by ID - security: - - {} - - JWTAuth: [] - tags: - - workgroup - responses: - 200: - description: Workgroup - content: - application/json: - schema: - allOf: - - $ref: '#/components/schemas/Workgroup' - put: - summary: Edit one workgroup - security: - - JWTAuth: [] - tags: - - workgroup - requestBody: - content: - application/json: - schema: - required: - - name - properties: - name: - type: string - example: Les partisants du RIC - description: - type: string - example: Group formé pour la conception d'un RIC - logo: - type: string - nullable: true - anonymous: - type: boolean - example: false - nullable: true - default: true - owner: - type: string - format: uuid - example: 6434f4f9-f570-f22a-c134-8668350651ff - nullable: true - responses: - 200: - description: Workgroup updated - content: - application/json: - schema: - properties: - id: - type: string - format: uuid - name: - type: string - example: Les partisants du RIC - description: - type: string - example: Group formé pour la conception d'un RIC - logo: - type: string - anonymous: - type: boolean - example: false - owner: - type: string - format: uuid - delete: - summary: Delete one workgroup - security: - - JWTAuth: [] - tags: - - workgroup - responses: - 204: - description: Workgroup deleted - /workgroups/{workgroup}/members: - parameters: - - $ref: '#/components/parameters/workgroup' - post: - summary: Add members to the workgroup - security: - - JWTAuth: [] - tags: - - workgroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/MembersRequest' - responses: - 201: - description: the list of members - content: - application/json: - schema: - $ref: '#/components/schemas/MembersResponse' - put: - summary: Updates ALL members. PLEASE NOTE this removes all members who are not in request! - security: - - JWTAuth: [] - tags: - - workgroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/MembersRequest' - responses: - 201: - description: the list of members - content: - application/json: - schema: - $ref: '#/components/schemas/MembersResponse' - delete: - summary: Delete members of workgroup - security: - - JWTAuth: [] - tags: - - workgroup - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/MembersRequest' - responses: - 200: - description: the list of members - content: - application/json: - schema: - $ref: '#/components/schemas/MembersResponse' - -components: - responses: - 401: - description: Unautorized - content: - application/json: - schema: - description: noting - 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 - articleSort: - name: sort - in: query - description: The sort field name - example: createdAt - required: false - schema: - type: string - enum: - - title - - createdAt - - vote - - popularity - workgroupSort: - name: sort - in: query - description: The sort field name - example: createdAt - required: false - schema: - type: string - enum: - - name - - createdAt - 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: content50 - required: false - schema: - type: string - createdBy: - name: createdBy - in: query - description: filter by Author - example: 4d673bfa-eaef-4290-b52f-85a9c8a7eba5 - required: false - schema: - type: string - format: uuid - - citizen: - name: citizen - in: path - description: ID of citizen - example: 6434f4f9-f570-f22a-c134-8668350651ff - required: true - schema: - type: string - format: uuid - - article: - name: article - in: path - required: true - description: the ID of article - example: d91aa0cd-61d6-83cc-41bb-8d5656e130f7 - schema: - type: string - format: uuid - opinion: - in: path - required: true - name: opinion - description: Opinion ID - example: 6e978eb5-3c48-0def-b093-e01f43983adb - schema: - type: string - format: uuid - - constitution: - name: constitution - in: path - required: true - description: the ID of constitution - example: e74be8e4-6823-47c4-bd1b-789725b2fa8e - schema: - type: string - format: uuid - - comment: - name: comment - in: path - description: The ID of comment - example: 701dc504-db49-7e3a-2c0a-32542507ea57 - required: true - schema: - type: string - format: uuid - - workgroup: - name: workgroup - in: path - description: ID of workgroup - example: 82a0e60a-bb55-dbc0-1c3d-0a804df2b5df - required: true - schema: - type: string - format: uuid - - securitySchemes: - JWTAuth: - type: http - scheme: bearer - description: call /login to get token - bearerFormat: JWT - - 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' - DeletedAt: - properties: - deleted_at: - type: string - format: 'date-time' - deleted: - type: boolean - - versionId: - properties: - version_id: - $ref: '#/components/schemas/UUID' - - lastVersion: - properties: - last_version: - type: boolean - 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: - required: - - username - properties: - username: - type: string - example: - john-doe - UserResponse: - allOf: - - $ref: '#/components/schemas/UserBase' - - $ref: '#/components/schemas/UuidEntity' - UserRequest: - allOf: - - $ref: '#/components/schemas/UserBase' - - type: object - required: - - password - properties: - password: - type: string - 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 - required: - - first_name - - last_name - properties: - name: - type: object - properties: - first_name: - type: string - example: - john - last_name: - type: string - example: - Doe - birthday: - type: string - format: 'date' - example: '1984-12-25' - email: - type: string - format: email - example: my.email@dc-project.fr - CitizenRequest: - allOf: - - $ref: '#/components/schemas/CitizenBase' - - type: object - properties: - user: - $ref: '#/components/schemas/UserRequest' - - RegisterRequest: - $ref: '#/components/schemas/CitizenRequest' - - LoginRequest: - required: - - name - - password - properties: - name: - type: string - description: username - example: - john-doe - password: - type: string - description: Pasword - example: - azerty - - ArticleBase: - type: object - allOf: - - type: object - required: - - title - - content - - description - - tags - - anonymous - - draft - properties: - title: - type: string - example: - Limit power of press - content: - type: string - example: - Lorem upsum... - description: - type: string - example: - I think is the bether choice - tags: - type: array - items: - type: string - default: [] - example: [power, press] - anonymous: - type: boolean - default: true - draft: - type: boolean - default: false - workgroup: - allOf: - - $ref: '#/components/schemas/UuidEntity' - - default: null - - $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' - - $ref: '#/components/schemas/Votable' - - $ref: '#/components/schemas/Opinionable' - - ArticleRequest: - $ref: '#/components/schemas/ArticleBase' - - ConstitutionBase: - type: object - allOf: - - type: object - required: - - title - properties: - title: - type: string - example: - Constitution for the liberty - titles: - type: array - default: [] - items: - $ref: '#/components/schemas/TitleBase' - anonymous: - type: boolean - default: true - draft: - type: boolean - 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 - required: - - name - properties: - name: - type: string - 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 - required: - - content - properties: - content: - type: string - example: - Lorem ipsum... - CommentRequest: - allOf: - - $ref: '#/components/schemas/CommentBase' - - CommentResponse: - allOf: - - $ref: '#/components/schemas/CommentBase' - - $ref: '#/components/schemas/UpdatedAt' - - $ref: '#/components/schemas/Extra' - - $ref: '#/components/schemas/Votable' - - type: object - required: - - parent_ids - - parent - properties: - parents_ids: - type: array - items: - $ref: '#/components/schemas/UUID' - parent: - allOf: - - $ref: '#/components/schemas/UUID' - - FollowBase: - allOf: - - $ref: '#/components/schemas/Extra' - FollowResponse: - allOf: - - $ref: '#/components/schemas/FollowBase' - - - VoteBase: - allOf: - - type: object - required: - - note - properties: - note: - type: integer - minimum: -1 - maximum: 1 - 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 - total: - type: number - minimum: 0 - score: - type: number - - $ref: '#/components/schemas/UpdatedAt' - Votable: - type: object - properties: - votes: - $ref: '#/components/schemas/VoteAggregation' - Opinionable: - type: object - properties: - opinions: - type: string - additionalProperties: true - example: - Opinion1: 1 - Opinion2: 55 - - ArticleOpinionRequest: - type: object - properties: - ids: - type: array - items: - type: string - format: uuid - example: 6e978eb5-3c48-0def-b093-e01f43983adb - - OpinionChoices: - description: Opinion Choice - type: array - items: - $ref: '#/components/schemas/OpinionChoice' - - OpinionChoice: - description: Opinion Choice - allOf: - - type: object - required: - - name - properties: - id: - type: string - format: uuid - name: - type: string - example: opinion1 - target: - type: array - nullable: true - items: - type: string - description: the name of the target - - $ref: '#/components/schemas/CreatedAt' - - $ref: '#/components/schemas/DeletedAt' - - Opinion: - description: Opinion - allOf: - - type: object - properties: - id: - type: string - format: uuid - name: - type: string - example: opinion1 - target: - type: object - properties: - id: - type: string - format: uuid - reference: - type: string - example: article - choice: - type: object - allOf: - - $ref: '#/components/schemas/OpinionChoice' - reference: - type: string - example: opinion_on_article - - $ref: '#/components/schemas/CreatedBy' - - $ref: '#/components/schemas/CreatedAt' - - WorkgroupSimple: - description: Workgroup - allOf: - - type: object - properties: - id: - type: string - format: uuid - name: - type: string - example: Les partisants du RIC - description: - type: string - example: Group formé pour la conception d'un RIC - logo: - type: string - anonymous: - type: boolean - example: false - - $ref: '#/components/schemas/CreatedBy' - - $ref: '#/components/schemas/DeletedAt' - Workgroup: - description: Workgroup - allOf: - - $ref: '#/components/schemas/WorkgroupSimple' - - type: object - properties: - members: - $ref: '#/components/schemas/MembersResponse' - - $ref: '#/components/schemas/CreatedAt' - - $ref: '#/components/schemas/UpdatedAt' - MembersRequest: - description: members of workgroup - type: array - items: - $ref: '#/components/schemas/MemberRequest' - MembersResponse: - description: members of workgroup - type: array - items: - $ref: '#/components/schemas/MemberResponse' - MemberResponse: - description: Member of workgroup - type: object - properties: - citizen: - $ref: '#/components/schemas/CitizenResponse' - roles: - type: array - items: - type: string - enum: - - MASTER - - MANAGER - - EDITOR - - REPORTER - example: MASTER - MemberRequest: - description: Member of workgroup - type: object - properties: - citizen: - $ref: '#/components/schemas/UuidEntity' - roles: - type: array - items: - type: string - enum: - - MASTER - - MANAGER - - EDITOR - - REPORTER - example: MASTER - - - - 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 \ No newline at end of file