Parcourir la source

feat: Add asset uploading, management endpoints and missing 404 errors

Close #15
Sean Blackburn il y a 1 an
Parent
commit
cc277b162f
67 fichiers modifiés avec 923 ajouts et 84 suppressions
  1. 14 5
      README.md
  2. 0 0
      src/components/examples/api/terms/{term}/revisions/{revision}/lectures/index.yaml
  3. 18 0
      src/components/examples/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml
  4. 6 0
      src/components/parameters/asset.yaml
  5. 6 0
      src/components/parameters/lecture.yaml
  6. 8 0
      src/components/responses/api/courses/index-post-200.yaml
  7. 8 0
      src/components/responses/api/courses/{course}/index-put-200.yaml
  8. 8 0
      src/components/responses/api/lecturers/index-post-200.yaml
  9. 8 0
      src/components/responses/api/lecturers/{lecturer}/index-put-200.yaml
  10. 8 0
      src/components/responses/api/modules/index-post-200.yaml
  11. 8 0
      src/components/responses/api/modules/{module}/index-put-200.yaml
  12. 8 0
      src/components/responses/api/terms/index-post-200.yaml
  13. 8 0
      src/components/responses/api/terms/{term}/index-put-200.yaml
  14. 8 0
      src/components/responses/api/terms/{term}/revisions/index-post-200.yaml
  15. 10 0
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/index-get-200.yaml
  16. 8 0
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/index-post-200.yaml
  17. 6 0
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/file-get-200.yaml
  18. 2 1
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/file-post-200.yaml
  19. 8 0
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/index-get-200.yaml
  20. 8 0
      src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put-200.yaml
  21. 2 4
      src/components/responses/api/terms/{term}/revisions/{revision}/index-put-200.yaml
  22. 9 0
      src/components/responses/api/terms/{term}/revisions/{revision}/lectures/index-get-200.yaml
  23. 7 0
      src/components/responses/api/terms/{term}/revisions/{revision}/lectures/index-post-200.yaml
  24. 8 0
      src/components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-get-200.yaml
  25. 8 0
      src/components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-put-200.yaml
  26. 1 1
      src/components/schemas/api/favourite.yaml
  27. 3 3
      src/components/schemas/api/lecture-series.yaml
  28. 3 3
      src/components/schemas/api/me-enrolment.yaml
  29. 1 1
      src/components/schemas/api/me-module.yaml
  30. 1 1
      src/components/schemas/api/module-dependency.yaml
  31. 2 2
      src/components/schemas/api/module.yaml
  32. 1 1
      src/components/schemas/api/personal-event.yaml
  33. 2 2
      src/components/schemas/api/plan.yaml
  34. 16 0
      src/components/schemas/api/term-revision-asset.yaml
  35. 21 0
      src/components/schemas/api/term.yaml
  36. 0 0
      src/components/schemas/relations/course-pk.yaml
  37. 0 0
      src/components/schemas/relations/lecture-series-pk.yaml
  38. 0 0
      src/components/schemas/relations/lecturer-pk.yaml
  39. 0 0
      src/components/schemas/relations/module-pk.yaml
  40. 0 0
      src/components/schemas/relations/term-pk.yaml
  41. 0 0
      src/components/schemas/relations/term-revision-pk.yaml
  42. 12 3
      src/openapi.yaml
  43. 24 0
      src/paths/api/courses/index.yaml
  44. 51 0
      src/paths/api/courses/{course}/index.yaml
  45. 24 0
      src/paths/api/lecturers/index.yaml
  46. 52 1
      src/paths/api/lecturers/{lecturer}/index.yaml
  47. 2 2
      src/paths/api/me/events/index.yaml
  48. 3 3
      src/paths/api/me/events/{event}/index.yaml
  49. 2 2
      src/paths/api/me/favourites/index.yaml
  50. 3 3
      src/paths/api/me/favourites/{favourite}/index.yaml
  51. 1 1
      src/paths/api/me/index.yaml
  52. 2 2
      src/paths/api/me/plans/index.yaml
  53. 3 3
      src/paths/api/me/plans/{plan}/index.yaml
  54. 24 0
      src/paths/api/modules/index.yaml
  55. 2 0
      src/paths/api/modules/{module}/history.yaml
  56. 51 0
      src/paths/api/modules/{module}/index.yaml
  57. 25 0
      src/paths/api/terms/index.yaml
  58. 51 0
      src/paths/api/terms/{term}/index.yaml
  59. 31 2
      src/paths/api/terms/{term}/revisions/index.yaml
  60. 44 0
      src/paths/api/terms/{term}/revisions/{revision}/assets/index.yaml
  61. 38 0
      src/paths/api/terms/{term}/revisions/{revision}/assets/{asset}/file.yaml
  62. 68 0
      src/paths/api/terms/{term}/revisions/{revision}/assets/{asset}/index.yaml
  63. 55 2
      src/paths/api/terms/{term}/revisions/{revision}/index.yaml
  64. 0 13
      src/paths/api/terms/{term}/revisions/{revision}/lecture-series.yaml
  65. 43 0
      src/paths/api/terms/{term}/revisions/{revision}/lectures/index.yaml
  66. 69 0
      src/paths/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml
  67. 0 23
      src/paths/assets/terms/{term}/revisions/{revision}/file.yaml

