Swagger-API for the Organizer App
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
OrganizerAPI/swagger.yml

245 lines
6.2 KiB

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"