From 8ab1fbf97ed84e99248a30a691428171bee63050 Mon Sep 17 00:00:00 2001 From: Jonas Franz Date: Mon, 4 Sep 2017 16:39:55 +0000 Subject: [PATCH] =?UTF-8?q?'swagger.yml'=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- swagger.yml | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 swagger.yml diff --git a/swagger.yml b/swagger.yml new file mode 100644 index 0000000..880abef --- /dev/null +++ b/swagger.yml @@ -0,0 +1,245 @@ +swagger: "2.0" +info: + description: "Dies ist eine API, die es ermöglicht Daten zu Stunden-, Vertretungs-, oder Klausurplänen zu erhalten." + version: "1.0.0" + title: "Organizer" + termsOfService: "https://organizer.martin-luther.schule/terms" + contact: + email: "info@jonasfranz.software" + license: + name: "MIT" + url: "https://opensource.org/licenses/MIT" +host: "api.organizer.martin-luther.schule" +basePath: "/v1" +tags: +- name: "replacement lessons" + description: "Information about replacement and canceled lessons" +- name: "timetable" + description: "Zugriff auf Stundenpläne" +- name: "examination scheduling" + description: "Zugriff auf Klausurtermine" +schemes: +- "http" +- "https" +paths: + /replacement/findAll: + get: + tags: + - "replacement lessons" + summary: "Finds all available replacement lessons" + operationId: "findReplacementLessons" + security: + - passwordAuth: [] + produces: + - "application/json" + responses: + 200: + description: "successful operation" + schema: + type: "array" + items: + $ref: "#/definitions/ReplacementLesson" + /replacement/findByDate: + get: + tags: + - "replacement lessons" + summary: "Finds replacement lessons by date" + operationId: "findReplacementLessonsByDate" + security: + - passwordAuth: [] + produces: + - "application/json" + parameters: + - name: "date" + in: "query" + description: "Date of the searched replacement lessons" + type: "string" + format: "date" + required: true + responses: + 200: + description: "successful operation" + schema: + type: "array" + items: + $ref: "#/definitions/ReplacementLesson" + 410: + description: "Date is not or no longer available" + /replacement/{id}: + get: + tags: + - "replacement lessons" + summary: "Get replacement lesson by id" + operationId: "getReplacement" + security: + - passwordAuth: [] + produces: + - "application/json" + parameters: + - name: "id" + in: "path" + description: "Replacement lesson's id" + type: "integer" + format: "int64" + required: true + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/ReplacementLesson" + 404: + description: "Cannot find a matching replacement lesson" + 410: + description: "The lesson is no longer available." + /course/{course}/replacements: + get: + tags: + - "replacement lessons" + summary: "Get replacement lesson of a course/class" + operationId: "getReplacementByCourse" + security: + - passwordAuth: [] + produces: + - "application/json" + parameters: + - name: "course" + in: "path" + type: "string" + required: true + responses: + 200: + description: "successful operation" + schema: + type: "array" + items: + $ref: "#/definitions/ReplacementLesson" + /course/{course}/timetable: + get: + tags: + - "timetable" + summary: "Returns course's timetable" + operationId: "getTimetable" + security: + - passwordAuth: [] + produces: + - "application/json" + parameters: + - name: "course" + in: "path" + type: "string" + required: true + responses: + 200: + description: "Lessons sorted by weekday, period and teacher." + schema: + type: "array" + items: + $ref: '#/definitions/Lesson' + 404: + description: "Cannot find the course" + /course/{course}/exams: + get: + tags: + - "examination scheduling" + summary: "Returns course's exams" + operationId: "getExams" + security: + - passwordAuth: [] + produces: + - "application/json" + parameters: + - name: "course" + in: "path" + type: "string" + required: true + responses: + 200: + description: "Lessons sorted by weekday and period" + schema: + type: "array" + items: + $ref: '#/definitions/Exam' + 404: + description: "Cannot find the course" + +securityDefinitions: + passwordAuth: + type: basic +definitions: + Exam: + type: "object" + properties: + id: + type: "integer" + format: "int64" + x-go-name: "ID" + date: + type: "string" + format: "date" + startPeriod: + type: "integer" + minimum: 1 + maximum: 15 + description: "The period of the day where the exam starts" + endPeriod: + type: "integer" + minimum: 1 + maximum: 15 + description: "The period of the day where the exam ends" + lesson: + $ref: '#/definitions/Lesson' + Lesson: + type: "object" + properties: + weekday: + type: "integer" + minimum: 0 + maximum: 7 + period: + type: "integer" + minimum: 1 + maximum: 15 + description: "The period of the day where the lesson is" + course: + type: "string" + description: "Class or Course" + subject: + $ref: "#/definitions/Subject" + teacher: + $ref: "#/definitions/Teacher" + additionalInformation: + type: string + description: "An additional information like 'Every 14 days only'" + room: + type: string + ReplacementLesson: + type: "object" + properties: + id: + type: "integer" + format: "int64" + x-go-name: "ID" + date: + type: "string" + format: "date" + lesson: + $ref: '#/definitions/Lesson' + replacementLesson: + $ref: '#/definitions/Lesson' + Subject: + type: 'object' + properties: + abbreviation: + type: "string" + description: "The abbreviation of the subject like LB for sports." + name: + type: "string" + Teacher: + type: "object" + properties: + identifier: + type: "string" + description: "An unique string that is mostly the abbreviation of the teacher's name" + name: + type: "string" + description: "The family name of the teacher" \ No newline at end of file