feat: update OpenAPI specification to version 3.0.4, enhance API endpoints, and improve response descriptions

This commit is contained in:
Elmar Kresse
2025-05-18 18:12:15 +02:00
parent 5aa1c32fcd
commit 2925bbaf95

View File

@ -1,10 +1,12 @@
openapi: 3.0.0 openapi: 3.0.4
info: info:
title: HTWKalendar API title: HTWKalendar API
version: 1.0.1 version: 1.0.2
servers: servers:
- url: https://htwkalendar.de - url: https://cal.htwk-leipzig.de
description: Production server description: Production server
- url: https://dev.cal.fsr.imn.htwk-leipzig.de
description: Development server
- url: http://localhost:8090 - url: http://localhost:8090
description: Local server description: Local server
paths: paths:
@ -16,6 +18,31 @@ paths:
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/fetch/daily/events:
get:
summary: Fetch daily events from remote
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
/api/fetch/group:
get:
summary: Fetch or update modules for a seminar group
security:
- ApiKeyAuth: []
parameters:
- name: seminarGroup
in: query
required: true
schema:
type: string
responses:
'200':
description: Successful response
/api/fetch/groups: /api/fetch/groups:
get: get:
summary: Fetch Seminar Groups summary: Fetch Seminar Groups
@ -24,6 +51,7 @@ paths:
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/fetch/sports: /api/fetch/sports:
get: get:
summary: Fetch Sport Events from HTWK Leipzig summary: Fetch Sport Events from HTWK Leipzig
@ -32,91 +60,178 @@ paths:
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/modules: /api/modules:
get:
summary: Get all modules distinct
responses:
'200':
description: Successful response
delete: delete:
summary: Delete Module summary: Delete all events
security: security:
- ApiKeyAuth: [] - ApiKeyAuth: []
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/rooms: /api/rooms:
get: get:
summary: Get Rooms summary: Get Rooms
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/rooms/free:
get:
summary: Get Free Rooms
parameters:
- name: from
in: query
description: start date
example: "2006-01-02T15:04:05Z"
required: true
schema:
type: string
- name: to
in: query
description: end date
example: "2006-01-02T15:04:05Z"
required: true
schema:
type: string
responses:
'200':
description: Successful response
/api/schedule/day: /api/schedule/day:
get: get:
summary: Get Day Schedule summary: Get Day Schedule
parameters: parameters:
- name: room - name: room
in: query in: query
description: room
example: "LN006-H"
required: true required: true
schema: schema:
type: string type: string
- name: date - name: date
in: query in: query
description: date
example: "2023-11-26"
required: true required: true
schema: schema:
type: string type: string
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/schedule: /api/schedule:
get: get:
summary: Get Schedule summary: Get Schedule
parameters: parameters:
- name: room - name: room
in: query in: query
description: room
example: "LN006-H"
required: true required: true
schema: schema:
type: string type: string
- name: from - name: from
in: query in: query
description: date description: start date
example: "2023-11-26"
required: true required: true
schema: schema:
type: string type: string
- name: to - name: to
in: query in: query
description: date description: end date
example: "2023-11-30" required: true
schema:
type: string
- name: mapped
in: query
description: optional mapping flag
required: false
schema:
type: string
responses:
'200':
description: Successful response
/api/course/modules:
get:
summary: Get Modules for Course
parameters:
- name: course
in: query
required: true
schema:
type: string
- name: semester
in: query
required: true required: true
schema: schema:
type: string type: string
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/createFeed:
/api/module:
get:
summary: Get Module
parameters:
- name: uuid
in: query
required: true
schema:
type: string
responses:
'200':
description: Successful response
/api/courses:
get:
summary: Get courses or courses by semester
parameters:
- name: semester
in: query
required: false
schema:
type: string
responses:
'200':
description: Successful response
/api/rooms/free:
get:
summary: Get Free Rooms
parameters:
- name: from
in: query
required: true
schema:
type: string
- name: to
in: query
required: true
schema:
type: string
responses:
'200':
description: Successful response
/api/courses/events:
get:
summary: Get Courses that have Events for specific semester
parameters:
- name: semester
in: query
required: true
schema:
type: string
responses:
'200':
description: Successful response
/api/events/types:
get:
summary: Get event types
responses:
'200':
description: Successful response
/api/events:
delete:
summary: Delete events for a course and semester
security:
- ApiKeyAuth: []
parameters:
- name: course
in: query
schema:
type: string
- name: semester
in: query
schema:
type: string
responses:
'200':
description: Successful response
/api/feed:
post: post:
summary: Create iCal Feed summary: Create iCal Feed
requestBody: requestBody:
@ -125,103 +240,42 @@ paths:
schema: schema:
type: array type: array
items: items:
$ref: '#/components/schemas/Module' $ref: '#/components/schemas/FeedCollection'
required:
- name
- modules
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/feed:
get: /api/feeds/{token}:
summary: Get iCal Feed for calendar delete:
summary: Delete iCal feed
parameters: parameters:
- name: token - name: token
in: query in: path
description: calendar token
required: true required: true
example: "ldluwzg3e73ffxq"
schema: schema:
type: string type: string
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/course/modules:
get: /api/collections/feeds/records/{id}:
summary: Get Modules for Course
parameters:
- name: course
in: query
description: course
required: true
example: "Software Engineering"
schema:
type: string
- name: semester
in: query
description: semester
required: true
example: "ws"
schema:
type: string
responses:
'200':
description: Successful response
/api/module:
get:
summary: Get Module
parameters:
- name: uuid
in: query
description: uuid
required: true
example: "d0b3a0e0-2f1a-4e1a-8b0a-0b9e1a0b9e1a"
schema:
type: string
responses:
'200':
description: Successful response
/api/courses:
get:
summary: Get Courses
responses:
'200':
description: Successful response
/api/courses/events:
get:
summary: Get Courses that have Events for specific semester
parameters:
- name: semester
in: query
description: semester
required: true
example: "ws"
schema:
type: string
responses:
'200':
description: Successful response
/api/collections/feeds/records/{id}:
get: get:
tags:
- iCal
- Feed
summary: Get Modules selected for iCal feed summary: Get Modules selected for iCal feed
parameters: parameters:
- name: id - name: id
in: path in: path
description: calendar token
required: true required: true
schema: schema:
type: string type: string
format: uuid
description: calendar token
responses: responses:
'200': '200':
description: Successful response description: Successful response
/api/events:
delete:
summary: Delete Event
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
/api/feeds/migrate: /api/feeds/migrate:
get: get:
summary: Migrates all iCal Feeds in the database to the new format summary: Migrates all iCal Feeds in the database to the new format
@ -230,36 +284,60 @@ paths:
responses: responses:
'200': '200':
description: Successful response description: Successful response
security: security:
- ApiKeyAuth: [] - ApiKeyAuth: []
components: components:
securitySchemes: securitySchemes:
ApiKeyAuth: ApiKeyAuth:
type: apiKey type: apiKey
in: header in: header
name: Authorization name: Authorization
schemas: schemas:
Module: Module:
type: object type: object
properties: properties:
name: name:
type: string
uuid:
type: string
format: uuid
course:
type: string
userDefinedName:
type: string
prof:
type: string
semester:
type: string
reminder:
type: boolean
events:
type: array
items:
type: string type: string
description: name FeedCollection:
example: "Software Engineering" type: object
uuid: properties:
type: string name:
format: uuid type: string
course: uuid:
type: string type: string
userDefinedName: course:
type: string type: string
prof: userDefinedName:
type: string type: string
semester: prof:
type: string type: string
reminder: semester:
type: boolean type: string
events: reminder:
type: array type: boolean
items: events:
type: string type: array
items:
type: string