+ 14 - 5
README.md

@@ -10,7 +10,10 @@ module planner can be used on a static website, or also be integrated into a ser
 is connected to a database.
 
 When the Modulplaner is set to be hosted on a static site, the endpoints marked with
-`[OPTIONAL]` can not be reached.
+`[OPTIONAL:*]` can not be reached.
+
+- `[OPTIONAL:Storage]`: Storage endpoints for the users/students
+- `[OPTIONAL:Management]`: management endpoints for administrators
 
 
 ## Authentication
@@ -51,19 +54,25 @@ represents which endpoints should require authentication when implementing a ser
 - `Version`: If a `revision` is meant instead.
 
 
-### Types used
+## Types used
+
+The numeric fields have an additional `format` tag assigned.
 
-The numeric fields have an additional `format` tag assigned:
+### Unsigned
 
+- `u…`: Unsigned … bit
 - `u8`: Unsigned 8 bit (0 - 255)
 - `u16`: Unsigned 16 bit (0 - 65'535)
-- `u…`: Unsigned … bit
 
 
+### Signed
+
+- `i…`: Signed … bit
 - `i8`: Signed 8 bit (-128 - 127)
 - `i16`: Signed 16 bit (-32'768 - 32'767)
-- `i…`: Signed … bit
 
 
+### Floating
+
 - `f32`: 32 bit floating point number
 - `f64`: 64 bit floating point number

+ 0 - 0
src/components/examples/api/terms/{term}/revisions/{revision}/lecture-series.yaml → src/components/examples/api/terms/{term}/revisions/{revision}/lectures/index.yaml


+ 18 - 0
src/components/examples/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml

@@ -0,0 +1,18 @@
+pk: 1
+revision_pk: 1
+weekday: 0
+starts: 29700
+ends: 64800
+class: 1Da
+name: dummy
+rooms:
+  - 5.3B51
+lecturers:
+  - 14
+lecture_type: on_site
+module_execution_method: term_weekly
+pages:
+  - 1
+course_pk: 2
+part_of_other_classes: []
+dates: []

+ 6 - 0
src/components/parameters/asset.yaml

@@ -0,0 +1,6 @@
+name: asset
+in: path
+description: Asset
+required: true
+schema:
+  $ref: ../schemas/common/pk.yaml

+ 6 - 0
src/components/parameters/lecture.yaml

@@ -0,0 +1,6 @@
+name: lecture
+in: path
+description: Lecture
+required: true
+schema:
+  $ref: ../schemas/common/pk.yaml

+ 8 - 0
src/components/responses/api/courses/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../schemas/api/course.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../examples/api/lecturers/index.yaml

+ 8 - 0
src/components/responses/api/courses/{course}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../schemas/api/course.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../examples/api/courses/index.yaml

+ 8 - 0
src/components/responses/api/lecturers/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../schemas/api/lecturer.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../examples/api/lecturers/index.yaml

+ 8 - 0
src/components/responses/api/lecturers/{lecturer}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../schemas/api/lecturer.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../examples/api/lecturers/index.yaml

+ 8 - 0
src/components/responses/api/modules/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../schemas/api/module.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../examples/api/lecturers/index.yaml

+ 8 - 0
src/components/responses/api/modules/{module}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../schemas/api/module.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../examples/api/modules/index.yaml

+ 8 - 0
src/components/responses/api/terms/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../schemas/api/term-revisions-overview.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../examples/api/terms/index.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../schemas/api/term-revisions-overview.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../examples/api/terms/index.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../schemas/api/term-revision.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../examples/api/terms/{term}/revisions/index.yaml

+ 10 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/assets/index-get-200.yaml

@@ -0,0 +1,10 @@
+description: OK
+content:
+  application/json:
+    schema:
+      type: array
+      items:
+        $ref: ../../../../../../../schemas/api/term-revision-asset.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../../examples/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/assets/index-post-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../schemas/api/term-revision-asset.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../examples/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put.yaml

+ 6 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/file-get-200.yaml

@@ -0,0 +1,6 @@
+description: OK
+content:
+  application/octet-stream:
+    schema:
+      type: string
+      format: binary

+ 2 - 1
src/components/responses/assets/terms/{term}/revisions/{revision}/file-get-200.yaml → src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/file-post-200.yaml

@@ -1,4 +1,5 @@
 description: OK
 content:
   application/octet-stream:
-    example: ""
+    type: string
+    format: binary

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/index-get-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../../../schemas/api/term-revision-asset.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../examples/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../../schemas/api/term-revision-asset.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../examples/api/terms/{term}/revisions/{revision}/assets/{asset}/index-put.yaml

+ 2 - 4
src/components/responses/api/terms/{term}/revisions/{revision}/lecture-series-get-200.yaml → src/components/responses/api/terms/{term}/revisions/{revision}/index-put-200.yaml

@@ -2,8 +2,6 @@ description: OK
 content:
   application/json:
     schema:
-      type: array
-      items:
-        $ref: ../../../../../../schemas/api/lecture-series.yaml
+      $ref: ../../../../../../schemas/api/term-revision-config.yaml
     example:
-      $ref: ../../../../../../examples/api/terms/{term}/revisions/{revision}/lecture-series.yaml
+      $ref: ../../../../../../examples/api/terms/{term}/revisions/{revision}/index.yaml

+ 9 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/lectures/index-get-200.yaml

@@ -0,0 +1,9 @@
+description: OK
+content:
+  application/json:
+    schema:
+      type: array
+      items:
+        $ref: ../../../../../../../schemas/api/lecture-series.yaml
+    example:
+      $ref: ../../../../../../../examples/api/terms/{term}/revisions/{revision}/lectures/index.yaml

+ 7 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/lectures/index-post-200.yaml

@@ -0,0 +1,7 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../../schemas/api/lecture-series.yaml
+    example:
+      $ref: ../../../../../../../examples/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-get-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../../../schemas/api/lecture-series.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../../examples/api/terms/{term}/revisions/{revision}/lectures/{lecture}/lecture-series.yaml

+ 8 - 0
src/components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-put-200.yaml

@@ -0,0 +1,8 @@
+description: OK
+content:
+  application/json:
+    schema:
+      $ref: ../../../../../../../../schemas/api/lecture-series.yaml
+    # TODO
+    # example:
+    #   $ref: ../../../../../../../../examples/api/terms/{term}/revisions/{revision}/lectures/{lecture}/lecture-series.yaml

+ 1 - 1
src/components/schemas/api/favourite.yaml

@@ -4,6 +4,6 @@ properties:
   pk:
     $ref: ../common/pk.yaml
   module_pk:
-    $ref: ../relations/module.yaml
+    $ref: ../relations/module-pk.yaml
 required:
   - module_pk

+ 3 - 3
src/components/schemas/api/lecture-series.yaml

@@ -4,7 +4,7 @@ properties:
   pk:
     $ref: ../common/pk.yaml
   revision_pk:
-    $ref: ../relations/term-revision.yaml
+    $ref: ../relations/term-revision-pk.yaml
   weekday:
     description: The weekday the module took place on
     $ref: ../../enums/weekday.yaml
@@ -32,7 +32,7 @@ properties:
     description: List of lecturers teaching this module
     type: array
     items:
-      $ref: ../relations/lecturer.yaml
+      $ref: ../relations/lecturer-pk.yaml
   lecture_type:
     $ref: ../../enums/teaching-type.yaml
   module_execution_method:
@@ -46,7 +46,7 @@ properties:
       type: integer
       format: u16
   course_pk:
-    $ref: ../relations/course.yaml
+    $ref: ../relations/course-pk.yaml
   part_of_other_classes:
     description: List of other classes, where this module is also taught
     type: array

+ 3 - 3
src/components/schemas/api/me-enrolment.yaml

@@ -21,15 +21,15 @@ properties:
         const: failed
         description: The student failed the module
   course_pk:
-    $ref: ../relations/course.yaml
+    $ref: ../relations/course-pk.yaml
   term_pk:
-    $ref: ../relations/term.yaml
+    $ref: ../relations/term-pk.yaml
   ects:
     $ref: ../common/ects.yaml
   mark:
     $ref: ../common/mark.yaml
   module_pk:
-    $ref: ../relations/module.yaml
+    $ref: ../relations/module-pk.yaml
   start_date:
     description: When this enrolment started (UNIX timestamp in seconds)
     type: integer

+ 1 - 1
src/components/schemas/api/me-module.yaml

@@ -2,7 +2,7 @@ type: object
 description: A simplified module that is tailored to the `/me` endpoints
 properties:
   module_pk:
-    $ref: ../relations/module.yaml
+    $ref: ../relations/module-pk.yaml
   ects:
     $ref: ../common/ects.yaml
   mark:

+ 1 - 1
src/components/schemas/api/module-dependency.yaml

@@ -11,4 +11,4 @@ additionalProperties:
     Names according to ISO 639 (set 1), 2 character long codes.
   type: array
   items:
-    $ref: ../relations/module.yaml
+    $ref: ../relations/module-pk.yaml

+ 2 - 2
src/components/schemas/api/module.yaml

@@ -17,7 +17,7 @@ properties:
     type: array
     default: []
     items:
-      $ref: ../relations/course.yaml
+      $ref: ../relations/course-pk.yaml
   internal_module_pk:
     description: The internal unique module ID number of the university.
     type:
@@ -30,7 +30,7 @@ properties:
     type: array
     default: []
     items:
-      $ref: ../relations/module.yaml
+      $ref: ../relations/module-pk.yaml
   ects:
     description: The number of ECTS this module awards upon completion.
     type:

+ 1 - 1
src/components/schemas/api/personal-event.yaml

@@ -4,7 +4,7 @@ properties:
   pk:
     $ref: ../common/pk.yaml
   term_pk:
-    $ref: ../relations/term.yaml
+    $ref: ../relations/term-pk.yaml
   title:
     description: The title of the personal event
     type: string

+ 2 - 2
src/components/schemas/api/plan.yaml

@@ -4,7 +4,7 @@ properties:
   pk:
     $ref: ../common/pk.yaml
   revision_pk:
-    $ref: ../relations/term-revision.yaml
+    $ref: ../relations/term-revision-pk.yaml
   name:
     description: A memorable name for this plan
     type: string
@@ -17,7 +17,7 @@ properties:
   selected_lecture_series:
     type: array
     items:
-      $ref: ../relations/lecture-series.yaml
+      $ref: ../relations/lecture-series-pk.yaml
 required:
   - revision_pk
   - name

+ 16 - 0
src/components/schemas/api/term-revision-asset.yaml

@@ -0,0 +1,16 @@
+description: A single asset
+type: object
+properties:
+  pk:
+    $ref: ../common/pk.yaml
+  term_revision_pk:
+    $ref: ../relations/term-revision-pk.yaml
+  uploaded_on:
+    description: The date the asset was uploaded on (Unix timestamp in seconds)
+    type: integer
+    format: u64
+  name:
+    description: The filename
+    type: string
+required:
+  - name

+ 21 - 0
src/components/schemas/api/term.yaml

@@ -0,0 +1,21 @@
+type: object
+description: Single term and all of its revisions
+properties:
+  pk:
+    $ref: ../common/pk.yaml
+  term:
+    description: Name of the term
+    type: string
+    example: "24HS"
+  start_date:
+    description: Date, when the term starts
+    type: integer
+    format: u64
+  end_date:
+    description: Date, when the term ends
+    type: integer
+    format: u64
+required:
+  - term
+  - start_date
+  - end_date

+ 0 - 0
src/components/schemas/relations/course.yaml → src/components/schemas/relations/course-pk.yaml


+ 0 - 0
src/components/schemas/relations/lecture-series.yaml → src/components/schemas/relations/lecture-series-pk.yaml


+ 0 - 0
src/components/schemas/relations/lecturer.yaml → src/components/schemas/relations/lecturer-pk.yaml


+ 0 - 0
src/components/schemas/relations/module.yaml → src/components/schemas/relations/module-pk.yaml


+ 0 - 0
src/components/schemas/relations/term.yaml → src/components/schemas/relations/term-pk.yaml


+ 0 - 0
src/components/schemas/relations/term-revision.yaml → src/components/schemas/relations/term-revision-pk.yaml


+ 12 - 3
src/openapi.yaml

@@ -49,16 +49,25 @@ paths:
   /api/terms/{term}/revisions:
     $ref: ./paths/api/terms/{term}/revisions/index.yaml
 
+  # Terms / Revisions / Lectures
   /api/terms/{term}/revisions/{revision}:
     $ref: ./paths/api/terms/{term}/revisions/{revision}/index.yaml
   /api/terms/{term}/revisions/{revision}/lectures:
-    $ref: ./paths/api/terms/{term}/revisions/{revision}/lecture-series.yaml
+    $ref: ./paths/api/terms/{term}/revisions/{revision}/lectures/index.yaml
+  /api/terms/{term}/revisions/{revision}/lectures/{lecture}:
+    $ref: ./paths/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml
+
+  # Terms / Revisions / assets
+  /api/terms/{term}/revisions/{revision}/assets:
+    $ref: ./paths/api/terms/{term}/revisions/{revision}/assets/index.yaml
+  /api/terms/{term}/revisions/{revision}/assets/{asset}:
+    $ref: ./paths/api/terms/{term}/revisions/{revision}/assets/{asset}/index.yaml
+  /api/terms/{term}/revisions/{revision}/assets/{asset}/file:
+    $ref: ./paths/api/terms/{term}/revisions/{revision}/assets/{asset}/file.yaml
 
   # Assets
   /assets/changelog:
     $ref: ./paths/assets/changelog.yaml
-  /assets/terms/{term}/revisions/{revision}/file/{file}:
-    $ref: ./paths/assets/terms/{term}/revisions/{revision}/file.yaml
 
   # Me
   /me:

+ 24 - 0
src/paths/api/courses/index.yaml

@@ -8,3 +8,27 @@ get:
   responses:
     "200":
       $ref: ../../../components/responses/api/courses/index-get-200.yaml
+post:
+  operationId: PostCourse
+  summary: >-
+    Create a new course. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  tags:
+    - Courses
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../components/schemas/api/course.yaml"
+  responses:
+    "200":
+      $ref: ../../../components/responses/api/courses/index-post-200.yaml
+    "401":
+      $ref: ../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../components/responses/404.yaml

+ 51 - 0
src/paths/api/courses/{course}/index.yaml

@@ -10,3 +10,54 @@ get:
   responses:
     "200":
       $ref: ../../../../components/responses/api/courses/{course}/index-get-200.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+put:
+  operationId: PutCourse
+  summary: >-
+    Update a course. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/course.yaml
+  tags:
+    - Courses
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../components/schemas/api/course.yaml"
+  responses:
+    "200":
+      $ref: ../../../../components/responses/api/courses/{course}/index-put-200.yaml
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteCourse
+  summary: >-
+    Delete a course. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/course.yaml
+  tags:
+    - Courses
+  responses:
+    "204":
+      $ref: ../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml

+ 24 - 0
src/paths/api/lecturers/index.yaml

@@ -8,3 +8,27 @@ get:
   responses:
     "200":
       $ref: ../../../components/responses/api/lecturers/index-get-200.yaml
+post:
+  operationId: PostLecturer
+  summary: >-
+    Create a new lecturer. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  tags:
+    - Lecturers
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../components/schemas/api/lecturer.yaml"
+  responses:
+    "200":
+      $ref: ../../../components/responses/api/lecturers/index-post-200.yaml
+    "401":
+      $ref: ../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../components/responses/404.yaml

+ 52 - 1
src/paths/api/lecturers/{lecturer}/index.yaml

@@ -6,7 +6,58 @@ get:
   parameters:
     - $ref: ../../../../components/parameters/lecturer.yaml
   tags:
-    - Courses
+    - Lecturers
   responses:
     "200":
       $ref: ../../../../components/responses/api/lecturers/{lecturer}/index-get-200.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+put:
+  operationId: PutLecturer
+  summary: >-
+    Update a lecturer. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/lecturer.yaml
+  tags:
+    - Lecturers
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../components/schemas/api/lecturer.yaml"
+  responses:
+    "200":
+      $ref: ../../../../components/responses/api/lecturers/{lecturer}/index-put-200.yaml
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteLecturer
+  summary: >-
+    Delete a lecturer. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/lecturer.yaml
+  tags:
+    - Lecturers
+  responses:
+    "204":
+      $ref: ../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml

+ 2 - 2
src/paths/api/me/events/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetPersonalEvents
   summary: >-
-    Get a list of personal events. [OPTIONAL]
+    Get a list of personal events. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -19,7 +19,7 @@ get:
 post:
   operationId: PostPersonalEvents
   summary: >-
-    Create a new personal event. [OPTIONAL]
+    Create a new personal event. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 3 - 3
src/paths/api/me/events/{event}/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetPersonalEvent
   summary: >-
-    Get a single personal event. [OPTIONAL]
+    Get a single personal event. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -22,7 +22,7 @@ get:
 put:
   operationId: PutPersonalEvent
   summary: >-
-    Update a personal event. [OPTIONAL]
+    Update a personal event. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -49,7 +49,7 @@ put:
 delete:
   operationId: DeletePersonalEvent
   summary: >-
-    Delete a personal event. [OPTIONAL]
+    Delete a personal event. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 2 - 2
src/paths/api/me/favourites/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetFavourites
   summary: >-
-    Get a list of personal favourites. [OPTIONAL]
+    Get a list of personal favourites. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -19,7 +19,7 @@ get:
 post:
   operationId: PostFavourites
   summary: >-
-    Create a new personal favourite. [OPTIONAL]
+    Create a new personal favourite. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 3 - 3
src/paths/api/me/favourites/{favourite}/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetFavourite
   summary: >-
-    Get a single personal favourite. [OPTIONAL]
+    Get a single personal favourite. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -22,7 +22,7 @@ get:
 put:
   operationId: PutFavourite
   summary: >-
-    Update a personal favourite. [OPTIONAL]
+    Update a personal favourite. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -49,7 +49,7 @@ put:
 delete:
   operationId: DeleteFavourite
   summary: >-
-    Delete a personal favourite. [OPTIONAL]
+    Delete a personal favourite. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 1 - 1
src/paths/api/me/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetMe
   summary: >-
-    Get information about myself. [OPTIONAL]
+    Get information about myself. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 2 - 2
src/paths/api/me/plans/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetPlans
   summary: >-
-    Get a list of personal plans. [OPTIONAL]
+    Get a list of personal plans. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -19,7 +19,7 @@ get:
 post:
   operationId: PostPlan
   summary: >-
-    Create a new personal plan. [OPTIONAL]
+    Create a new personal plan. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 3 - 3
src/paths/api/me/plans/{plan}/index.yaml

@@ -1,7 +1,7 @@
 get:
   operationId: GetPlan
   summary: >-
-    Get a single plan. [OPTIONAL]
+    Get a single plan. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -22,7 +22,7 @@ get:
 put:
   operationId: PutPlan
   summary: >-
-    Update a personal plan. [OPTIONAL]
+    Update a personal plan. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!
@@ -49,7 +49,7 @@ put:
 delete:
   operationId: DeletePlan
   summary: >-
-    Delete a personal plan. [OPTIONAL]
+    Delete a personal plan. [OPTIONAL:Storage]
   description: >-
     **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
     requires a server running!

+ 24 - 0
src/paths/api/modules/index.yaml

@@ -8,3 +8,27 @@ get:
   responses:
     "200":
       $ref: ../../../components/responses/api/modules/index-get-200.yaml
+post:
+  operationId: PostModule
+  summary: >-
+    Create a new module. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  tags:
+    - Modules
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../components/schemas/api/module.yaml"
+  responses:
+    "200":
+      $ref: ../../../components/responses/api/modules/index-post-200.yaml
+    "401":
+      $ref: ../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../components/responses/404.yaml

+ 2 - 0
src/paths/api/modules/{module}/history.yaml

@@ -10,3 +10,5 @@ get:
   responses:
     "200":
       $ref: ../../../../components/responses/api/modules/{module}/history-get-200.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml

+ 51 - 0
src/paths/api/modules/{module}/index.yaml

@@ -10,3 +10,54 @@ get:
   responses:
     "200":
       $ref: ../../../../components/responses/api/modules/{module}/index-get-200.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+put:
+  operationId: PutModule
+  summary: >-
+    Update a module. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/module.yaml
+  tags:
+    - Modules
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../components/schemas/api/module.yaml"
+  responses:
+    "200":
+      $ref: ../../../../components/responses/api/modules/{module}/index-put-200.yaml
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteModule
+  summary: >-
+    Delete a module. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/module.yaml
+  tags:
+    - Modules
+  responses:
+    "204":
+      $ref: ../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml

+ 25 - 0
src/paths/api/terms/index.yaml

@@ -8,3 +8,28 @@ get:
   responses:
     "200":
       $ref: ../../../components/responses/api/terms/index-get-200.yaml
+
+post:
+  operationId: PostTerm
+  summary: >-
+    Create a new term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  tags:
+    - Terms
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../components/schemas/api/term.yaml"
+  responses:
+    "200":
+      $ref: ../../../components/responses/api/terms/index-post-200.yaml
+    "401":
+      $ref: ../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../components/responses/404.yaml

+ 51 - 0
src/paths/api/terms/{term}/index.yaml

@@ -10,3 +10,54 @@ get:
   responses:
     "200":
       $ref: ../../../../components/responses/api/terms/{term}/index-get-200.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+put:
+  operationId: PutTerm
+  summary: >-
+    Update a term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/term.yaml
+  tags:
+    - Terms
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../components/schemas/api/term.yaml"
+  responses:
+    "200":
+      $ref: ../../../../components/responses/api/terms/{term}/index-put-200.yaml
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteTerm
+  summary: >-
+    Delete a term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../components/parameters/term.yaml
+  tags:
+    - Terms
+  responses:
+    "204":
+      $ref: ../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../components/responses/404.yaml

+ 31 - 2
src/paths/api/terms/{term}/revisions/index.yaml

@@ -1,12 +1,41 @@
 get:
-  operationId: GetTermChanges
+  operationId: GetTermRevisions
   summary: >-
     A list of all changes between the revisions of this term.
   security: []
   parameters:
     - $ref: ../../../../../components/parameters/term.yaml
   tags:
-    - Term
+    - Terms / Revision
   responses:
     "200":
       $ref: ../../../../../components/responses/api/terms/{term}/revisions/index-get-200.yaml
+    "404":
+      $ref: ../../../../../components/responses/404.yaml
+
+post:
+  operationId: PostTermRevision
+  summary: >-
+    Create a new term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../components/parameters/term.yaml
+  tags:
+    - Terms / Revision
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../../components/schemas/api/term.yaml"
+  responses:
+    "200":
+      $ref: ../../../../../components/responses/api/terms/{term}/revisions/index-post-200.yaml
+    "401":
+      $ref: ../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../components/responses/404.yaml

+ 44 - 0
src/paths/api/terms/{term}/revisions/{revision}/assets/index.yaml

@@ -0,0 +1,44 @@
+get:
+  operationId: GetTermRevisionAssets
+  summary: >-
+    Retrieve a list of all assets for a specific term/revision.
+  security: []
+  tags:
+    - Terms / Revisions / Assets
+  parameters:
+    - $ref: ../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../components/parameters/revision.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/assets/index-get-200.yaml
+    "404":
+      $ref: ../../../../../../../components/responses/404.yaml
+
+post:
+  operationId: PostTermRevisionAsset
+  summary: >-
+    Upload a new asset for a specific term/revision. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  tags:
+    - Terms / Revisions / Assets
+  parameters:
+    - $ref: ../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../components/parameters/revision.yaml
+  requestBody:
+    required: true
+    content:
+      application/octet-stream:
+        schema:
+          type: string
+          format: binary
+  responses:
+    "204":
+      $ref: ../../../../../../../components/responses/204.yaml
+    "401":
+      $ref: ../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../components/responses/404.yaml

+ 38 - 0
src/paths/api/terms/{term}/revisions/{revision}/assets/{asset}/file.yaml

@@ -0,0 +1,38 @@
+get:
+  operationId: GetTermRevisionAssetFile
+  summary: >-
+    Download an asset for a specific term/revision.
+  description: >-
+    The download should not be forced upon the user, but simply stream the file.
+  security: []
+  tags:
+    - Terms / Revisions / Assets
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/asset.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/file-get-200.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml
+
+post:
+  operationId: PostTermRevisionAssetFile
+  summary: >-
+    Upload an asset for a specific term/revision. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security: []
+  tags:
+    - Terms / Revisions / Assets
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/asset.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/204.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml

+ 68 - 0
src/paths/api/terms/{term}/revisions/{revision}/assets/{asset}/index.yaml

@@ -0,0 +1,68 @@
+get:
+  operationId: GetTermRevisionAssetDownload
+  summary: >-
+    Get the asset information
+  security: []
+  tags:
+    - Terms / Revisions / Assets
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/asset.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/assets/{asset}/index-get-200.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml
+
+put:
+  operationId: PutTermRevisionAsset
+  summary: >-
+    Update an asset. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/asset.yaml
+  tags:
+    - Terms / Revisions / Assets
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../../../../../components/schemas/api/term-revision-asset.yaml"
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-put-200.yaml
+    "401":
+      $ref: ../../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteTermRevisionAsset
+  summary: >-
+    Delete an asset. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/asset.yaml
+  tags:
+    - Terms / Revisions / Assets
+  responses:
+    "204":
+      $ref: ../../../../../../../../components/responses/204.yaml
+    "401":
+      $ref: ../../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml

+ 55 - 2
src/paths/api/terms/{term}/revisions/{revision}/index.yaml

@@ -1,13 +1,66 @@
 get:
-  operationId: GetTermRevisionConfig
+  operationId: GetTermRevision
   summary: >-
     Configuration/additional information for this term/revision.
   security: []
   tags:
-    - Term / Revision
+    - Terms / Revision
   parameters:
     - $ref: ../../../../../../components/parameters/term.yaml
     - $ref: ../../../../../../components/parameters/revision.yaml
   responses:
     "200":
       $ref: ../../../../../../components/responses/api/terms/{term}/revisions/{revision}/index-get-200.yaml
+    "404":
+      $ref: ../../../../../../components/responses/404.yaml
+
+put:
+  operationId: PutTermRevision
+  summary: >-
+    Update a terms revision. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../components/parameters/revision.yaml
+  tags:
+    - Terms / Revision
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../../../components/schemas/api/term.yaml"
+  responses:
+    "200":
+      $ref: ../../../../../../components/responses/api/terms/{term}/revisions/{revision}/index-put-200.yaml
+    "401":
+      $ref: ../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteTermRevision
+  summary: >-
+    Delete a term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../components/parameters/revision.yaml
+  tags:
+    - Terms / Revision
+  responses:
+    "204":
+      $ref: ../../../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../components/responses/404.yaml

+ 0 - 13
src/paths/api/terms/{term}/revisions/{revision}/lecture-series.yaml

@@ -1,13 +0,0 @@
-get:
-  operationId: GetTermRevisionLectures
-  summary: >-
-    A list of all lectures for this term/revision.
-  security: []
-  tags:
-    - Term / Revision
-  parameters:
-    - $ref: ../../../../../../components/parameters/term.yaml
-    - $ref: ../../../../../../components/parameters/revision.yaml
-  responses:
-    "200":
-      $ref: ../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lecture-series-get-200.yaml

+ 43 - 0
src/paths/api/terms/{term}/revisions/{revision}/lectures/index.yaml

@@ -0,0 +1,43 @@
+get:
+  operationId: GetTermRevisionLectures
+  summary: >-
+    A list of all lectures for this term/revision.
+  security: []
+  tags:
+    - Terms / Revisions / Lectures
+  parameters:
+    - $ref: ../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../components/parameters/revision.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lectures/index-get-200.yaml
+    "404":
+      $ref: ../../../../../../../components/responses/404.yaml
+
+post:
+  operationId: PostTermRevisionLecture
+  summary: >-
+    Create a new terms revisions lecture. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../components/parameters/revision.yaml
+  tags:
+    - Terms / Revisions / Lectures
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../../../../components/schemas/api/lecture-series.yaml"
+  responses:
+    "200":
+      $ref: ../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lectures/index-post-200.yaml
+    "401":
+      $ref: ../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../components/responses/404.yaml

+ 69 - 0
src/paths/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index.yaml

@@ -0,0 +1,69 @@
+get:
+  operationId: GetTermRevisionLecture
+  summary: >-
+    Get s single terms revisions lecture
+  security: []
+  tags:
+    - Terms / Revisions / Lectures
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/lecture.yaml
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lectures/index-get-200.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml
+
+put:
+  operationId: PutTermRevisionLecture
+  summary: >-
+    Update a terms revisions lecture. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/lecture.yaml
+  tags:
+    - Terms / Revisions / Lectures
+  requestBody:
+    required: true
+    content:
+      application/json:
+        schema:
+          $ref: "../../../../../../../../components/schemas/api/lecture-series.yaml"
+  responses:
+    "200":
+      $ref: ../../../../../../../../components/responses/api/terms/{term}/revisions/{revision}/lectures/{lecture}/index-put-200.yaml
+    "401":
+      $ref: ../../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml
+
+delete:
+  operationId: DeleteTermRevisionLecture
+  summary: >-
+    Delete a term. [OPTIONAL:Management]
+  description: >-
+    **THIS IS AN OPTIONAL ENDPOINT**: This endpoint might not be implemented, as it
+    requires a server running!
+  security:
+    - authRequired: []
+  parameters:
+    - $ref: ../../../../../../../../components/parameters/term.yaml
+    - $ref: ../../../../../../../../components/parameters/revision.yaml
+    - $ref: ../../../../../../../../components/parameters/lecture.yaml
+  tags:
+    - Terms / Revisions / Lectures
+  responses:
+    "204":
+      $ref: ../../../../../../../../components/responses/204.yaml
+    # TODO: What about dependencies?
+    "401":
+      $ref: ../../../../../../../../components/responses/401.yaml
+    "404":
+      $ref: ../../../../../../../../components/responses/404.yaml

+ 0 - 23
src/paths/assets/terms/{term}/revisions/{revision}/file.yaml

@@ -1,23 +0,0 @@
-get:
-  operationId: GetTermRevisionFile
-  summary: >-
-    Retrieve a file for a specific term/revision.
-  security: []
-  tags:
-    - Assets
-    - Term / Revision
-  parameters:
-    - $ref: ../../../../../../components/parameters/term.yaml
-    - $ref: ../../../../../../components/parameters/revision.yaml
-    - name: file
-      in: path
-      description: File to retrieve
-      required: true
-      schema:
-        type: string
-        summary: Name of the file to be fetched from the server.
-  responses:
-    "200":
-      $ref: ../../../../../../components/responses/assets/terms/{term}/revisions/{revision}/file-get-200.yaml
-    "404":
-      $ref: ../../../../../../components/responses/404.yaml