diff --git a/Documents/proto/general/openapi.yaml b/Documents/proto/general/openapi.yaml index 014861d..381b210 100644 --- a/Documents/proto/general/openapi.yaml +++ b/Documents/proto/general/openapi.yaml @@ -18,6 +18,10 @@ tags: description: Scientifics articles extension's endpoints - name: Ext (Schedule) description: Schedule extension's endpoints + - name: Ext (Student Registration) + description: Student Registration's endpoints + - name: Ext (Messaging) + description: Messaging extension's endpoints paths: /ping: @@ -31,6 +35,610 @@ paths: schema: type: string example: pong + # Messaging + + /forum: + get: + summary: get list of available forum + security: + - bearer: [] + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + required: + - id + - name + - owner + properties: + id: + type: integer + name: + type: string + owner: + type: integer + description: user id of the teacher + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: Create a new forum + security: + - bearer: [] + tags: + - Ext (Messaging) + - Forum + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + type: string + courseId: + type: integer + responses: + '201': + description: User created + '401': + $ref: '#/components/responses/UnauthorizedError' + /forum/{forumId}: + parameters: + - name: forumId + in: path + description: Id of the forum + required: true + schema: + type: integer + get: + summary: get informations about a forum + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + required: + - id + - name + - owner + properties: + id: + type: integer + name: + type: string + owner: + type: integer + description: user id of the teacher + topics: + type: array + items: + type: object + properties: + id: + type: integer + name: + type: string + autor: + type: integer + description: user Id + registered: + description: List of registered user only if have the authorisation to view + type: array + items: + type: integer + description: userId + '401': + $ref: '#/components/responses/UnauthorizedError' + delete: + summary: remove the forum + security: + - bearer: [] + tags: + - Ext (Messaging) + - Forum + responses: + '201': + description: Forum deleted + '401': + $ref: '#/components/responses/UnauthorizedError' + /forum/{forumId}/topic: + parameters: + - name: forumId + in: path + description: Id of the forum + required: true + schema: + type: integer + get: + summary: list topics of a forum + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + required: + - id + - name + - author + properties: + id: + type: integer + name: + type: string + author: + type: integer + description: user id of the author + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: create a new topic in the forum + tags: + - Ext (Messaging) + - Forum + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + subject: + type: string + content: + type: integer + responses: + '201': + description: post created + '401': + $ref: '#/components/responses/UnauthorizedError' + /forum/{forumId}/topic/{topicId}: + parameters: + - name: forumId + in: path + description: Id of the forum + required: true + schema: + type: integer + - name: topicId + in: path + description: Id of the topic + required: true + schema: + type: integer + get: + summary: get info about a topic + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + required: + - id + - name + - author + - locked + properties: + id: + type: integer + name: + type: string + author: + type: integer + description: user id of the author + locked: + type: boolean + description: define if the topic is locked to new responses or not + '401': + $ref: '#/components/responses/UnauthorizedError' + delete: + summary: delete a topic + security: + - bearer: [] + tags: + - Ext (Messaging) + - Forum + responses: + '201': + description: Topic deleted + '401': + $ref: '#/components/responses/UnauthorizedError' + /forum/{forumId}/topic/{topicId}/response: + parameters: + - name: forumId + in: path + description: Id of the forum + required: true + schema: + type: integer + - name: topicId + in: path + description: Id of the topic + required: true + schema: + type: integer + get: + summary: list responses of a topic + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + author: + type: integer + description: user id of the author + content: + type: string + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: create a new response + tags: + - Ext (Messaging) + - Forum + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + content: + type: integer + responses: + '201': + description: Message posted + '401': + $ref: '#/components/responses/UnauthorizedError' + /forum/{forumId}/topic/{topicId}/response/{responseId}: + parameters: + - name: forumId + in: path + description: Id of the forum + required: true + schema: + type: integer + - name: topicId + in: path + description: Id of the topic + required: true + schema: + type: integer + - name: responseId + in: path + description: Id of the response + required: true + schema: + type: integer + get: + summary: get info on a response + tags: + - Ext (Messaging) + - Forum + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + required: + - id + - author + - content + properties: + id: + type: integer + author: + type: string + content: + type: integer + '401': + $ref: '#/components/responses/UnauthorizedError' + delete: + summary: delete a response + tags: + - Ext (Messaging) + - Forum + responses: + '201': + description: Message deleted + '401': + $ref: '#/components/responses/UnauthorizedError' + + /discussion: + get: + summary: get list of available discussions + tags: + - Ext (Messaging) + - discussion + responses: + '201': + description: OK + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + name: + type: string + users: + type: array + items: + type: integer + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: create a new discussion + tags: + - Ext (Messaging) + - discussion + requestBody: + require: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + name: + type: string + users: + type: array + descrition: id of users + items: + type: integer + responses: + '201': + description: Discussion created + '401': + $ref: '#/components/responses/UnauthorizedError' + /discussion/{id}: + parameters: + - name: id + in: path + description: Id of the discussion + required: true + schema: + type: integer + get: + summary: get info on a discussion + tags: + - Ext (Messaging) + - discussion + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + required: + - id + - name + - users + properties: + id: + type: integer + name: + type: string + users: + type: integer + description: user ids of participants + '401': + $ref: '#/components/responses/UnauthorizedError' + /discussion/{id}/msg: + parameters: + - name: id + in: path + description: Id of the discussion + required: true + schema: + type: integer + get: + summary: list messages in a discussion + tags: + - Ext (Messaging) + - discussion + responses: + '200': + description: Ok + content: + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + datetime: + type: integer + author: + type: integer + content: + type: string + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: post a new message in a discussion + tags: + - Ext (Messaging) + - discussion + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: string + description: message content + responses: + '201': + description: Message sent + '401': + $ref: '#/components/responses/UnauthorizedError' + + /appointment: + get: + summary: list appointments + tags: + - Ext (Messaging) + - appointment + parameters: + - name: type + in: query + required: false + schema: + type: string + enum: [open, closed] + responses: + '200': + description: Ok + content: + test/calendar: + description: file containing the appointments + application/json: + schema: + type: array + items: + type: object + properties: + id: + type: integer + teacher: + type: integer + student: + type: integer + date: + type: integer + status: + type: string + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: create a new appointment + tags: + - Ext (Messaging) + - appointment + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + content: + type: integer + datetime: + type: integer + to: + type: integer + description: user id of the person to request to + responses: + '201': + description: Appointment created + '401': + $ref: '#/components/responses/UnauthorizedError' + /appointment/{id}: + parameters: + - name: id + in: path + description: Id of the appointment + required: true + schema: + type: integer + get: + summary: get info on an appointment + tags: + - Ext (Messaging) + - appointment + responses: + '200': + description: Ok + content: + test/calendar: + description: file containing the appointment + application/json: + schema: + type: object + properties: + id: + type: integer + teacher: + type: integer + student: + type: integer + date: + type: integer + status: + type: string + '401': + $ref: '#/components/responses/UnauthorizedError' + post: + summary: Accept, decline or propose a new schedule for the appointment + tags: + - Ext (Messaging) + - appointment + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + type: object + properties: + action: + type: string + enum: [accept, refuse, propose] + data: + type: object + description: context dependant response (can be null) + responses: + '201': + description: Done + '401': + $ref: '#/components/responses/UnauthorizedError' + +# general /users: get: summary: list all users @@ -1234,7 +1842,3 @@ components: responses: UnauthorizedError: description: Unauthorized access or missing bearer - - - -