openapi.json 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172
  1. {
  2. "openapi": "3.1.0",
  3. "info": {
  4. "title": "Modulplaner OpenAPI",
  5. "version": "1.0.0",
  6. "contact": {
  7. "email": "sean@black-burn.ch"
  8. },
  9. "description": "OpenAPI documentation of the modulplaner API\n",
  10. "license": {
  11. "name": "MPL 2.0",
  12. "url": "https://www.mozilla.org/en-US/MPL/2.0/"
  13. }
  14. },
  15. "servers": [
  16. {
  17. "url": "http://localhost:8080",
  18. "description": "localhost"
  19. }
  20. ],
  21. "paths": {
  22. "/data/semester-versions.json": {
  23. "get": {
  24. "operationId": "GetSemesterVersions",
  25. "summary": "Overview of the available semesters and their respective versions of the timetable.",
  26. "security": [],
  27. "tags": [
  28. "Semesters"
  29. ],
  30. "responses": {
  31. "200": {
  32. "$ref": "#/components/responses/semester-versions-200"
  33. }
  34. }
  35. }
  36. },
  37. "/data/modules.json": {
  38. "get": {
  39. "operationId": "GetModules",
  40. "summary": "All available modules and additional information.",
  41. "security": [],
  42. "tags": [
  43. "Modules"
  44. ],
  45. "responses": {
  46. "200": {
  47. "$ref": "#/components/responses/modules-200"
  48. }
  49. }
  50. }
  51. },
  52. "/data/lecturers.json": {
  53. "get": {
  54. "operationId": "GetLecturers",
  55. "summary": "A list of all the lecturers.",
  56. "security": [],
  57. "tags": [
  58. "Lecturers"
  59. ],
  60. "responses": {
  61. "200": {
  62. "$ref": "#/components/responses/lecturers-200"
  63. }
  64. }
  65. }
  66. },
  67. "/data/module-history.json": {
  68. "get": {
  69. "operationId": "GetModuleHistory",
  70. "summary": "A list of all the lecturers.",
  71. "security": [],
  72. "tags": [
  73. "Modules"
  74. ],
  75. "responses": {
  76. "200": {
  77. "$ref": "#/components/responses/module-history-200"
  78. }
  79. }
  80. }
  81. },
  82. "/data/changelog.html": {
  83. "get": {
  84. "operationId": "GetHTMLChangelog",
  85. "summary": "HTML Changelog of the modulplaner frontend",
  86. "security": [],
  87. "tags": [
  88. "Changelog"
  89. ],
  90. "responses": {
  91. "200": {
  92. "$ref": "#/components/responses/changelog-html-200"
  93. }
  94. }
  95. }
  96. },
  97. "/data/{semester}/config.json": {
  98. "get": {
  99. "operationId": "GetSemesterConfig",
  100. "summary": "Configuration / additional information for this semester.",
  101. "security": [],
  102. "tags": [
  103. "Semester"
  104. ],
  105. "parameters": [
  106. {
  107. "$ref": "#/components/parameters/semester"
  108. }
  109. ],
  110. "responses": {
  111. "200": {
  112. "$ref": "#/components/responses/semester-config-200"
  113. }
  114. }
  115. }
  116. },
  117. "/data/{semester}/changes.json": {
  118. "get": {
  119. "operationId": "GetSemesterChanges",
  120. "summary": "A list of all changes between the versions of this semester.",
  121. "security": [],
  122. "tags": [
  123. "Semester"
  124. ],
  125. "parameters": [
  126. {
  127. "$ref": "#/components/parameters/semester"
  128. }
  129. ],
  130. "responses": {
  131. "200": {
  132. "$ref": "#/components/responses/changes-200"
  133. }
  134. }
  135. }
  136. },
  137. "/data/{semester}/blockclasses.json": {
  138. "get": {
  139. "operationId": "GetSemesterBlockclasses",
  140. "summary": "A list of all blockclasses for this semester.",
  141. "security": [],
  142. "tags": [
  143. "Semester"
  144. ],
  145. "parameters": [
  146. {
  147. "$ref": "#/components/parameters/semester"
  148. }
  149. ],
  150. "responses": {
  151. "200": {
  152. "$ref": "#/components/responses/blockclasses-200"
  153. }
  154. }
  155. }
  156. },
  157. "/data/{semester}/{version}/classes.json": {
  158. "get": {
  159. "operationId": "GetSemesterVersionClasses",
  160. "summary": "A list of all classes for this semester/version.",
  161. "security": [],
  162. "tags": [
  163. "Semester Version"
  164. ],
  165. "parameters": [
  166. {
  167. "$ref": "#/components/parameters/semester"
  168. },
  169. {
  170. "$ref": "#/components/parameters/version"
  171. }
  172. ],
  173. "responses": {
  174. "200": {
  175. "$ref": "#/components/responses/classes-200"
  176. }
  177. }
  178. }
  179. },
  180. "/data/{semester}/{version}/config.json": {
  181. "get": {
  182. "operationId": "GetSemesterVersionConfig",
  183. "summary": "Configuration/additional information for this semester/version.",
  184. "security": [],
  185. "tags": [
  186. "Semester Version"
  187. ],
  188. "parameters": [
  189. {
  190. "$ref": "#/components/parameters/semester"
  191. },
  192. {
  193. "$ref": "#/components/parameters/version"
  194. }
  195. ],
  196. "responses": {
  197. "200": {
  198. "$ref": "#/components/responses/semester-version-config-200"
  199. }
  200. }
  201. }
  202. },
  203. "/data/{semester}/{version}/klassen.pdf": {
  204. "get": {
  205. "operationId": "GetSemesterVersionKlassenPDF",
  206. "summary": "PDF of the original timetable.",
  207. "security": [],
  208. "tags": [
  209. "Semester Version"
  210. ],
  211. "parameters": [
  212. {
  213. "$ref": "#/components/parameters/semester"
  214. },
  215. {
  216. "$ref": "#/components/parameters/version"
  217. }
  218. ],
  219. "responses": {
  220. "200": {
  221. "$ref": "#/components/responses/klassen-pdf-200"
  222. }
  223. }
  224. }
  225. }
  226. },
  227. "components": {
  228. "schemas": {
  229. "semester-version": {
  230. "type": "object",
  231. "description": "Single semester and all of its versions",
  232. "properties": {
  233. "semester": {
  234. "description": "Name of the semester",
  235. "type": "string"
  236. },
  237. "versions": {
  238. "description": "The different versions available for this semester",
  239. "type": "array",
  240. "items": {
  241. "type": "string"
  242. }
  243. }
  244. },
  245. "required": [
  246. "semester",
  247. "versions"
  248. ]
  249. },
  250. "grading-type": {
  251. "description": "Types of grading",
  252. "type": "string",
  253. "oneOf": [
  254. {
  255. "title": "HN",
  256. "const": "HN",
  257. "description": "TODO"
  258. },
  259. {
  260. "title": "MSP",
  261. "const": "MSP",
  262. "description": "Final Exam"
  263. },
  264. {
  265. "title": "SE",
  266. "const": "SE",
  267. "description": "TODO"
  268. }
  269. ]
  270. },
  271. "module-dependency": {
  272. "type": "object",
  273. "description": "The dependencies of a single module, split by language.",
  274. "additionalProperties": {
  275. "description": "The language (as the key), in which the module has a dependency to (array values).\n",
  276. "type": "array",
  277. "items": {
  278. "description": "The short module name",
  279. "type": "string"
  280. }
  281. }
  282. },
  283. "module": {
  284. "type": "object",
  285. "description": "A single module definition",
  286. "properties": {
  287. "short": {
  288. "description": "Short name of the module / its human readable ID.",
  289. "type": "string"
  290. },
  291. "name": {
  292. "description": "Full name of the module",
  293. "type": "string"
  294. },
  295. "for_degrees": {
  296. "description": "List of degrees, for which this module is meant.",
  297. "type": [
  298. "array",
  299. "null"
  300. ],
  301. "items": {
  302. "type": "string"
  303. }
  304. },
  305. "module_id": {
  306. "description": "The unique module ID number.",
  307. "type": [
  308. "number",
  309. "null"
  310. ]
  311. },
  312. "module_ids": {
  313. "description": "TODO",
  314. "type": [
  315. "array",
  316. "null"
  317. ],
  318. "items": {
  319. "type": "integer",
  320. "format": "int32"
  321. }
  322. },
  323. "ects": {
  324. "description": "The number of ECTS this module awards upon completion.",
  325. "type": [
  326. "number",
  327. "null"
  328. ]
  329. },
  330. "marks": {
  331. "description": "The types of marks that this module involves (Final exam, continuous grading,\nproject, …).\n",
  332. "type": [
  333. "array",
  334. "null"
  335. ],
  336. "items": {
  337. "$ref": "#/components/schemas/grading-type"
  338. }
  339. },
  340. "cat": {
  341. "description": "Category of module (Context, Specialization, basic education, …).",
  342. "type": [
  343. "string",
  344. "null"
  345. ]
  346. },
  347. "sub_cat": {
  348. "description": "Sub-category of the module (business administration, subject supplement,\nspecialization).\n",
  349. "type": [
  350. "string",
  351. "null"
  352. ]
  353. },
  354. "dependencies": {
  355. "description": "What dependencies are required to be able to participate in this module.\n",
  356. "$ref": "#/components/schemas/module-dependency"
  357. },
  358. "enablingModules": {
  359. "description": "List of modules, that can be attended, after the completion of this module.\n",
  360. "$ref": "#/components/schemas/module-dependency"
  361. }
  362. },
  363. "required": [
  364. "short",
  365. "name",
  366. "for_degrees",
  367. "module_id",
  368. "module_ids",
  369. "ects",
  370. "marks",
  371. "cat",
  372. "sub_cat",
  373. "dependencies",
  374. "enablingModules"
  375. ]
  376. },
  377. "lecturer": {
  378. "type": "object",
  379. "description": "Single lecturer",
  380. "properties": {
  381. "short": {
  382. "description": "A short name for the lecturer, that is unique",
  383. "type": "string"
  384. },
  385. "surname": {
  386. "description": "The surname of the lecturer",
  387. "type": "string"
  388. },
  389. "firstname": {
  390. "description": "The given name of a lecturer",
  391. "type": "string"
  392. }
  393. },
  394. "required": [
  395. "short",
  396. "surname",
  397. "firstname"
  398. ]
  399. },
  400. "weekday": {
  401. "type": "integer",
  402. "format": "int8",
  403. "description": "The various weekdays",
  404. "oneOf": [
  405. {
  406. "title": "Monday",
  407. "const": 0
  408. },
  409. {
  410. "title": "Tuesday",
  411. "const": 1
  412. },
  413. {
  414. "title": "Wednesday",
  415. "const": 2
  416. },
  417. {
  418. "title": "Thursday",
  419. "const": 3
  420. },
  421. {
  422. "title": "Friday",
  423. "const": 4
  424. },
  425. {
  426. "title": "Saturday",
  427. "const": 5
  428. },
  429. {
  430. "title": "Sunday",
  431. "const": 6
  432. }
  433. ]
  434. },
  435. "teaching-type": {
  436. "type": "string",
  437. "description": "Various types of teaching types/locations",
  438. "oneOf": [
  439. {
  440. "title": "On Site",
  441. "const": "on_site",
  442. "description": "Only taught on site"
  443. },
  444. {
  445. "title": "Online",
  446. "const": "online",
  447. "description": "Exclusively taught online"
  448. },
  449. {
  450. "title": "Blockmodule",
  451. "const": "blockmodule",
  452. "description": "A module that is taught in a single block over the span of a few weeks, not the\nentire semester.\n"
  453. },
  454. {
  455. "title": "Hybrid",
  456. "const": "hybrid",
  457. "description": "Both on site and online"
  458. }
  459. ]
  460. },
  461. "module-history": {
  462. "type": "object",
  463. "description": "A complete history of all planned executions of each module",
  464. "additionalProperties": {
  465. "description": "The key is the modules short name with a mapping to an array",
  466. "type": "array",
  467. "items": {
  468. "type": "object",
  469. "properties": {
  470. "semester": {
  471. "description": "The semester this module took place in",
  472. "type": "string"
  473. },
  474. "version": {
  475. "description": "The version of the semester plan",
  476. "type": "string"
  477. },
  478. "weekday": {
  479. "description": "The weekday the module took place on",
  480. "$ref": "#/components/schemas/weekday"
  481. },
  482. "class": {
  483. "description": "Name of the class this module is part of",
  484. "type": "string"
  485. },
  486. "from": {
  487. "description": "Start time of the module, in seconds since midnight",
  488. "type": "integer",
  489. "format": "int32"
  490. },
  491. "to": {
  492. "description": "End time of the module, in seconds since midnight",
  493. "type": "integer",
  494. "format": "int32"
  495. },
  496. "lecturers": {
  497. "description": "List of lecturers teaching this module",
  498. "type": "array",
  499. "items": {
  500. "type": "string"
  501. }
  502. },
  503. "teaching_type": {
  504. "description": "The type of teaching",
  505. "$ref": "#/components/schemas/teaching-type"
  506. },
  507. "rooms": {
  508. "description": "List of rooms reserved for this module",
  509. "type": "array",
  510. "items": {
  511. "type": "string"
  512. }
  513. },
  514. "pages": {
  515. "description": "List of pages, on which the module can be found in the PDF",
  516. "type": "array",
  517. "items": {
  518. "type": "integer",
  519. "format": "int16"
  520. }
  521. },
  522. "id": {
  523. "description": "A unique ID for this module and the time it is taught",
  524. "type": "string"
  525. }
  526. },
  527. "required": [
  528. "semester",
  529. "version",
  530. "weekday",
  531. "class",
  532. "from",
  533. "to",
  534. "lecturers",
  535. "teaching_type",
  536. "rooms",
  537. "pages",
  538. "id"
  539. ]
  540. }
  541. }
  542. },
  543. "semester-config": {
  544. "type": "object",
  545. "description": "Semester configuration / additional information",
  546. "properties": {
  547. "blockclass_file": {
  548. "description": "Relative path to the blockclass file",
  549. "type": [
  550. "string",
  551. "null"
  552. ]
  553. }
  554. },
  555. "required": [
  556. "blockclass_file"
  557. ]
  558. },
  559. "change": {
  560. "type": "object",
  561. "description": "A single change in the semester plan version, outlining the changes",
  562. "properties": {
  563. "name": {
  564. "description": "The name of the version",
  565. "type": "string"
  566. },
  567. "changes": {
  568. "description": "A HTML string of the changes",
  569. "type": "string"
  570. }
  571. },
  572. "required": [
  573. "name",
  574. "changes"
  575. ]
  576. },
  577. "blockclass": {
  578. "type": "object",
  579. "description": "Single blockclass entry",
  580. "properties": {
  581. "weekday": {
  582. "description": "Not used",
  583. "type": "null"
  584. },
  585. "from": {
  586. "description": "Time the module starts in seconds since midnight (not used, always 0)",
  587. "type": "integer",
  588. "format": "int32"
  589. },
  590. "to": {
  591. "description": "Time the module starts in seconds since midnight (not used, always 0)",
  592. "type": "integer",
  593. "format": "int32"
  594. },
  595. "class": {
  596. "description": "Class name this block module is part of",
  597. "type": "string"
  598. },
  599. "name": {
  600. "description": "Short name of the module",
  601. "type": "string"
  602. },
  603. "rooms": {
  604. "description": "The rooms which are reserved for this module",
  605. "type": "array",
  606. "items": {
  607. "type": "string"
  608. }
  609. },
  610. "teachers": {
  611. "description": "The lecturers names that are teaching this module",
  612. "type": "array",
  613. "items": {
  614. "type": "string"
  615. }
  616. },
  617. "teaching_type": {
  618. "description": "Type of teaching",
  619. "$ref": "#/components/schemas/teaching-type"
  620. },
  621. "pages": {
  622. "description": "The pages, on which the module can be found",
  623. "type": "array",
  624. "items": {
  625. "type": "integer",
  626. "format": "int16"
  627. }
  628. },
  629. "degree_prg": {
  630. "description": "Name of the degree program this module is part of",
  631. "type": "string"
  632. },
  633. "part_of_other_classes": {
  634. "description": "List of other classes, where this module is also taught",
  635. "type": "array",
  636. "items": {
  637. "type": "string"
  638. }
  639. },
  640. "id": {
  641. "description": "Unique identifier for this blockmodule",
  642. "type": "string"
  643. }
  644. },
  645. "required": [
  646. "weekday",
  647. "from",
  648. "to",
  649. "class",
  650. "name",
  651. "rooms",
  652. "teachers",
  653. "teaching_type",
  654. "pages",
  655. "degree_prg",
  656. "part_of_other_classes",
  657. "id"
  658. ]
  659. },
  660. "class": {
  661. "type": "object",
  662. "description": "Single class definition of a specific version",
  663. "properties": {
  664. "weekday": {
  665. "description": "The weekday the module took place on",
  666. "$ref": "#/components/schemas/weekday"
  667. },
  668. "from": {
  669. "description": "Start time of the module, in seconds since midnight",
  670. "type": "integer",
  671. "format": "int32"
  672. },
  673. "to": {
  674. "description": "End time of the module, in seconds since midnight",
  675. "type": "integer",
  676. "format": "int32"
  677. },
  678. "class": {
  679. "description": "Name of the class this module is part of",
  680. "type": "string"
  681. },
  682. "name": {
  683. "description": "Short name of the module"
  684. },
  685. "rooms": {
  686. "description": "List of rooms reserved for this module",
  687. "type": "array",
  688. "items": {
  689. "type": "string"
  690. }
  691. },
  692. "teachers": {
  693. "description": "List of lecturers teaching this module",
  694. "type": "array",
  695. "items": {
  696. "type": "string"
  697. }
  698. },
  699. "teaching_type": {
  700. "description": "The type of teaching",
  701. "$ref": "#/components/schemas/teaching-type"
  702. },
  703. "pages": {
  704. "description": "List of pages, on which the module can be found in the PDF",
  705. "type": "array",
  706. "items": {
  707. "type": "integer",
  708. "format": "int16"
  709. }
  710. },
  711. "degree_prg": {
  712. "description": "Name of the degree program this module is part of",
  713. "type": "string"
  714. },
  715. "part_of_other_classes": {
  716. "description": "List of other classes, where this module is also taught",
  717. "type": "array",
  718. "items": {
  719. "type": "string"
  720. }
  721. },
  722. "id": {
  723. "description": "A unique ID for this module and the time it is taught",
  724. "type": "string"
  725. }
  726. },
  727. "required": [
  728. "weekday",
  729. "from",
  730. "to",
  731. "class",
  732. "name",
  733. "rooms",
  734. "teachers",
  735. "teaching_type",
  736. "pages",
  737. "degree_prg",
  738. "part_of_other_classes",
  739. "id"
  740. ]
  741. },
  742. "semester-version-config": {
  743. "type": "object",
  744. "description": "Version specific configurations/additional information",
  745. "properties": {
  746. "pdf_version": {
  747. "description": "Version name of the PDF",
  748. "type": "string",
  749. "example": "einschreiben / HS_24_einschr_3"
  750. },
  751. "export_date": {
  752. "description": "The date, when the version of this plan was released.",
  753. "format": "dd.mm.yyyy HH:MM:SS",
  754. "type": "string",
  755. "example": "17.06.2024 15:07:00"
  756. },
  757. "parse_date": {
  758. "description": "The date, when the version of this plan was parsed.",
  759. "format": "dd.mm.yyyy HH:MM:SS",
  760. "type": "string",
  761. "example": "04.10.2024 17:45:10"
  762. }
  763. },
  764. "required": [
  765. "pdf_version",
  766. "export_date",
  767. "parse_date"
  768. ]
  769. }
  770. },
  771. "responses": {
  772. "semester-versions-200": {
  773. "description": "OK",
  774. "content": {
  775. "application/json": {
  776. "schema": {
  777. "type": "array",
  778. "items": {
  779. "$ref": "#/components/schemas/semester-version"
  780. }
  781. },
  782. "example": [
  783. {
  784. "semester": "24HS",
  785. "versions": [
  786. "einschr_3",
  787. "einschr_2",
  788. "einschr_1"
  789. ]
  790. },
  791. {
  792. "semester": "24FS",
  793. "versions": [
  794. "korr_2",
  795. "korr_2_1",
  796. "korr_1",
  797. "einschr_3_1",
  798. "einschr_3",
  799. "einschr_2",
  800. "einschr_1",
  801. "prov_4a"
  802. ]
  803. }
  804. ]
  805. }
  806. }
  807. },
  808. "modules-200": {
  809. "description": "OK",
  810. "content": {
  811. "application/json": {
  812. "schema": {
  813. "type": "array",
  814. "items": {
  815. "$ref": "#/components/schemas/module"
  816. }
  817. },
  818. "example": [
  819. {
  820. "short": "aet1",
  821. "name": "Allgemeine Elektrotechnik 1 ",
  822. "for_degrees": [
  823. "Elektro- und Informationstechnik",
  824. "Systemtechnik"
  825. ],
  826. "module_id": 6007771,
  827. "module_ids": [
  828. 6007771
  829. ],
  830. "ects": 3,
  831. "marks": [
  832. "HN",
  833. "MSP",
  834. "SE"
  835. ],
  836. "cat": "Fachausbildung",
  837. "sub_cat": "Fachgrundlagen",
  838. "dependencies": {
  839. "de": [
  840. "an1"
  841. ],
  842. "en": []
  843. },
  844. "enablingModules": {
  845. "de": [
  846. "aet2",
  847. "msee"
  848. ],
  849. "en": []
  850. }
  851. },
  852. {
  853. "short": "ast1",
  854. "name": "Analoge Schaltungstechnik 1 ",
  855. "for_degrees": null,
  856. "module_id": null,
  857. "module_ids": null,
  858. "ects": null,
  859. "marks": null,
  860. "cat": null,
  861. "sub_cat": null,
  862. "dependencies": {},
  863. "enablingModules": {
  864. "de": [],
  865. "en": []
  866. }
  867. }
  868. ]
  869. }
  870. }
  871. },
  872. "lecturers-200": {
  873. "description": "OK",
  874. "content": {
  875. "application/json": {
  876. "schema": {
  877. "type": "array",
  878. "items": {
  879. "$ref": "#/components/schemas/lecturer"
  880. }
  881. },
  882. "example": [
  883. {
  884. "short": "rabh",
  885. "surname": "Racquel",
  886. "firstname": "Bharath"
  887. },
  888. {
  889. "short": "rudu",
  890. "surname": "Ruuben",
  891. "firstname": "Dunyasha"
  892. }
  893. ]
  894. }
  895. }
  896. },
  897. "module-history-200": {
  898. "description": "OK",
  899. "content": {
  900. "application/json": {
  901. "schema": {
  902. "$ref": "#/components/schemas/module-history"
  903. },
  904. "example": {
  905. "aet1": [
  906. {
  907. "semester": "24HS",
  908. "version": "einschr_3",
  909. "weekday": 0,
  910. "class": "1Ea",
  911. "from": 29700,
  912. "to": 39600,
  913. "lecturers": [
  914. "Gaus"
  915. ],
  916. "teaching_type": "on_site",
  917. "rooms": [
  918. "1.331"
  919. ],
  920. "pages": [
  921. 3,
  922. 5
  923. ],
  924. "id": "1Ea-aet1-0-29700-39600"
  925. }
  926. ],
  927. "afana": [
  928. {
  929. "semester": "12HS",
  930. "version": "korr_8",
  931. "weekday": 1,
  932. "class": "1Ia",
  933. "from": 45900,
  934. "to": 54600,
  935. "lecturers": [
  936. "Syn"
  937. ],
  938. "teaching_type": "on_site",
  939. "rooms": [
  940. "4.417"
  941. ],
  942. "pages": [
  943. 3
  944. ],
  945. "id": "1Ia-afana-1-45900-54600"
  946. },
  947. {
  948. "semester": "12HS",
  949. "version": "korr_8",
  950. "weekday": 1,
  951. "class": "1Ib",
  952. "from": 33000,
  953. "to": 42300,
  954. "lecturers": [
  955. "Syn"
  956. ],
  957. "teaching_type": "on_site",
  958. "rooms": [
  959. "4.427"
  960. ],
  961. "pages": [
  962. 4
  963. ],
  964. "id": "1Ib-afana-1-33000-42300"
  965. }
  966. ]
  967. }
  968. }
  969. }
  970. },
  971. "changelog-html-200": {
  972. "description": "OK",
  973. "content": {
  974. "text/html": {
  975. "example": ""
  976. }
  977. }
  978. },
  979. "semester-config-200": {
  980. "description": "OK",
  981. "content": {
  982. "application/json": {
  983. "schema": {
  984. "$ref": "#/components/schemas/semester-config"
  985. },
  986. "example": {
  987. "blockclass_file": "Blockmodule.xlsx"
  988. }
  989. }
  990. }
  991. },
  992. "changes-200": {
  993. "description": "OK",
  994. "content": {
  995. "application/json": {
  996. "schema": {
  997. "type": "array",
  998. "items": {
  999. "$ref": "#/components/schemas/change"
  1000. }
  1001. },
  1002. "example": [
  1003. {
  1004. "name": "prov_5",
  1005. "changes": "<p>Initialversion</p>"
  1006. },
  1007. {
  1008. "name": "einschr_1",
  1009. "changes": "<p>Seit der letzten Version hat's neben diversen Raum- und Dozierenden-Änderungen folgende Anpassungen gegeben:</p>\n<p><strong>Verschiebung / Änderungen:</strong>\n <ul>\n <li>wus 1Ea</li>\n <li>aet1 1Eb</li>\n <li>glaL1 1Eb</li>\n <li>oop1 1Eb</li>\n <li>hfta 5Ea</li>\n <li>kryg 5Ea</li>\n <li>edea 5iCbb</li>\n <li>an1 1Ma</li>\n <li>lalg1 1Ma</li>\n <li>an1 1Mb</li>\n <li>lalg1 1Mb</li>\n <li>pro4M 5Mbb</li>\n <li>eltM 3Mb</li>\n <li>elmag 3Mb</li>\n <li>dglM 3Mb</li>\n </ul>\n</p>\n<p><strong>Streichung von:</strong> <ul><li>mgli 1iCeng</li></ul> </p>"
  1010. },
  1011. {
  1012. "name": "korr_1",
  1013. "changes": "<p>Keine Angaben</p>"
  1014. },
  1015. {
  1016. "name": "korr_2",
  1017. "changes": "<p>Keine Angaben</p>"
  1018. }
  1019. ]
  1020. }
  1021. }
  1022. },
  1023. "blockclasses-200": {
  1024. "description": "OK",
  1025. "content": {
  1026. "application/json": {
  1027. "schema": {
  1028. "type": "array",
  1029. "items": {
  1030. "$ref": "#/components/schemas/blockclass"
  1031. }
  1032. },
  1033. "example": [
  1034. {
  1035. "weekday": null,
  1036. "from": 0,
  1037. "to": 0,
  1038. "class": "5Me",
  1039. "name": "aem",
  1040. "rooms": [],
  1041. "teachers": [],
  1042. "teaching_type": "blockmodule",
  1043. "pages": [
  1044. 1
  1045. ],
  1046. "degree_prg": "Maschinenbau",
  1047. "part_of_other_classes": [],
  1048. "id": "5Me-aem-b"
  1049. },
  1050. {
  1051. "weekday": null,
  1052. "from": 0,
  1053. "to": 0,
  1054. "class": "7KGb",
  1055. "name": "alges",
  1056. "rooms": [],
  1057. "teachers": [],
  1058. "teaching_type": "blockmodule",
  1059. "pages": [
  1060. 1
  1061. ],
  1062. "degree_prg": "Kontext GSW",
  1063. "part_of_other_classes": [],
  1064. "id": "7KGb-alges-b"
  1065. }
  1066. ]
  1067. }
  1068. }
  1069. },
  1070. "classes-200": {
  1071. "description": "OK",
  1072. "content": {
  1073. "application/json": {
  1074. "schema": {
  1075. "type": "array",
  1076. "items": {
  1077. "$ref": "#/components/schemas/class"
  1078. }
  1079. },
  1080. "example": [
  1081. {
  1082. "weekday": 0,
  1083. "from": 29700,
  1084. "to": 64800,
  1085. "class": "1Da",
  1086. "name": "dummy",
  1087. "rooms": [
  1088. "5.3B51"
  1089. ],
  1090. "teachers": [
  1091. "Cur"
  1092. ],
  1093. "teaching_type": "on_site",
  1094. "pages": [
  1095. 1
  1096. ],
  1097. "degree_prg": "Data Science",
  1098. "part_of_other_classes": [],
  1099. "id": "1Da-dummy-0-29700-64800"
  1100. },
  1101. {
  1102. "weekday": 1,
  1103. "from": 29700,
  1104. "to": 36000,
  1105. "class": "1Da",
  1106. "name": "eda",
  1107. "rooms": [
  1108. "5.3B51"
  1109. ],
  1110. "teachers": [
  1111. "Ped"
  1112. ],
  1113. "teaching_type": "on_site",
  1114. "pages": [
  1115. 1
  1116. ],
  1117. "degree_prg": "Data Science",
  1118. "part_of_other_classes": [],
  1119. "id": "1Da-eda-1-29700-36000"
  1120. }
  1121. ]
  1122. }
  1123. }
  1124. },
  1125. "semester-version-config-200": {
  1126. "description": "OK",
  1127. "content": {
  1128. "application/json": {
  1129. "schema": {
  1130. "$ref": "#/components/schemas/semester-version-config"
  1131. },
  1132. "example": {
  1133. "pdf_version": "einschreiben / HS_24_einschr_3",
  1134. "export_date": "17.06.2024 15:07:00",
  1135. "parse_date": "04.10.2024 17:45:10"
  1136. }
  1137. }
  1138. }
  1139. },
  1140. "klassen-pdf-200": {
  1141. "description": "OK",
  1142. "content": {
  1143. "application/vnd.ms-excel": {
  1144. "example": ""
  1145. }
  1146. }
  1147. }
  1148. },
  1149. "parameters": {
  1150. "semester": {
  1151. "name": "semester",
  1152. "in": "path",
  1153. "description": "Semester",
  1154. "required": true,
  1155. "schema": {
  1156. "type": "string",
  1157. "summary": "Name of the semester. To fetch the latest semester, use `latest`"
  1158. }
  1159. },
  1160. "version": {
  1161. "name": "version",
  1162. "in": "path",
  1163. "description": "Semester version",
  1164. "required": true,
  1165. "schema": {
  1166. "type": "string",
  1167. "summary": "Name of the version. To fetch the latest version, use `latest`"
  1168. }
  1169. }
  1170. }
  1171. }
  1172. }