openapi: 3.0.1
info:
  title: diskursmonitor.de REST-WebService
  termsOfService: 'https://www.gnu.org/licenses/agpl-3.0.de.html'
  contact:
    name: 'Forschungsgruppe CoSoDi (COmputergestützte SOzio- und DIskurslinguistik - an der Universität Siegen - Entwickler: Jan Oliver Rüdiger) - Projekt diskursmonitor.de'
    url: 'https://diskursmonitor.de/'
  license:
    name: GNU Affero General Public License 3.0
    url: 'https://www.gnu.org/licenses/agpl-3.0.de.html'
  version: 1.0.0
servers:
  - url: 'https://barometer.diskurslinguistik.net/user'
paths:
  /signup:
    post:
      description: Beantragen Sie einen neuen Account. Alle Anträge werden manuell geprüft. Daher erfolgt eine Freischaltung zeitverzögert.
      parameters:
        - name: personData
          in: query
          description: Personenbezogene Daten für den Account-Antrag.
          required: true
          schema:
            type: object
            properties:
              email:
                type: string
                description: E-Mail (Pflichtfeld) - wird zur späteren Anmeldung benötigt. Bitte verwenden Sie ihre Instituts E-Mail (z. B. jan.ruediger@uni-siegen.de).
              name:
                type: string
                description: Vorname (Pflichtfeld) - Wird zur Überprüfung benötigt.
              familyname:
                type: string
                description: Nachname (Pflichtfeld) - Wird zur Überprüfung benötigt.
              gender:
                type: string
                description: 'Anrede (optional) - Wird zur Erzeugung von Anschreiben verwendet [Bsp.: Frau/Herr].'
              institution:
                type: string
                description: Institution z. B. Universität/Fachhochschule (Pflichtfeld) - Wird zur Überprüfung benötigt.
              job:
                type: string
                description: 'Beruf/Position (Pflichtfeld) - Wird zur Überprüfung benötigt [Bsp.: Student*in].'
              isAcademic:
                type: boolean
                description: 'Akademischer Status (Pflichtfeld) - Wird zur Überprüfung benötigt. Um unsere WebServices nutzen zu können, müssen Sie über einen akademischen Status verfügen (z. B. Student*in).'
              licenseAccepted:
                type: boolean
                description: 'Lizenz akzeptiert (Pflichtfeld) - Wird zur Überprüfung benötigt. Um unsere WebServices nutzen zu können, müssen Sie den akademischen Status bestätigen und unsere Nutzungsbedingungen akzeptieren.'
      responses:
        '200':
          description: Account erstellt. Bitte sehen Sie in ihrem E-Mail Postfach nach.
        '403':
          description: Zum Anlegen eines neuen Account muss die Lizenzbedingung akzeptiert werden.
        '500':
          description: Keine gültige E-Mail oder E-Mail bereits vorhanden
  /validate:
    post:
      description: Aktiviert und setzt das Passwort eines bestehenden Accounts neu.
      parameters:
        - name: validationRequest
          in: query
          description: Personenbezogene Daten für den Account-Antrag.
          required: true
          schema:
            type: object
            properties:
              email:
                type: string
                description: E-Mail (Pflichtfeld) - wird zur späteren Anmeldung benötigt. Bitte verwenden Sie ihre Instituts E-Mail (z. B. jan.ruediger@uni-siegen.de).
              activationToken:
                type: string
                description: Token (Pflichtfeld) - Wird zur Überprüfung benötigt.
              password:
                type: string
                description: Passwort (Pflichtfeld) - Wird zur Überprüfung benötigt.
      responses:
        '200':
          description: Account erfolgreich aktiviert.
        '403':
          description: Ihr Account wurde gesperrt. Bitte wenden Sie sich an unser Support-Team.
        '500':
          description: E-Mail fehlerhaft oder Aktivierungstoken abgelaufen.
  /signin:
    post:
      description: Anmeldung einer Nutzer*in oder einer APP.
      parameters:
        - name: signinData
          in: query
          description: Personenbezogene Daten für den Account-Antrag.
          required: true
          schema:
            type: object
            properties:
              email:
                type: string
                description: E-Mail (Pflichtfeld) - wird zur späteren Anmeldung benötigt. Bitte verwenden Sie ihre Instituts E-Mail (z. B. jan.ruediger@uni-siegen.de).
              password:
                type: string
                description: Passwort (Pflichtfeld) - Wird zur Überprüfung benötigt.
      responses:
        '200':
          description: Zugewiesener DataProxy. Sowie Api- und Session-Key. Der Session-Key ist bei APPs immer null.
        '500':
          description: Anmeldedaten falsch oder Account inaktiv.
  /resetpassword:
    get:
      description: Setzt das Passwort für einen Account zurück.
      parameters:
        - name: email
          in: query
          description: E-Mail unter der dieser Account registriert wurde.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Passwort-Reset wurde beantragt.
        '500':
          description: Allgemeiner Fehler.
  /mydata:
    get:
      description: Gibt alle gespeicherten personenbezogenen Daten zurück.
      parameters:
        - name: email
          in: query
          description: E-Mail unter der dieser Account registriert wurde.
          required: true
          schema:
            type: string
        - name: password
          in: query
          description: Passwort für diesen Account
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Alle gespeicherten personenbezogenen Daten.
        '500':
          description: Allgemeiner Fehler.
    post:
      description: Ändert die personenbezogenen Daten.
      parameters:
        - name: data
          in: query
          description: Personenbezogene Daten.
          required: true
          schema:
            type: object
            properties:
              signinData:
                type: object
                properties:
                  email:
                    type: string
                    description: E-Mail (Pflichtfeld) - wird zur späteren Anmeldung benötigt. Bitte verwenden Sie ihre Instituts E-Mail (z. B. jan.ruediger@uni-siegen.de).
                  password:
                    type: string
                    description: Passwort (Pflichtfeld) - Wird zur Überprüfung benötigt.
                description: Anmeldedaten
              mydata:
                type: object
                properties:
                  name:
                    type: string
                    description: Vorname (Pflichtfeld) - Wird zur Überprüfung benötigt.
                  familyname:
                    type: string
                    description: Nachname (Pflichtfeld) - Wird zur Überprüfung benötigt.
                  gender:
                    type: string
                    description: 'Anrede (optional) - Wird zur Erzeugung von Anschreiben verwendet [Bsp.: Frau/Herr].'
                  institution:
                    type: string
                    description: Institution z. B. Universität/Fachhochschule (Pflichtfeld) - Wird zur Überprüfung benötigt.
                  job:
                    type: string
                    description: 'Beruf/Position (Pflichtfeld) - Wird zur Überprüfung benötigt [Bsp.: Student*in].'
                  isAcademic:
                    type: boolean
                    description: 'Akademischer Status (Pflichtfeld) - Wird zur Überprüfung benötigt. Um unsere WebServices nutzen zu können, müssen Sie über einen akademischen Status verfügen (z. B. Student*in).'
                description: Welche Daten sollen geändert werden?
      responses:
        '200':
          description: Daten erfolgreich geändert.
        '500':
          description: Allgemeiner Fehler.
    delete:
      description: Löscht den Account vollständig.
      parameters:
        - name: deleteAccountRequest
          in: query
          description: Antrag auf vollständige Accountlöschung.
          required: true
          schema:
            type: object
            properties:
              email:
                type: string
                description: E-Mail (Pflichtfeld) - wird zur Anmeldung benötigt.
              password:
                type: string
                description: Passwort (Pflichtfeld) - Wird zur Überprüfung benötigt.
              apiKey:
                type: string
                description: Passwort (Pflichtfeld) - Wird zur Überprüfung benötigt. Kann z. B. durch /signin abgefragt werden.
      responses:
        '200':
          description: Account gelöscht.
        '500':
          description: Allgemeiner Fehler.
  /ping:
    get:
      description: 'Liefert den Statuscode 200, wenn der WebServcie verfügbar ist.'
      responses:
        '200':
          description: Service ist verfügbar
