Further modifications towards a full API specification

This commit is contained in:
Christian Wolf 2020-05-16 15:00:18 +02:00
parent 6eee6a4fe6
commit 3c7354b8a6

View File

@ -145,7 +145,9 @@ components:
type: object type: object
properties: properties:
user: user:
$ref: "#/components/schemas/User" type: integer
example: 13
description: Die `id` des Nutzers
admin: admin:
type: boolean type: boolean
description: Der Nutzer hat Admin-Rechte in dem Verein description: Der Nutzer hat Admin-Rechte in dem Verein
@ -249,10 +251,9 @@ components:
description: Die BIC Nummer des Vereins description: Die BIC Nummer des Vereins
example: ABDECDEEH example: ABDECDEEH
president: president:
allOf: type: string
- $ref: "#/components/schemas/User" description: Der Alias des Vorstandsvorsitzendes des Vereins
title: User example: dduck
description: Der Vorstandsvorsitzende des Vereins
required: required:
- name - name
- address - address
@ -261,6 +262,38 @@ components:
- mail - mail
- president - president
ConfirmationOfCharitability:
description: Bescheinigung der Gemeinnützigkeit
type: object
properties:
id:
type: integer
example: 44
description: id der Bescheinigung
startingDay:
type: integer
example: 12
description: Tag der Ausstellung des Bescheids
startingMonth:
type: integer
example: 3
description: Monat der Ausstellung des Bescheids
startingYear:
type: integer
example: 2019
description: Jahr der Ausstellung des Bescheids
user:
type: string
example: mmuster
description: Der Alias des Nutzers
required:
- id
- startingDay
- startingMonth
- startingYear
- user
tags: tags:
- name: Benutzer - name: Benutzer
description: Zugriff auf die Stammdaten der Nutzer des internen Bereichs description: Zugriff auf die Stammdaten der Nutzer des internen Bereichs
@ -271,7 +304,11 @@ tags:
- name: Vorstand - name: Vorstand
description: Aktuell vergebene Vostandsposten description: Aktuell vergebene Vostandsposten
- name: Trainingsangebote - name: Trainingsangebote
description: Tanz- und Trainingsangebote eines Vereins
- name: Trainingsräume - name: Trainingsräume
description: Vorhandene Räume in denen Training abgehalten werden kann
- name: Gemeinnützigkeit
description: Bescheinigungen zur Gemeinnützigkeit einreichen
- name: Sonstiges - name: Sonstiges
description: Zugriff auf statische Konfigurationen description: Zugriff auf statische Konfigurationen
@ -774,7 +811,421 @@ paths:
400: 400:
$ref: "#/components/responses/error" $ref: "#/components/responses/error"
/club/{clubid}/charity:
parameters:
- name: clubid
required: true
in: path
schema:
type: integer
get:
summary: Den aktuellen Bescheid der Gemeinnützigkeit abfragen
tags: [Gemeinnützigkeit]
responses:
200:
description: ok
content:
application/json:
schema:
$ref: "#/components/schemas/ConfirmationOfCharitability"
401:
$ref: "#/components/responses/notAuth"
404:
description: Verein wurde nicht gefunden
400:
$ref: "#/components/responses/error"
/club/{clubid}/charities:
parameters:
- name: clubid
required: true
in: path
schema:
type: integer
get:
summary: Den hochgeladenen Bescheide abfragen
tags: [Gemeinnützigkeit]
responses:
200:
description: ok
content:
application/json:
schema:
type: array
items:
type: object
properties:
entry:
$ref: "#/components/schemas/ConfirmationOfCharitability"
state:
type: string
enum:
- active
- renewed
- rejected
- pending
required:
- entry
- state
401:
$ref: "#/components/responses/notAuth"
404:
description: Verein wurde nicht gefunden
403:
$ref: "#/components/responses/notAllowed"
400:
$ref: "#/components/responses/error"
post:
summary: Einen neuen Bescheid hochladen
tags: [Gemeinnützigkeit]
requestBody:
description: Die relevanten Daten
required: true
content:
multipart/form-data:
schema:
type: object
properties:
config:
type: object
description: Meta-Daten der übermittelten Datei
properties:
startingDay:
type: integer
example: 22
description: Tag der Ausstellung des Bescheids
startingMonth:
type: integer
example: 11
description: Monat der Ausstellung des Bescheids
startingYear:
type: integer
example: 2020
description: Jahr der Ausstellung des Bescheids
required:
- startingDay
- startingMonth
- startingYear
file:
type: string
description: Die Datei (PDF/PNG/JPG) des gescannten Bescheids
format: binary
responses:
200:
description: Ok
content:
application/json:
schema:
type: object
properties:
id:
type: integer
example: 45
description: Die `id` des neu eingetragenen Bescheids
required:
- id
401:
$ref: "#/components/responses/notAuth"
403:
$ref: "#/components/responses/notAllowed"
400:
$ref: "#/components/responses/error"
/club/{clubid}/charity/{charityid}:
parameters:
- name: clubid
required: true
in: path
schema:
type: integer
- name: charityid
required: true
in: path
schema:
type: integer
get:
summary: Einen bestimmten Bescheid der Gemeinnützigkeit abfragen
tags: [Gemeinnützigkeit]
responses:
200:
description: ok
content:
application/json:
schema:
$ref: "#/components/schemas/ConfirmationOfCharitability"
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
put:
summary: Den Status eines Bescheids aktualisieren
tags: [Gemeinnützigkeit]
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startingDay:
type: integer
example: 11
description: Der Ausstellungstag des Bescheids
startingMonth:
type: integer
example: 5
description: Der Ausstellungsmonat des Bescheids
startingYear:
type: integer
example: 2019
description: Das Ausstellungsjahr des Bescheids
state:
type: string
description: Der (neue) Zustand des Bescheids
enum:
- active
- rejected
- pending
responses:
200:
$ref: "#/components/responses/ok"
401:
$ref: "#/components/responses/notAuth"
403:
$ref: "#/components/responses/notAllowed"
400:
$ref: "#/components/responses/error"
delete:
summary: Einen abgelehnten oder zu prüfenden Bescheid löschen
tags: [Gemeinnützigkeit]
responses:
200:
$ref: "#/components/responses/ok"
401:
$ref: "#/components/responses/notAuth"
403:
$ref: "#/components/responses/notAllowed"
400:
$ref: "#/components/responses/error"
/club/{clubid}/charity/{charityid}/pdf:
parameters:
- name: clubid
required: true
in: path
schema:
type: integer
- name: charityid
required: true
in: path
schema:
type: integer
get:
summary: Den Scan eines Bescheids abfragen
tags: [Gemeinnützigkeit]
responses:
200:
description: ok
content:
application/pdf:
schema:
type: string
format: binary
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
/me/mails:
get:
tags: [Benutzer]
summary: Die Mails des Nutzers abfragen
responses:
200:
description: ok
content:
application/json:
schema:
type: array
items:
type: object
properties:
mail:
type: string
example: d.duck@entenhausen.de
401:
$ref: "#/components/responses/notAuth"
/me/mail:
post:
tags: [Benutzer]
summary: Eine neue Mail-Adresse des Nutzers registrieren
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
mail:
type: string
example: dagobert@tsc-entenhausen.de
description: Die neu hinzuzufügende Mail-Adresse
required: [mail]
responses:
200:
description: ok
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
delete:
tags: [Benutzer]
summary: Eine neue Mail-Adresse des Nutzers registrieren
parameters:
- name: mail
in: query
required: true
schema:
type: string
example: dagobert@tsc-entenhausen.de
description: Die neu hinzuzufügende Mail-Adresse
responses:
200:
$ref: "#/components/responses/ok"
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
/change_password:
post:
tags: [Benutzer]
summary: Das Passwort eines Nutzers anpassen
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user:
type: integer
example: 12
description: Die `id` des Nutzers, dessen Passwort angepasst werden soll. Wenn nicht gegeben wird das Passwort des eingeloggten Nutzers geändert
new_pasword:
type: string
example: very_save_password
description: Das neue Passwort des Nutzers
responses:
200:
$ref: "#/components/responses/ok"
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
/users/search:
get:
tags: [Benutzer]
summary: Nach einem Nutzer suchen
parameters:
- name: name
in: query
schema:
type: string
- name: city
in: query
schema:
type: string
- name: mail
in: query
schema:
type: string
- name: phone
in: query
schema:
type: string
responses:
200:
description: ok
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
example: 23
description: Die `id` des Nutzers
name:
type: string
example: Dagobert Duck
description: Der Name des Nutzers
city:
type: string
example: Entenhausen
required:
- id
- name
- city
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
/user:
post:
tags: [Benutzer]
summary: Einen neuen Benutzer anlegen
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: Daisy Duck
mail:
type: string
example: daisy@ducks.org
required: [name, mail]
responses:
200:
$ref: "#/components/responses/ok"
401:
$ref: "#/components/responses/notAuth"
400:
$ref: "#/components/responses/error"
/user/{useralias}:
parameters:
- name: useralias
in: path
required: true
schema:
type: string
example: dduck
get:
tags: [Benutzer]
summary: Die Eigenschaften eines Nutzers erfragen
security: []
responses:
200:
description: ok
content:
application/json:
schema:
$ref: "#/components/schemas/User"
security: security:
- jwt: [] - jwt: []