openapi: 3.0.0 info: title: API Title version: '1.0' servers: - url: http://localhost:8080/api paths: /auth/signin: post: operationId: login summary: Anmeldung description: Nutzer meldet sich mit Name und Passwort an tags: - login requestBody: description: Anmeldedaten content: application/json: schema: $ref: '#/components/schemas/LoginRequest' responses: '200': description: Anmeldung erfolgreich content: application/json: schema: $ref: '#/components/schemas/LoginResponse' '401': description: Benutzername/Passwort falsch content: application/json: schema: type: object required: - status - error - message - path additionalProperties: false properties: path: type: string description: Pfad auf den versucht wurde zuzugreifen example: /api/users error: type: string description: Error Cause example: Unauthorized status: type: number description: Statuscode example: 401 /auth/signup: put: operationId: registrate summary: Registierung description: Ein Nutzer registriert sich mit Nutzername, Email und Passwort tags: - login requestBody: description: Anmeldedaten content: 'application/json': schema: $ref: '#/components/schemas/SignUpRequest' responses: '200': description: Registrierung erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 409: description: Nutzer existiert bereits content: 'application/json': schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" errCode: type: string description: Fehlergrund example: "mail" enum: - "mail" - "username" 403: description: Keine Berechtigung content: application/json: schema: type: object required: - "status" properties: status: type: string description: Status example: "failed" enum: - "failed" /users: get: security: - API_TOKEN: [] tags: - users summary: Alle Nutzer abfragen description: Zeigt alle registerten Nutzer an responses: 200: description: Liste aller registrierten Benutzer content: 'application/json': schema: type: array items: $ref: '#/components/schemas/UserInfo' put: security: - API_TOKEN: [] tags: - users summary: Nutzer hinzufügen description: Fügt einen Nutzer hinzu requestBody: description: Benutzerinformationen content: 'application/json': schema: $ref: '#/components/schemas/UserAddInfo' responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet 403: description: Keine Berechtigung 409: description: Nutzer existiert bereits content: 'application/json': schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" errCode: type: string description: Fehlergrund example: "mail" enum: - "mail" - "username" /users/{username}: post: security: - API_TOKEN: [] tags: - users summary: Benutzer ändern description: Ändert einen Benutzer parameters: - name: username in: path description: Benutzername required: true schema: type: string example: Fawkes100 requestBody: description: Benutzerinformationen content: 'application/json': schema: $ref: '#/components/schemas/UserUpdateInfo' responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet 403: description: Keine Berechtigung 404: description: Falls der Benutzer nicht vorhanden ist delete: security: - API_TOKEN: [] tags: - users summary: Benutzer löschen description: Löscht einen Benutzer parameters: - name: username in: path description: Benutzername required: true schema: type: string example: Fawkes100 responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet 403: description: Keine Berechtigung 404: description: Falls der Benutzer unbekannt ist /account/change-password: post: security: - API_TOKEN: [] tags: - account summary: Passwort ändern description: Ändert das Passwort requestBody: description: Altes und neues Passwort content: application/json: schema: $ref: "#/components/schemas/PasswordChangeRequest" responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet 409: description: Nicht angemeldet content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" /account/change-email: post: security: - API_TOKEN: [] tags: - account summary: Email ändern description: Ändert die hinterlegte mailadresse requestBody: description: Neue Email und Passwort content: application/json: schema: $ref: "#/components/schemas/EMailChangeRequest" responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet 409: description: Nicht angemeldet content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" /account/user-details: get: security: - API_TOKEN: [] tags: - account summary: Nutzerinformationen description: Fragt Nutzerdetails wie Email ab responses: 200: description: Anfrage erfolgreich content: 'application/json': schema: $ref: '#/components/schemas/UserInfo' 409: description: Invalided Passwort 401: description: Nicht angemeldet /account/delete-request: post: security: - API_TOKEN: [] tags: - account summary: Eigenen Account löschen description: Löscht eigenen Account requestBody: description: Informationen zur Sicherheitsüberprürfung content: 'application/json': schema: $ref: "#/components/schemas/AccountDeleteRequest" responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 409: description: Ungültiges Passwort content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" '401': description: Nicht angemeldet /properties/signup: get: tags: - properties summary: Eigenschaft Registierung abfragen description: Fragt ab, ob Registrierung aktiviert ist responses: 200: description: Operation erfolgreich content: application/json: schema: $ref: '#/components/schemas/PropertyInfo' 404: description: Eigenschaft nicht gefunden content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" /settings/update: post: security: - API_TOKEN: [] tags: - properties summary: Eigenschaften aktualisieren description: Aktualisiert Einstellungen requestBody: description: Aktualisierte Einstellungen content: 'application/json': schema: $ref: "#/components/schemas/PropertyUpdateRequest" responses: 200: description: Operation erfolgreich content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "success" enum: - "success" 401: description: Nicht angemeldet content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" 403: description: Keine Berechtigung content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" /settings: get: security: - API_TOKEN: [] tags: - properties summary: Einstellungen auflisten description: Listet Einstellungen auf responses: 200: description: Anfrage erfolgreich content: 'application/json': schema: $ref: '#/components/schemas/PropertiesInfo' 403: description: Keine Berechtigung content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" 401: description: Keine Berechtigung content: application/json: schema: type: object required: - status properties: status: type: string description: Status example: "failed" enum: - "failed" components: securitySchemes: API_TOKEN: type: http scheme: bearer bearerFormat: JWT schemas: LoginRequest: required: - username - password additionalProperties: false properties: username: type: string description: Benutzername des Users example: user password: type: string description: Password des Users example: pa$$word format: password LoginResponse: required: - status additionalProperties: true properties: status: type: string description: Status example: successfull jwt: type: string description: JWT Token example: jwttoken UserAddInfo: required: - username - email - password - admin additionalProperties: false properties: username: type: string description: Benutzername example: "FawKes100" email: type: string description: "Mailadresse" example: "mail@fawkes100.de" format: "email" password: type: string description: Passwort example: "pa$$word" format: password admin: type: boolean description: Adminstatus example: true SignUpRequest: required: - username - email - password additionalProperties: false properties: username: type: string description: Benutzername example: "FawKes100" email: type: string description: "Mailadresse" example: "mail@fawkes100.de" format: "email" password: type: string description: Passwort example: "pa$$word" format: password UserInfo: required: - username - email - admin additionalProperties: false properties: username: type: string description: Benutzername example: "covvacmap" email: type: string description: "Mailadresse" example: mail@fawkes100.de admin: type: boolean description: Adminrechte erteilt example: true UserUpdateInfo: description: Felder eines Benutzers die zu ändern sind additionalProperties: false properties: password: type: string description: Zu setzendes Password des Nutzers example: "Pa$$word" admin: type: boolean description: Adminrechte erteilt example: true email: type: string description: "Email-Adresse des Nutzers" example: mail@fawkes100.de PasswordChangeRequest: required: - oldPassword - newPassword additionalProperties: false properties: oldPassword: type: string description: Bisheriges Passwort des Nutzers example: "Pa$$word1" newPassword: type: string description: Neues Passwort des Nutzers example: "Pa$$word" EMailChangeRequest: required: - password - email additionalProperties: false properties: password: type: string description: Passwort des Nutzers zu Sicherheitsüberpürfung example: "Pa$$word1" email: type: string description: Zusetzende Emailadresse des Nutzers example: test@fawkes100.de AccountDeleteRequest: required: - password additionalProperties: false properties: password: type: string description: Passwort zur Sicherheitsüberprürfung example: "Pa$$word1" PropertyInfo: required: - property - status additionalProperties: false properties: property: type: string description: Name der Eigenschaft example: "Registration disabled" status: type: boolean description: Zustand der Eigenschaft example: false PropertyUpdateRequest: required: - settings additionalProperties: false properties: settings: type: array items: $ref: '#/components/schemas/PropertyInfo' PropertiesInfo: required: - settings additionalProperties: false properties: settings: type: array items: $ref: '#/components/schemas/PropertyInfo'