{"openapi":"3.0.1","info":{"version":"1.5.1","title":"Schnittstellen für Mittwald-Kunden","description":">**Für die öffentliche API, alle Bestandteile und diese Dokumentation bieten wir keinen Support. Wir behalten uns vor, Änderungen jederzeit und ohne Ankündigung oder Dokumentation durchzuführen.**\n\nAuthentifizierung\n-----------------\n\n### Mit Nutzername & Passwort\n\nZur Authentifizierung wird ein zuvor ausgestelltes API-Token benötigt. Bei Requests kann dieses Token innerhalb eines `Authorization`-Headers übergeben werden:\n\n```http\nGET /v1/customers/123456 HTTP/1.1\nHost: api.mittwald.de\nAuthorization: Bearer {TOKEN-HIER-EINFÜGEN}\n```\n\nAlternativ dazu kann das Token auch in Form des Query-Parameters `access_token` übergeben werden:\n    GET /v1/customers/123456?access_token={TOKEN-HIER-EINFÜGEN} HTTP/1.1\n    Host: api.mittwald.de\n\nUm ein Token zu beziehen, kann der `/authenticate`-Endpunkt genutzt werden. Hier erfolgt eine Authentifzierung über die Zugangsdaten des Mittwald-Kundencenters.\n    POST /v1/authenticate HTTP/1.1\n    Host: api.mittwald.de\n    Content-Type: application/json\n    Accept: application/jwt\n\n    {\n        \"username\": \"r1234\",\n        \"password\": \"{PASSWORT-HIER-EINFÜGEN}\"\n    }\n\nRückgabewert dieses Aufrufs ist ein API-Token. Dieses hat eine begrenzte Gültigkeitsdauer.\n\n**Wichtig**: Client-Applikationen sollten das API-Token für seine Gültigkeitsdauer cachen, und erst *anschließend* ein neues Token über die API anfordern.\n\n### Mit Access-Token\n\nFür Anwendungen, die dauerhaft Zugriff auf die Mittwald-API benötigen, wird nicht empfohlen, Nutzername und Passwort dauerhaft in der jeweiligen Anwendung zu speichern. Stattdessen empfehlen wir den Einsatz eines Access Tokens, welches nach einem (initialen) Login mit Nutzername und Passwort erstellt und im Anschluss anstelle dessen genutzt werden kann.\n\nHierzu wird zunächst ein reguläres API-Token benötigt, das per Nutzername und Passwort bezogen werden kann. Weder Nutzername+Passwort noch das damit bezogene API-Token müssen dauerhaft gespeichert werden. Sie dienen lediglich dazu, ein Access Token zu erstellen, welches im Anschluss dauerhaft in der Applikation gespeichert werden kann:\n\n```\nPOST /v1/authentication/tokens HTTP/1.1\nHost: api.mittwald.de\nContent-Type: application/json\n\n{  \"description\": \"Meine Anwendung\"\n}\n```\n\nIn der Antwort auf obige Anfrage ist das eigentliche Access Token und dessen ID enthalten (mit Beispiel-Daten):\n\n```\nHTTP/1.1 201 Created\nContent-Type: application/json\n\n{  \"uuid\": \"2a91ce52-2058-404b-9959-ac7d2fbbbfbc\",\n  \"token\": \"MW_aEQyz5j9YmTaamTq2N9X3d2sBDACLUoz\",\n  \"crdate\": \"2021-08-23T14:06:17.580Z\",\n  \"description\": \"Meine Anwendung\"\n}\n```\n\n`uuid` und `token` dieser Antwort können bei nachfolgenden Authentifzierungs-Vorgängen als Nutzername und Passwort genutzt werden.\n\nRate Limiting\n-------------\n\nZur Sicherstellung der Systemstabilität sind einige API-Endpunkte in der Anzahl der durchführbaren Anfragen beschränkt. Die Limitierung bezieht sich dabei stets auf ein Zeitfenster von 15 Minuten.\n\nBei auf diese Weise zugriffsbeschränkten API-Endpunkten enthalten die HTTP-Antworten stets einen `X-RateLimit`-Header, welcher die maximale Anzahl der ausführbaren Anfragen enthält. Außerdem enthält jede Antwort einen `X-RateLimit-Remaining`-Header, welcher die aktuell noch verfügbaren Anfragen enthält:\n    HTTP/1.1 200 OK\n    Content-Type: application/json;charset=utf8\n    Content-Length: 1234\n    X-RateLimit: 1000\n    X-RateLimit-Remaining: 712\n\nCaching\n-------\n\nEinige Anfragen an die API können zwecks besserer Performance aus einem serverseitigen Cache beantwortet werden. Wurde eine Anfrage aus dem Cache beantwortet, enthält die Antwort einen `X-Cache: HIT`-Header.\n\nDer Cache einer Ressource wird dann geleert, wenn ein `POST`-, `PUT`- oder `DELETE`-Request an dieselbe URI gesendet wird, oder bei einem `GET`-Request ein `Cache-Control: no-cache`-Header gesendet wird.\n","x-navigateMethodsByName":true},"servers":[{"url":"https://api.mittwald.de/v1"}],"tags":[{"name":"Authentifizierung","description":"Authentifizierung"},{"name":"Accounts","description":"Webhosting-Accounts"},{"name":"Reseller","description":"Reseller-Tarife"},{"name":"Database","description":"Datenbanken"},{"name":"Domains","description":"Domaindaten"},{"name":"Mailadressen","description":"Mailadressen"},{"name":"Notification","description":"Notifications"},{"name":"Software","description":"Softwaremanager"},{"name":"Kunden","description":"Kunden- und Vertragsdaten"},{"name":"Verträge","description":"Verträge"},{"name":"Angebote","description":"Angebotsmanagement"},{"name":"Bestellungen","description":"Bestellung neuer Artikel"},{"name":"Partner","description":"Partnerprogramm & Partnerbox"},{"name":"Artikel","description":"Artikelverwaltung"},{"name":"Warenkorb","description":"Bestellung neuer Artikel"},{"name":"PromotionCode","description":"Gutscheincodes"},{"name":"Virt","description":"V/D-Root Server"},{"name":"Bankdaten","description":"Bankdaten"},{"name":"Webhooks","description":"Webhooks"},{"name":"Kündigung","description":"Kündigung"},{"name":"DSGVO-Verträge","description":"DSGVO-Verträge"},{"name":"DSGVO-Kontakte","description":"DSGVO-Kontakte"},{"name":"DSGVO-TOMs","description":"DSGVO-TOMs"},{"name":"Tickets","description":"Support-Tickets"},{"name":"navigation","description":"Navigation"},{"name":"Telefonverifizierung","description":"Telefonverifizierung"},{"name":"Dateiupload","description":"Dateiupload"},{"name":"Password","description":"Password"},{"name":"mfa","description":"MFA"},{"name":"Feedback","description":"Feedback"},{"name":"Zertifikate","description":"Zertifikate"},{"name":"DNS","description":"DNS"},{"name":"Cronjob","description":"Cronjobs"}],"paths":{"/authenticate":{"post":{"tags":["Authentifizierung"],"summary":"Login über eine der Zugriffsmöglichkeiten","description":"Diese Operation liefert bei erfolgreichem Login ein access_token aus. Es kann ein zweiter Faktor notwendig sein. Dieser kann per TOTP generiert werden oder per E-Mail empfangen werden. Im letzten Fall muss dann zusätzlich eine Device-ID mitgeschickt.","operationId":"authenticate","requestBody":{"description":"Der Request für den Login (mindestens Username und Password). Zusätzlich kann eine Device-ID und/oder ein MultiFactorCode erforderlich sein. Erkennbar ist das an der Response 202.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequest"}}},"required":true},"responses":{"200":{"description":"Login Token und Ablaufzeitpunkt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationResponse"}}}},"202":{"description":"Login ist nicht fehlerhalft, erfordert aber einen weiteren Faktor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationIncompleteResponse"}}}}},"x-operationName":"Login"}},"/authentication/tokens":{"get":{"tags":["Authentifizierung"],"summary":"Auslesen von erstellten Application-Tokens","description":"Diese Operation liefert alle bisher erstellten Application-Tokens aus.","operationId":"listApplicationTokens","responses":{"200":{"description":"Liste aller Application-Tokens","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationToken"}}}}}},"x-operationName":"Auslesen von erstellten Application-Tokens"},"post":{"tags":["Authentifizierung"],"summary":"Hinterlegen von neuen Application-Tokens","description":"Diese Operation ermöglicht es neue Application-Tokens zu hinterlegen.","operationId":"createApplicationToken","requestBody":{"description":"Das Token sowie eine optionale Beschreibung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationTokenInput"}}},"required":true},"responses":{"201":{"description":"Application-Token hinterlegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationTokenResponse"}}}}},"x-operationName":"Hinterlegen von neuen Application-Tokens","x-codegen-request-body-name":"token"}},"/authentication/accesstoken":{"get":{"tags":["Authentifizierung"],"operationId":"getAccessToken","description":"get new access token","summary":"get new access token","responses":{"200":{"description":"access token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}}}}},"/authentication/tokens/{uuid}":{"delete":{"tags":["Authentifizierung"],"summary":"Löschen von Application-Tokens","description":"Diese Operation ermöglicht es Application-Tokens zu löschen.","operationId":"deleteApplicationToken","parameters":[{"name":"uuid","in":"path","description":"Die UUID des Tokens","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Application-Token gelöscht","content":{}}},"x-operationName":"Löschen von Application-Tokens"}},"/authentication/self":{"get":{"tags":["Authentifizierung"],"summary":"User-Name des aktuellen Logins","description":"Ließt aus dem JWT den aktuellen User-Namen aus","operationId":"getUserName","responses":{"200":{"description":"Object mit dem aktuellen User-Namen","content":{"application/json":{"schema":{"type":"object","required":["name","type","createdAt"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["CUS","ACC","FTP","DB","MAIL"]},"createdAt":{"type":"number"}}}}}}}}},"/accounts/{accountIdentifier}":{"get":{"tags":["Accounts"],"summary":"Account auslesen","description":"Diese Operation liest genaue Daten eines einzelnen Accounts aus","operationId":"getAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der Account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Account auslesen"},"patch":{"tags":["Accounts"],"summary":"Account bearbeiten","description":"Nehme Änderungen an dem Account vor. Ändere die Beschreibung oder aktiviere/deaktiviere diesen.","operationId":"updateAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":4,"description":"Neue Account Beschreibung"},"active":{"type":"boolean","description":"Account aktivieren oder deaktivieren. Geht nur bei Reseller Unteraccounts."}}}}}},"responses":{"200":{"description":"Information, was geändert worden ist.","content":{"application/json":{"schema":{"type":"object","required":["msg"],"properties":{"msg":{"type":"string"}}}}}},"400":{"description":"Invalide body Daten!","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Account updaten"}},"/notifications":{"get":{"tags":["Notification"],"summary":"Notifications auslesen","description":"Liste alle Notifications worauf der Login aktuell rechte hat aus","operationId":"getNotifications","parameters":[{"name":"countOnly","in":"query","description":"Soll nur die ungelesenen Nachrichten gezählt werden? (Performance\nboost)\n","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Die Notifications","content":{"application/json":{"schema":{"type":"object","required":["notifications","unreadCount"],"properties":{"notifications":{"type":"array","items":{"$ref":"#/components/schemas/Notification"}},"unreadCount":{"type":"number"}}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Account auslesen"},"delete":{"tags":["Notification"],"summary":"Notifications löschen","description":"Löscht alle Notifications des eingeloggten Users","operationId":"deleteNotifications","responses":{"204":{"description":"Notifications gelöscht"},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/resellers/{resellerIdentifier}":{"get":{"tags":["Reseller"],"summary":"Reseller auslesen","description":"Diese Operation liest genaue Daten eines einzelnen Resellers aus","operationId":"getReseller","parameters":[{"name":"resellerIdentifier","in":"path","description":"Name oder ID eines Resellers","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der Reseller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Reseller"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Reseller auslesen"}},"/databasetypes":{"get":{"tags":["Database"],"summary":"Datenbanktypen","description":"Datenbanktypen auslesen","operationId":"listDatabaseTypes","responses":{"200":{"description":"Die Datenbanktypen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DatabaseType"}}}}}},"x-operationName":"Datenbanktypen"}},"/accounts/{accountIdentifier}/domains":{"get":{"tags":["Domains"],"summary":"Domains eines Accounts auslesen","description":"Diese Operation liest die Domains eines einzelnen Accounts aus","operationId":"listDomainsByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Anzahl der zurückzuliefernden Domains.","schema":{"type":"integer","default":20}},{"name":"offset","in":"query","description":"Offset für die Limitierung der Suchergebnisse","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Die Domains des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Domain"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Domains eines Accounts auslesen"},"post":{"tags":["Domains"],"summary":"Domain registrieren/Transfer einleiten","description":"Diese Operation kann genutzt werden, um für den gegebenen Account eine neue Domain zu registrieren oder einen Virtual Host Eintrag zu erstellen. Falls die Domain bereits vergeben ist, müssen ein Auth-Code und unter Umständen ein Authentifizierungsverfahren mitangegeben werden, um einen Domain-Transfer einzuleiten.","operationId":"registerNewDomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Daten für eine Domain-Registrierung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRegistration"}}},"required":true},"responses":{"201":{"description":"Die erstellte Domain","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Domain"}}}}},"400":{"description":"Fehlendes oder fehlerhaftes Argument.","content":{}}},"x-operationName":"Domain registrieren/Transfer einleiten","x-codegen-request-body-name":"body"}},"/accounts/{accountIdentifier}/domains/{domainIdentifier}/certificate":{"delete":{"tags":["Domains"],"summary":"Let's Encrypt Zertifikat einer Domain löschen","description":"Diese Operation löscht das Let's Encrypt Zertifikat einer Domain","operationId":"deleteCertificateByDomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Domain deren Zertifikat gelöscht werden soll","schema":{"type":"string"}}],"responses":{"200":{"description":"Zertifikat erfolgreich gelöscht"},"400":{"description":"Ungültige Anfrage, Zertifikat nicht Let's Encrypt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Zertifikat nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Let's Encrypt Zertifikat einer Domain löschen"}},"/accounts/{accountIdentifier}/domainsproxies":{"get":{"tags":["Domains"],"summary":"Domain Proxies eines Accounts","description":"Zeige alle aktiven Domain Proxies eines Accounts an","operationId":"domainProxyList","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Liste alle aktiven Domain Proxies.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DomainProxy"}}}}}},"x-operationName":"Domain Proxies eines Accounts"}},"/accounts/{accountIdentifier}/domains/{domainIdentifier}":{"delete":{"tags":["Domains"],"summary":"Domain löschen/kündigen","description":"Löscht bzw. kündigt eine bestehende Domain","operationId":"deleteDomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Anfrage wurde erfolgreich verarbeitet","content":{}},"400":{"description":"Eine Domain mit zugehörigem SSL-Zertifikat oder Exchange kann nicht gelöscht werden.","content":{}}},"x-operationName":"Domain löschen/kündigen"}},"/accounts/{accountIdentifier}/domains/{domainIdentifier}/authcode":{"get":{"tags":["Domains"],"summary":"Auth-Code einer Domain auslesen","description":"Liefert den Auth-Code einer Domain","operationId":"getDomainAuthCode","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Domain Auth-Code Information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainAuthCode"}}}},"404":{"description":"Domain konnte nicht gefunden werden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Auth-Code einer Domain auslesen"}},"/accounts/{accountIdentifier}/domains/{domainIdentifier}/subdomains":{"get":{"tags":["Domains","Subdomain"],"summary":"Subdomains eines Accounts auslesen","description":"Liefert alle verfügbaren Subdomains eines Accounts","operationId":"listSubdomainsByDomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Liste der Subdomains","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Subdomain"}}}}}},"x-operationName":"Subdomains eines Accounts auslesen"},"post":{"tags":["Domains","Subdomain"],"summary":"Subdomain erstellen","description":"Erstellt eine neue Subdomain","operationId":"createSubdomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Daten der neuen Subdomain","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SubdomainCreationBody"}}}},"required":true},"responses":{"201":{"description":"Subdomain wurde erfolgreich erstellt","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Subdomain"}}}}},"400":{"description":"Subdomain existiert bereits","content":{}}},"x-operationName":"Subdomain erstellen","x-codegen-request-body-name":"body"},"delete":{"tags":["Domains","Subdomain"],"summary":"Subdomain löschen","description":"Löscht eine bestehende Subdomain","operationId":"deleteSubdomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Subdomain wurde erfolgreich gelöscht","content":{}},"400":{"description":"Eine Subdomain mit zugehörigem SSL-Zertifikat kann nicht gelöscht werden.","content":{}}},"x-operationName":"Subdomain löschen"}},"/accounts/{accountIdentifier}/domains/{domainIdentifier}/subdomains/{subdomainIdentifier}":{"get":{"tags":["Subdomain"],"summary":"Subdomain auslesen","description":"Liefert eine spezifische Subdomain","operationId":"getSubdomain","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","in":"path","description":"Vollständiger Name der Domain","required":true,"schema":{"type":"string"}},{"name":"subdomainIdentifier","in":"path","description":"Vollständiger Name der Subdomain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die gewünschte Subdomain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Subdomain"}}}}},"x-operationName":"Subdomain auslesen"}},"/accounts/{accountIdentifier}/domainrecords":{"get":{"tags":["Domains"],"summary":"Domainrecords eines Accounts auslesen","description":"Diese Operation liest die Domainrecords eines einzelnen Accounts aus","operationId":"listDomainrecordsByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Anzahl der zurückzuliefernden Domains.","schema":{"type":"integer","default":20}},{"name":"offset","in":"query","description":"Offset für die Limitierung der Suchergebnisse","schema":{"type":"integer","default":0}},{"name":"visibleOnly","in":"query","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Die Domainrecords des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["domainName","fullName","isSubDomain","isUsingMittwaldMailsystem","tld","status"],"properties":{"account":{"type":"object","properties":{"customerNumber":{"type":"number"},"description":{"type":"string"},"disabled":{"type":"boolean"},"name":{"type":"string"},"status":{"type":"string"},"uid":{"type":"number"},"virtual":{"type":"boolean"}}},"certificate":{"type":"object","properties":{"altNames":{"type":"array","items":{"type":"string"}},"commonName":{"type":"string"},"isInclusive":{"type":"boolean"},"stage":{"type":"string"},"statusDescription":{"type":"string"},"uid":{"type":"number"}}},"domainName":{"type":"string"},"forceHttps":{"type":"boolean","description":"Indicates if an automatic HTTPS redirect should be performed for this domain.\n"},"fullName":{"type":"string","description":"The full name of the domain record (including parent domain and TLD)."},"ipAddress":{"type":"string","description":"The IP address of the server which is hosting this domain. If the domain is registered via mittwald (more precisely: if its DNS zone is managed by mittwald), this will automatically be the content of the DNS A record. If the DNS zone is managed by an external DNS vendor, this IP address needs to be configured as A record there.\n"},"isSubDomain":{"type":"boolean"},"isUsingMittwaldMailsystem":{"type":"boolean","description":"`true` if this domain record uses the mittwald mail system. In this case, the DNS zone's MX records will point to the mittwald-operated email server.\n"},"registrarStatus":{"type":"string"},"status":{"type":"number"},"target":{"type":"string"},"tld":{"type":"string"},"uid":{"type":"number"}}}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Domainrecords eines Accounts auslesen"}},"/accounts/{accountIdentifier}/certificates":{"get":{"tags":["Zertifikate"],"summary":"Zertifikate eines Accounts auslesen","description":"Liest alle Zertifikate des gegebenen Accounts aus","operationId":"getAllCertificates","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Liste der Zertifikate des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Certificate"}}}}}}},"post":{"tags":["Zertifikate"],"summary":"Zertifikate anlegen/upgraden","description":"Legt ein neues Zertifikat an oder upgraded ein bestehendes","operationId":"createOrUpgradeCertificates","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Daten der zu erstellenden/upgradenden Zertifikate","content":{"application/json":{"schema":{"required":["article","domains"],"type":"object","properties":{"article":{"type":"integer","description":"Die Artikelnummer für alle neuen Zertifikate, 9556 für Let's Encrypt\n"},"domains":{"type":"array","items":{"type":"string","description":"Vollständiger Name der gewünschten Domain"}}}}}}},"responses":{"200":{"description":"Zertifikatupgrades erfolgreich angestoßen für gefundene Domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateCreateOrUpgradeResponse"}}}},"201":{"description":"Zertifikaterstellungen angestoßen für gefundene Domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateCreateOrUpgradeResponse"}}}},"202":{"description":"Zertifikatupgrades und -erstellungen erfolgreich angestoßen für gefundene Domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CertificateCreateOrUpgradeResponse"}}}},"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Zertifikate anlegen/upgraden"}},"/accounts/{accountIdentifier}/mailaddresses":{"get":{"tags":["Mailadressen"],"summary":"Mailadressen eines Accounts auslesen","description":"Diese Operation liest die Mailadressen eines einzelnen Accounts aus","operationId":"listEmailAddressesByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Anzahl der zurückzuliefernden Domains.","schema":{"type":"integer","default":20}},{"name":"offset","in":"query","description":"Offset für die Limitierung der Suchergebnisse","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Die Mailadressen des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MailAddress"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Mailadressen eines Accounts auslesen"}},"/accounts/{accountIdentifier}/cronjobs":{"get":{"tags":["Cronjob"],"summary":"Cronjobs eines Accounts auslesen","description":"Diese Operation liest die Cronjobs eines einzelnen Accounts aus","operationId":"listCronjobsByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Verzeichnisse und Dateien des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Cronjob"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Cronjobs eines Accounts auslesen"},"post":{"tags":["Cronjob"],"summary":"Neuen Cronjob anlegen","description":"Diese Operation legt einen neuen Cronjob an","operationId":"createCronjob","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Der anzulegende Cronjob","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCronjob"}}}},"responses":{"200":{"description":"Der angelegte Cronjob","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cronjob"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Cronjobs eines Accounts auslesen"}},"/accounts/{accountIdentifier}/cronjobs/{cronjobIdentifier}":{"get":{"tags":["Cronjob"],"summary":"Spezifischen Cronjob eines Accounts auslesen","description":"Diese Operation liest einen spezifischen Cronjob eines Accounts aus","operationId":"getCronjob","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"cronjobIdentifier","in":"path","description":"ID eines Cronjobs","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der angeforderte Cronjob","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cronjob"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Spezifischen Cronjob eines Accounts auslesen"}},"/accounts/{accountIdentifier}/cronjobs/benefits":{"get":{"tags":["Cronjob"],"summary":"Cronjob-Benefits eines Accounts auslesen","description":"Diese Operation liest die Cronjob-Benefits eines Accounts aus","operationId":"getCronjobBenefitsByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Cronjob-Benefits des Accounts","content":{"application/json":{"schema":{"type":"object","required":["allowCustom","max"],"properties":{"minInterval":{"type":"number"},"allowCustom":{"type":"boolean"},"max":{"type":"number"}}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Cronjob-Benefits eines Accounts auslesen"}},"/cronjobs/{cronjobIdentifier}":{"put":{"tags":["Cronjob"],"summary":"Spezifischen Cronjob eines Accounts bearbeiten","description":"Diese Operation bearbeitet einen spezifischen Cronjob eines Accounts aus","operationId":"updateCronjob","parameters":[{"name":"cronjobIdentifier","in":"path","description":"ID eines Cronjobs","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"customTimeoutMode":{"type":"number","enum":[0,1]},"customTimeoutValue":{"type":"number"},"enabled":{"type":"boolean"},"errorReporting":{"type":"string","enum":["NONE","MAIL_ON_FAILURE","MAIL"]},"errorReportingEmail":{"type":"string"},"file":{"type":"string"},"url":{"type":"string"},"interpreter":{"type":"number"},"interval":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"params":{"type":"string"},"type":{"type":"string","enum":["SERVER","BROWSER","INTERPRETER"]}}}}}},"responses":{"200":{"description":"Der modifizierte Cronjob","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cronjob"}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Cronjob ist gelöscht, kann nicht bearbeitet werden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"423":{"description":"Cronjob aktuell blockiert, kann aktuell nicht bearbeitet werden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Spezifischen Cronjob eines Accounts bearbeiten"},"delete":{"tags":["Cronjob"],"summary":"Cronjob löschen","description":"Diese Operation löscht einen Cronjob","operationId":"deleteCronjob","parameters":[{"name":"cronjobIdentifier","in":"path","description":"ID eines Cronjobs","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Cronjob erfolgreich gelöscht"},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Cronjob löschen"}},"/cronjobs/interpreter":{"get":{"tags":["Cronjob"],"summary":"Interpreter für Cronjobs auslesen","description":"Diese Operation liest die die Interpreter für Cronjobs aus","operationId":"getCronjobInterpreters","responses":{"200":{"description":"Die Interpreter für Cronjobs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CronjobInterpreter"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Interpreter für Cronjobs auslesen"}},"/cronjobs/intervaltemplates":{"get":{"tags":["Cronjob"],"summary":"Intervalltemplates für Cronjobs auslesen","description":"Diese Operation liest die die Intervalltemplates für Cronjobs aus","operationId":"getCronjobIntervaltemplates","responses":{"200":{"description":"Die Intervalltemplates für Cronjobs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CronjobIntervalTemplate"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Intervalltemplates für Cronjobs auslesen"}},"/cronjobs/softwaretemplates":{"get":{"tags":["Cronjob"],"summary":"Cronjob-Softwaretemplates auslesen","description":"Diese Operation liest die die Cronjob-Softwaretemplates aus","operationId":"getCronjobSoftwaretemplates","responses":{"200":{"description":"Die Cronjob-Softwaretemplates","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CronjobSoftwareTemplate"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Cronjob-Softwaretemplates auslesen"}},"/accounts/{accountIdentifier}/directories":{"get":{"tags":["Accounts"],"summary":"Verzeichnisstruktur eines Accounts auslesen","description":"Diese Operation liest die Verzeichnisstruktur eines einzelnen Accounts aus","operationId":"listDirectoriesByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"directory","in":"query","description":"Verzeichnispfad welcher ausgelesen wird","schema":{"type":"string"}}],"responses":{"200":{"description":"Die Dateistruktur des Accounts","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DirectoryOrFileMeta"}}}}},"403":{"description":"Zugriff verweigert.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Datei(-pfad) nicht gefunden"},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Verzeichnisstruktur eines Accounts auslesen"}},"/software":{"get":{"tags":["Software"],"summary":"Unterstützte Software auslesen","description":"Liest die mögliche Software für eine Neu-Bestellung aus","operationId":"listSoftwares","responses":{"200":{"description":"Array an unterstützter Software","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Software"}}}}}},"x-operationName":"Unterstützte Software auslesen"}},"/accounts/{accountIdentifier}/installations":{"get":{"tags":["Accounts","Software"],"summary":"Softwareinstallationen auslesen","description":"Diese Operation liest alle Softwareinstallationen eines einzelnen Accounts aus","operationId":"listSoftwareInstallationsByAccount","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"installPath","in":"query","description":"Filtert Software-Installationen nach Installationspfad (z.B. `&installPath=%2Fhtml%2Ftypo3`)","schema":{"type":"string"}}],"responses":{"200":{"description":"Im Account installierte Software","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SoftwareInstallation"}}}}}},"x-operationName":"Softwareinstallationen auslesen"}},"/accounts/{accountIdentifier}/installations/actions/update-php":{"post":{"tags":["Accounts","Software"],"summary":"PHP Updaten","description":"PHP Version vom übergebenen Account auf neue Zielversion updaten","operationId":"updatePhp","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Request Body des Update-Prozesses","content":{"application/json":{"schema":{"type":"object","required":["version"],"properties":{"version":{"type":"string","description":"Major & Minor Versions-Nummer, z.B. \"8.1\""}}}}}},"responses":{"200":{"description":"Erfolgreich geupdatet.","content":{"application/json":{"schema":{"type":"object","properties":{"msg":{"type":"string"}}}}}},"400":{"description":"Invalide Eingabeparameter","content":{"application/json":{"schema":{"type":"object","properties":{"msg":{"type":"string"}}}}}},"402":{"description":"Aktion würde Geld kosten und ist für diese Art von Login verboten.","content":{"application/json":{"schema":{"type":"object","properties":{"msg":{"type":"string"}}}}}},"404":{"description":"Ziel Version oder PHP Installation nicht gefunden.","content":{"application/json":{"schema":{"type":"object","properties":{"msg":{"type":"string"}}}}}}},"x-operationName":"PHP Installation updaten"}},"/installations/{installationIdentifier}":{"get":{"tags":["Software"],"summary":"Details einer Softwareinstallation auslesen","description":"Diese Operation liest Details zu einer ganz bestimmten Softwareinstallation aus","operationId":"getSoftwareInstallation","parameters":[{"name":"installationIdentifier","in":"path","description":"ID einer Software-Installation","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Details der angegebenen Software-Installation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SoftwareInstallation"}}}}},"x-operationName":"Details einer Softwareinstallation auslesen"}},"/installations/{installationIdentifier}/extensions":{"get":{"tags":["Software"],"summary":"Extensions einer Softwareinstallation auslesen","description":"Diese Operation liest Extensions aus, die in einer bestimmten\nSoftwareinstallation installiert sind.\n\n**Hinweis**: Diese Daten werden in der Regel einmal täglich aktualisiert.\n","operationId":"listSoftwareInstallationExtensions","parameters":[{"name":"installationIdentifier","in":"path","description":"ID einer Software-Installation","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Details der angegebenen Software-Installation","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SoftwareExtension"}}}}}},"x-operationName":"Extensions einer Softwareinstallation auslesen"}},"/customer":{"get":{"tags":["Kunden"],"summary":"Details zu dem aktuellem Kunden","description":"Liefert Details zum aktuellen Kunden.","operationId":"getCurrentCustomer","responses":{"200":{"description":"Die Kunden Details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}}},"x-operationName":"Details zu dem aktuellem Kunden"}},"/customers/self":{"get":{"tags":["Kunden"],"summary":"Details zum aktuell eingeloggten Kunden","description":"Liefert Details zum aktuell eingeloggten Kunden","operationId":"getOwnCustomer","responses":{"200":{"description":"Die Kundendetails","content":{"application/json":{"schema":{"type":"object","required":["customerNumber"],"properties":{"customerNumber":{"type":"number"}}}}}}}}},"/customers/{customerNumber}":{"get":{"tags":["Kunden"],"summary":"Kundendetails auslesen","description":"Diese Ressource enthält Detailinformationen zu einem bestimmten Kunden.","operationId":"getCustomer","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Eine Beschreibung des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Kundendetails auslesen"}},"/customers/{customerNumber}/contractpartner":{"get":{"tags":["Kunden"],"summary":"Vertragspartner auslesen","description":"Diese Operation liefert Details zum Vertragspartner eines Kunden zurück","operationId":"getCustomerContractPartner","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Eine Beschreibung des Vertragspartners des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Vertragspartner auslesen"},"put":{"tags":["Kunden"],"summary":"Vertragspartner ändern","description":"Über diese Operation können die Vertragspartnerdaten eines Kunden geändert werden","operationId":"updateCustomerContractPartner","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Die zu ändernden Vertragspartnerdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContact"}}},"required":true},"responses":{"200":{"description":"Vertragspartner eines Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"type":"object","required":["msg","reason","trace"],"properties":{"msg":{"type":"string"},"reason":{"type":"string"},"trace":{"type":"string"}}}}}}},"x-operationName":"Vertragspartner ändern","x-codegen-request-body-name":"updateContractPartnerRequest"}},"/customers/{customerNumber}/contactperson":{"get":{"tags":["Kunden"],"summary":"Ansprechpartner auslesen","description":"Diese Operation liefert Details zum Ansprechpartner eines Kunden zurück. Der Ansprechpartner kann identisch mit dem Vertragspartner sein; in diesem Fall wird die Anfrage mit einem 303-Statuscode beantwortet, und der `Location`-Header enthält die URL des Vertragspartners, der in diesem Fall als Ansprechpartner gilt.","operationId":"getCustomerContactPerson","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Eine Beschreibung des Ansprechpartners des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}},"301":{"description":"Für den Fall, dass Ansprech- und Vertragspartner identisch sind, wird eine Weiterleitung auf den Vertragspartner zurück geliefert.","headers":{"Location":{"description":"Die URL des Vertragspartners, der in diesem Fall auch Ansprechpartner ist","schema":{"type":"string"}}},"content":{}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Ansprechpartner auslesen"},"put":{"tags":["Kunden"],"summary":"Ansprechpartner ändern","description":"Über diese Operation lassen sich die Daten des Ansprechpartners eines Kunden ändern. Dabei kann der Ansprechpartner über den Request-Body-Parameter \"identicalToDefaultAddress\" ebenfalls identisch zum Vertragspartner gesetzt werden.","operationId":"updateCustomerContactPerson","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Die zu ändernden Ansprechpartnerdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpdateRequest"}}},"required":true},"responses":{"200":{"description":"The customer contact person object","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}},"403":{"description":"When the user is not authorized to access this customer. To prevent information disclosure, this API does not differentiate between non-existing customers (which could be responsed to with a 404 status code) and unauthorized customers.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Ansprechpartner ändern","x-codegen-request-body-name":"updateContactPersonRequest"}},"/customers/{customerNumber}/paymentsettings":{"get":{"tags":["Kunden"],"summary":"Zahlungseinstellungen auslesen","operationId":"getCustomerPaymentSettings","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Die Zahlungseinstellungen des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPaymentSettings"}}}}},"x-operationName":"Zahlungseinstellungen auslesen"},"put":{"tags":["Kunden"],"summary":"Zahlungseinstellungen ändern","operationId":"updateCustomerPaymentSettings","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Neue Zahlungseinstellungen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPaymentSettings"}}},"required":true},"responses":{"200":{"description":"Die Zahlungseinstellungen des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPaymentSettings"}}}}},"x-operationName":"Zahlungseinstellungen ändern","x-codegen-request-body-name":"paymentSettings"}},"/customers/{customerNumber}/billingrecipient":{"get":{"tags":["Kunden"],"summary":"Rechungsempfänger auslesen","operationId":"getCustomerBillingRecipient","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Der Rechnungsempfänger des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}},"301":{"description":"Für den Fall, dass Rechnungsempfänger und Vertragspartner identisch sind, wird eine Weiterleitung auf den Vertragspartner zurück geliefert.","headers":{"Location":{"description":"Die URL des Vertragspartners, der in diesem Fall auch Rechnungsempfänger ist","schema":{"type":"string"}}},"content":{}}},"x-operationName":"Rechungsempfänger auslesen"},"put":{"tags":["Kunden"],"summary":"Rechnungsempfänger ändern","operationId":"updateCustomerBillingRecipient","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Neuer Rechnungsempfänger","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContact"}}},"required":true},"responses":{"200":{"description":"Der Rechnungsempfänger des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerPartner"}}}}},"x-operationName":"Rechnungsempfänger ändern","x-codegen-request-body-name":"billingRecipient"},"delete":{"tags":["Kunden"],"summary":"Rechnungsempfänger eines Kunden zurücksetzen","description":"Diese Operation setzt den Rechnungsempfänger eines Kunden auf den Vertragspartner zurück","operationId":"resetCustomerBillingRecipient","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Leere Antwort","content":{}}},"x-operationName":"Rechnungsempfänger eines Kunden zurücksetzen"}},"/customers/{customerNumber}/billingsettings":{"get":{"tags":["Kunden"],"summary":"Rechungseinstellungen auslesen","operationId":"getCustomerBillingSettings","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Die Rechungseinstellungen des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBillingSettings"}}}}},"x-operationName":"Rechungseinstellungen auslesen"},"put":{"tags":["Kunden"],"summary":"Rechnungseinstellungen ändern","operationId":"updateCustomerBillingSettings","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Neue Zahlungseinstellungen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBillingSettings"}}},"required":true},"responses":{"200":{"description":"Die Zahlungseinstellungen des Kunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBillingSettings"}}}}},"x-operationName":"Rechnungseinstellungen ändern","x-codegen-request-body-name":"billingSettings"}},"/customers/{customerNumber}/invoices":{"get":{"tags":["Kunden"],"summary":"Rechnungen eines Kunden","description":"Diese Ressource enthält eine Sammlung aller Rechnungen eines Kunden","operationId":"listInvoicesByCustomer","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Eine Liste aller Rechnungen des Kunden","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"}}}}}},"x-operationName":"Rechnungen auslesen"}},"/customers/{customerNumber}/accounts":{"get":{"tags":["Accounts","Kunden"],"summary":"Accounts eines Kunden","description":"Diese Ressource enthält eine Sammlung aller Accounts eines Kunden.","operationId":"listAccountsByCustomer","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}},{"name":"advised","in":"query","description":"Dieser Parameter steuert, ob auch Accounts zurückgeliefert werden sollen,\nfür die eine Verwaltungsfreigabe besteht, aber nicht zur Kundennummer\n`{customerNumber}` gehören.'\n","schema":{"type":"boolean","default":false}},{"name":"owned","in":"query","description":"Dieser Parameter steuert, ob Accounts zurückgeliefert werden sollen, die\ndirekt der Kundennummer `{customerNumber}` gehören. Dieser Parameter hat standardmäßig\nden Wert `true`; über den Wert `false` können in Kombination mit dem Parameter\n`advised` ausschließlich Accounts abgefragt werden, für die eine Verwaltungsfreigabe\nbesteht.\n","schema":{"type":"boolean","default":true}},{"name":"fields","in":"query","description":"Felder die beim Ergebnis inkludiert werden","schema":{"type":"string"}}],"responses":{"200":{"description":"Eine Liste aller Accounts, die dem Kunden gehören","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Account"}}}}}},"x-operationName":"Accounts auslesen"}},"/customers/{customerNumber}/benefits/{benefit}":{"get":{"tags":["Kunden"],"summary":"Details zu einer gebuchten Leistung","description":"Liefert Details zu einer gebuchten Leistung.","operationId":"getBenefitDetails","parameters":[{"name":"customerNumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"integer"}},{"name":"benefit","in":"path","description":"Leistung","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Leistung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Benefit"}}}}},"x-operationName":"Details zu einer gebuchten Leistung"}},"/customers/{customerNumber}/contracts":{"get":{"tags":["Verträge"],"summary":"Verträge auslesen","description":"Liefert alle Verträge eines Kunden","operationId":"listContractsByCustomer","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Die Verträge des Kunden","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}}}}}},"x-operationName":"Verträge auslesen"}},"/customers/{customerNumber}/cancelledcontracts":{"get":{"tags":["Verträge"],"summary":"Verträge eines Kunden, die sich aktuell im Kündigungsprozess befinden","description":"Liefert alle Verträge eines Kunden, die aktuell gekündigt werden und sich noch nicht länger als 5 Tage in diesem Prozess befinden","operationId":"listCancelledContractsByCustomer","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Die sich aktuell im Kündigungsprozess befindenden Verträge des Kunden","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}}}}}},"x-operationName":"Verträge eines Kunden, die sich aktuell im Kündigungsprozess befinden"}},"/customers/{customerNumber}/dsgvocontractstatus":{"get":{"tags":["Kunden"],"summary":"Status des AV-Vertrags eines Kunden mit mittwald","description":"Liefert den Status des AV-Vertrages eines Kunden mit mittwald, falls kein Vertrag unterschrieben ist wird zusätzlich eine iFrameUrl zum Ausfüllen zurückgegeben","operationId":"getAvContractStatus","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Der Status des AV-Vertrages ggf. mit iFrameUrl zum Ausfüllen","content":{"application/json":{"schema":{"type":"object","required":["signed"],"properties":{"signed":{"type":"boolean"},"iframeUrl":{"type":"string"}}}}}}},"x-operationName":"Der Status des AV-Vertrages ggf. mit iFrameUrl zum Ausfüllen"}},"/customers/{customerNumber}/settings":{"get":{"tags":["Kunden"],"summary":"Hole Einstellungen eines Kunden.","description":"Hole alle vom Kunden setzbare Einstellungen.","operationId":"getCustomerSettings","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Die Einstellungen des Kunden.","content":{"application/json":{"schema":{"type":"object","required":["customerNumber","language"],"properties":{"customerNumber":{"type":"number"},"language":{"type":"string"}}}}}}},"x-operationName":"Kunden Einstellungen auslesen","x-codegen-request-body-name":"getCustomerSettings"},"post":{"tags":["Kunden"],"summary":"Setze Einstellungen des Kunden.","description":"Setze die Kunden Einstellungen, wie z.B. Sprache.","operationId":"setCustomerSettings","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Die zu ändernden Einstellungen.","content":{"application/json":{"schema":{"type":"object","required":["language"],"properties":{"language":{"type":"string"}}}}},"required":true},"responses":{"200":{"description":"Die Einstellungen des Kunden.","content":{"application/json":{"schema":{"type":"object","required":["customerNumber","language"],"properties":{"customerNumber":{"type":"number"},"language":{"type":"string"}}}}}}},"x-operationName":"Kunden Einstellungen setzten","x-codegen-request-body-name":"setCustomerSettings"}},"/customers/{customerNumber}/php-accounts":{"get":{"tags":["Kunden"],"summary":"Hole PHP Accounts eines Kunden.","description":"Hole alle vom Kunden einsehbaren PHP-Accounts.","operationId":"getCustomerPhpAccounts","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"integer"}},{"name":"type","in":"query","description":"Typ der Antwort","schema":{"type":"string","enum":["json","csv"]}},{"name":"extra","in":"query","description":"Extra Details zum Account mitliefern","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Die Accounts mit PHP des Kunden.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["account","description","technicalAdvised","phpVersion","priceInCent","reseller","tariff","comment","feeStartDate","status"],"properties":{"account":{"type":"string"},"description":{"type":"string"},"technicalAdvised":{"type":"boolean"},"phpVersion":{"type":"string"},"priceInCent":{"type":"number"},"reseller":{"type":"string"},"tariff":{"type":"string"},"comment":{"type":"string"},"installations":{"type":"string"},"feeStartDate":{"type":"string","format":"date"},"startDate":{"type":"string","format":"date"},"graveyardDate":{"type":"string","format":"date"},"purgeDate":{"type":"string","format":"date"},"status":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["DEACTIVATED","TYPO3_ELTS_INCLUSIVE","GRACE_PERIOD"]},"additionalInfo":{"type":"number"}}}},"extra":{"type":"object","required":["domainCount","mailboxCount"],"properties":{"domainCount":{"type":"number"},"mailboxCount":{"type":"number"}}}}}}},"application/force-download":{"schema":{"type":"string"}}}}},"x-operationName":"Kunden PHP Accounts auslesen","x-codegen-request-body-name":"getCustomerPhpAccounts"}},"/invoices/{invoiceNumber}":{"get":{"tags":["Kunden"],"summary":"Rechnung eines Kunden","description":"Diese Ressource repräsentiert eine einzelne Rechnung.\n\nÜber den `Accept`-Header kann gesteuert werden, ob die Daten dieser Rechnung als\nJSON-Dokument oder das tatsächliche Rechnungsdokument als PDF abgerufen werden sollen.\n","operationId":"getInvoice","parameters":[{"name":"invoiceNumber","in":"path","description":"Rechnungsnummer","required":true,"schema":{"type":"integer"}},{"name":"Accept","in":"header","description":"Das erwünschte Format (`application/json` oder `application/pdf`)","schema":{"type":"string"}}],"responses":{"200":{"description":"Die Rechnung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"}}}}},"x-operationName":"Rechnung auslesen"}},"/invoices/{invoiceNumber}/paymentreceipts":{"get":{"tags":["Kunden"],"summary":"Zahlungseingänge einer Rechnung","description":"Liest erfasste Buchungen zu einer bestimmten Rechnung aus","operationId":"getPaymentReceipts","parameters":[{"name":"invoiceNumber","in":"path","description":"Rechnungsnummer","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Eine Liste von Buchungen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentReceipt"}}}}}},"x-operationName":"Zahlungseingänge auslesen"}},"/offers":{"post":{"tags":["Angebote"],"summary":"Neues Angebot anfordern","description":"Über diese Operation kann ein neues Angebot angefordert werden","operationId":"requestQuote","requestBody":{"description":"Die Angebotsanfrage; diese enthält Daten zu den angefragten Artikeln sowie notwendige Kundenstammdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferRequest"}}},"required":true},"responses":{"202":{"description":"Die Anfrage wurde zur Bearbeitung angenommen","content":{}},"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Neues Angebot anfordern","x-codegen-request-body-name":"offerRequest"}},"/orders/preUpgradeCheck/{accountIdentifier}/{articleNumber}":{"get":{"tags":["Bestellungen"],"summary":"Pre-Upgrade Check","description":"Führt ein Check im Vorfeld aus, was sich bei einem Upgrade zu Artikel X ändern würde.","operationId":"orderPreUpgradeCheck","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}},{"name":"articleNumber","in":"path","description":"Artikelnummer","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ergebnis des Checks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderPreUpgradeCheck"}}}},"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Zugriff verboten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Pre-Upgrade Check"}},"/orders/partnerprogram":{"post":{"tags":["Bestellungen","Partner"],"summary":"Anmeldung am Partnerprogramm","description":"Über diese Operation kann ein Kunde am Partnerprogramm angemeldet werden.\n\n**Achtung**: Ist der Nutzer der API als Kunde authentifiziert (d.h. ein API-Token über den `/authenticate`-Endpunkt bezogen hat), ist die erneute Angabe von Kundenstammdaten im Request (hier über das `customer`-Attribut) nicht notwendig. Dennoch übergebene Kundenstammdaten werden zugunsten der bereits im System hinterlegten ignoriert.\n","operationId":"orderPartnerProgram","requestBody":{"description":"Die Bestellanfrage; diese enthält notwendige Kundenstammdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerHostingOrderRequest"}}},"required":true},"responses":{"202":{"description":"Die Anfrage wurde zur Bearbeitung angenommen","content":{}},"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Anmeldung am Partnerprogramm","x-codegen-request-body-name":"partnerHostingOrderRequest"}},"/orders/partnerbox":{"post":{"tags":["Bestellungen","Partner"],"summary":"Bestellung eines Partnerbox","description":"Über diese Operation kann ein neues Partnerbox bestellt werden.\n\n**Achtung**: Ist der Nutzer der API als Kunde authentifiziert (d.h. ein\nAPI-Token über den `/authenticate`-Endpunkt bezogen hat), ist die\nerneute Angabe von Kundenstammdaten im Request (hier über das\n`customer`-Attribut) nicht notwendig. Dennoch übergebene Kundenstammdaten\nwerden zugunsten der bereits im System hinterlegten ignoriert.\n","operationId":"orderPartnerBox","requestBody":{"description":"Die Bestellanfrage; diese enthält notwendige Kundenstammdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerHostingOrderRequest"}}},"required":true},"responses":{"202":{"description":"Die Anfrage wurde zur Bearbeitung angenommen","content":{}},"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-operationName":"Bestellung eines Partnerbox","x-codegen-request-body-name":"partnerHostingOrderRequest"}},"/articles":{"get":{"tags":["Artikel"],"summary":"Suche nach Artikeln","description":"Diese Operation liefert eine Liste von Artikeln zurück, die den angegebenen Suchparametern entsprechen.","operationId":"listArticles","parameters":[{"name":"fields","in":"query","description":"Auszuliefernde Felder, als kommaseparierte Liste.\nBeispiel: `articleNumber,description`","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Anzahl der zurückzuliefernden Artikel.","schema":{"type":"integer","default":20}},{"name":"offset","in":"query","description":"Offset für die Limitierung der Suchergebnisse","schema":{"type":"integer","default":0}},{"name":"articles","in":"query","description":"Kommaseparierte-Liste von Artiklenummern","schema":{"type":"string"}}],"responses":{"200":{"description":"Eine Liste von Artikeln","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}}}},"x-operationName":"Suche nach Artikeln"}},"/articles/{articleNumber}":{"get":{"tags":["Artikel"],"summary":"Artikeldetails","description":"Artikeldetails auslesen","operationId":"getArticle","parameters":[{"name":"articleNumber","in":"path","description":"Artikelnummer","required":true,"schema":{"type":"string"}},{"name":"fields","in":"query","description":"Auszuliefernde Felder, als kommaseparierte Liste. Beispiel:\n`articleNumber,description`\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Der Artikel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Article"}}}}},"x-operationName":"Artikeldetails"}},"/articles/{articleNumber}/cross-selling":{"get":{"tags":["Artikel"],"summary":"Cross-Selling Optionen","description":"Liefert alle möglichen Cross-Selling Artikel aus","operationId":"getCrossSellingOptions","parameters":[{"name":"articleNumber","in":"path","description":"Artikelnummer","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Cross-Selling Optionen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ArticleOption"}}}}}},"x-operationName":"Cross-Selling Optionen"}},"/articles/{articleNumber}/upgrades":{"get":{"tags":["Artikel"],"summary":"Artikel Upgrades","description":"Liefert alle möglichen Upgrades für diesen Artikel aus","operationId":"getArticleUpgrades","parameters":[{"name":"articleNumber","in":"path","description":"Artikelnummer","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Upgrade Optionen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ArticleUpgradeOption"}}}}}},"x-operationName":"Artikel Upgrades"}},"/carts":{"post":{"tags":["Warenkorb"],"summary":"Warenkorb erstellen","description":"Erstellt einen neuen Warenkorb","operationId":"createCart","requestBody":{"content":{"*/*":{"schema":{"title":"Formular-Body","type":"object","properties":{"forcePartnerId":{"type":"string","description":"Der Commission Code, welcher im weiteren Verlauf der Bestellstrecke nie wieder geändert werden kann."}}}}},"required":false},"responses":{"201":{"description":"Der Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb erstellen","x-codegen-request-body-name":"payload"}},"/carts/{cartIdentifier}":{"get":{"tags":["Warenkorb"],"summary":"Warenkorb auslesen","description":"Liefert einen bestehenden Warenkorb aus","operationId":"getCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb auslesen"},"put":{"tags":["Warenkorb"],"summary":"Warenkorb bearbeiten","description":"Aktualisiert einen bestehenden Warenkorb","operationId":"updateCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Der neue Warenkorb","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Cart"}}},"required":true},"responses":{"200":{"description":"Der Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb bearbeiten","x-codegen-request-body-name":"cart"},"post":{"tags":["Warenkorb"],"summary":"Warenkorb aus Vorlage erstellen","description":"Erstellt einen neuen Warenkorb aus einer Vorlage","operationId":"createCartFromTemplate","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der neue Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb aus Vorlage erstellen"},"delete":{"tags":["Warenkorb"],"summary":"Warenkorb löschen","description":"Löscht einen bestehenden Warenkorb","operationId":"deleteCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Der Warenkorb wurde gelöscht","content":{}}},"x-operationName":"Warenkorb löschen"}},"/carts/{cartIdentifier}/items":{"post":{"tags":["Warenkorb"],"summary":"Warenkorb-Position hinzufügen","description":"Fügt ein neues Item in den Warenkorb","operationId":"addItemToCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Das hinzuzufügende Item","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartItemInput"}}},"required":true},"responses":{"200":{"description":"Der aktualisierte Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb-Position hinzufügen","x-codegen-request-body-name":"item"}},"/carts/{cartIdentifier}/items/{itemIdentifier}":{"delete":{"tags":["Warenkorb"],"summary":"Warenkorb-Position löschen","description":"Löscht ein Item aus dem Warenkorb","operationId":"deleteItemFromCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}},{"name":"itemIdentifier","in":"path","description":"Item ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der aktualisierte Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb-Position löschen"}},"/carts/{cartIdentifier}/domains":{"post":{"tags":["Warenkorb"],"summary":"Warenkorb-Domainposition hinzufügen","description":"Fügt eine Domain dem Warenkorb hinzu","operationId":"addDomainToCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Die hinzuzufügende Domain","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainItemInput"}}},"required":true},"responses":{"200":{"description":"Der aktualisierte Warenkorb","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorb-Domainposition hinzufügen","x-codegen-request-body-name":"item"}},"/carts/{cartIdentifier}/actions/checkout":{"post":{"tags":["Warenkorb"],"summary":"Bestellung abschließen","description":"Erzeugt eine Bestellung aus einem Warenkorb","operationId":"checkoutOrder","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"title":"Formular-Body","type":"object","properties":{"pinCode":{"type":"number","description":"Der PinCode, der für den Kundennummer-Wechsel Ihres Bestandspaketes notwendig ist."}}}}},"required":false},"responses":{"200":{"description":"Die Bestellung war erfolgreich","content":{}}},"x-operationName":"Bestellung abschließen","x-codegen-request-body-name":"pinCode"}},"/carts/{cartIdentifier}/actions/offer":{"post":{"tags":["Angebote","Warenkorb"],"summary":"Angebot versenden","description":"Erzeugt ein Angebot aus einem Warenkorb und verschickt dieses als PDF per Mail an den angegebenen Empfänger.","operationId":"createQuoteFromCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Empfänger","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Contact"}}},"required":true},"responses":{"200":{"description":"Angebot wurde erfolgreich erstellt und verschickt","content":{}}},"x-operationName":"Angebot versenden","x-codegen-request-body-name":"recipient"}},"/carts/{cartIdentifier}/actions/share":{"post":{"tags":["Warenkorb","Angebote"],"summary":"Warenkorbvorlage erstellen","description":"Erstellt eine Vorlage aus einem Warenkorb. Vorlagen können nicht bearbeitet werden. Die Vorlage enthält keine Personenbezogenendaten.","operationId":"shareCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die erstellte Vorlage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}}},"x-operationName":"Warenkorbvorlage erstellen"}},"/carts/{cartIdentifier}/actions/recommend":{"post":{"tags":["Warenkorb","Angebote"],"summary":"Warenkorbvorlage für Account-Ausgliederung erstellen","description":"Erstellt eine Vorlage aus einem Warenkorb mit Account-Ausgliederung. Vorlagen können nicht bearbeitet werden. Die Vorlage enthält keine Personenbezogenendaten.","operationId":"recommendCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Notwendige Daten für die Empfehlung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recommendation"}}}}},"x-operationName":"Warenkorbvorlage für Account-Ausgliederung erstellen"}},"/carts/{cartIdentifier}/actions/recommendation/verify":{"post":{"tags":["Warenkorb","Angebote"],"summary":"Überprüfe PIN-Code von Empfehlung","description":"Überprüft den Pin-Code bei einer Empfehlung.","operationId":"verifyRecommendCart","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"title":"Formular-Body","type":"object","properties":{"pinCode":{"type":"number","description":"Der 6-stellige Pin-Code"},"sourceAccount":{"type":"string","description":"Name des Projektes"},"sourceReseller":{"type":"string","description":"Name des Resellers"}}}}},"required":true},"responses":{"200":{"description":"Notwendige Daten für die Empfehlung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"400":{"description":"Fehlende Parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"404":{"description":"Empfehlung nicht gefunden oder PIN-Inkorrekt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Überprüfe PIN-Code von Empfehlung","x-codegen-request-body-name":"payload"}},"/carts/{cartIdentifier}/actions/requestverification":{"post":{"tags":["Warenkorb"],"summary":"SMS-Verifizierung starten","description":"Fragt eine SMS-Verifizierung an. Der Empfänger erhält eine SMS mit einem Code.","operationId":"requestSMSVerification","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"title":"Verifizierungsanfrage","type":"object","properties":{"recipient":{"type":"string","description":"Die Mobilfunknummer des Empfängers"}}}}},"required":true},"responses":{"200":{"description":"Die SMS wurde erfolgreich verschickt.","content":{}}},"x-operationName":"SMS-Verifizierung starten","x-codegen-request-body-name":"recipient"}},"/carts/{cartIdentifier}/actions/verify":{"post":{"tags":["Warenkorb"],"summary":"SMS-Verifizierung bestätigen","description":"Bestätigt die SMS-Verifizierung.","operationId":"confirmSMSVerification","parameters":[{"name":"cartIdentifier","in":"path","description":"Warenkorb ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Der Verifizierungcode","content":{"*/*":{"schema":{"title":"Verifizierungscode","type":"object","properties":{"verificationCode":{"type":"string"}}}}},"required":true},"responses":{"200":{"description":"Die Verifizierung wurde erfolgreich abgeschlossen.","content":{}}},"x-operationName":"SMS-Verifizierung bestätigen","x-codegen-request-body-name":"code"}},"/domains/{domainIdentifier}/actions/check":{"post":{"tags":["Domains"],"summary":"Domainverfügbarkeit prüfen","description":"Prüft ob eine Domain verfügbar ist","operationId":"checkDomainAvailability","parameters":[{"name":"domainIdentifier","in":"path","description":"Domain","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die Domain ist verfügbar","content":{}},"410":{"description":"Die Domain ist nicht verfügbar","content":{}}},"x-operationName":"Domainverfügbarkeit prüfen"}},"/public/topleveldomains":{"get":{"tags":["Domains"],"summary":"Öffentliche Toplevel-Domains auslesen","description":"Liefert alle möglichen öffentlichen Topleveldomains aus","operationId":"listPublicToplevelDomains","security":[],"responses":{"200":{"description":"Liste der öffentlichen Topleveldomains","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicTopLevelDomain"}}}}}},"x-operationName":"Öffentliche Toplevel-Domains auslesen"}},"/topleveldomains":{"get":{"tags":["Domains"],"summary":"Toplevel-Domains auslesen","description":"Liefert alle möglichen Topleveldomains aus","operationId":"listToplevelDomains","responses":{"200":{"description":"Liste der Topleveldomains","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopLevelDomain"}}}}}},"x-operationName":"Toplevel-Domains auslesen"}},"/topleveldomains/{topLevelDomainIdentifier}":{"get":{"tags":["Domains"],"summary":"Toplevel-Domain auslesen","description":"Liefert eine Topleveldomain aus","operationId":"getToplevelDomain","parameters":[{"name":"topLevelDomainIdentifier","in":"path","description":"Topleveldomain","required":true,"schema":{"type":"string"}},{"name":"fields","in":"query","description":"Auszuliefernde Felder, als kommaseparierte Liste.\n","schema":{"type":"string"}}],"responses":{"200":{"description":"Die Topleveldomain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopLevelDomain"}}}}},"x-operationName":"Toplevel-Domain auslesen"}},"/promotioncodes/{promotionCode}":{"get":{"tags":["PromotionCode"],"summary":"Promotioncode auslesen","description":"Liefert PromotionCode-Details aus","operationId":"getPromotionCode","parameters":[{"name":"promotionCode","in":"path","description":"PromotionCode","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die PromotionCode-Details","content":{}}},"x-operationName":"Promotioncode auslesen"}},"/promotioncodes/{promotionCode}/actions/validate":{"post":{"tags":["PromotionCode"],"summary":"Promotioncode validieren","description":"Validiert einen Promotion-Code für eine Bestellung","operationId":"verifyPromotionCode","parameters":[{"name":"promotionCode","in":"path","description":"PromotionCode","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Die zu bestellenden Artikel und ob der Hauptartikel einen monatliche Abrechnungsperiode hat. Nur die Artikelnummer wird zwingend benötigt.","content":{"*/*":{"schema":{"title":"Promotioncode-Validierungsanfrage","type":"object","properties":{"articles":{"type":"array","items":{"$ref":"#/components/schemas/Article"}},"monthly":{"type":"boolean"}}}}},"required":true},"responses":{"200":{"description":"Der Code ist valide","content":{}},"400":{"description":"Der Code ist nicht valide","content":{}}},"x-operationName":"Promotioncode validieren","x-codegen-request-body-name":"data"}},"/virt/guestoperatingsystems":{"get":{"tags":["Virt"],"summary":"Root-Server Betriebssysteme","description":"Liefert die zur Installation vorhandenen Root-Server Betriebssysteme","operationId":"listGuestOperatingSystems","responses":{"200":{"description":"Liste der zur Installation vorhandenen Root-Server Betriebssysteme","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GuestOperatingSystem"}}}}},"x-operationName":"Root-Server Betriebssysteme"}},"/bankdata/actions/convert":{"post":{"tags":["Bankdaten"],"summary":"Konvertiert Bankdaten in das IBAN / BIC Format","description":"Liefert zu einer gegebenen Kontonummer und BLZ die entsprechende IBAN und BIC","operationId":"convertBankDataToSEPA","requestBody":{"description":"Die zu konvertierenden Bankdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankData"}}},"required":true},"responses":{"200":{"description":"Die Bankdaten im IBAN / BIC Format","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Die Bankdaten sind ungültig","content":{}}},"x-operationName":"Konvertiert Bankdaten in das IBAN / BIC Format","x-codegen-request-body-name":"Bankdaten"}},"/webhooks":{"get":{"tags":["Webhooks"],"summary":"Liefert alle hinterlegten Webhooks","description":"Liefert alle hinterlegten Webhooks eines bestimmten Logins","operationId":"listWebhooks","responses":{"200":{"description":"Eine Liste von Webhooks","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}}}},"x-operationName":"Liefert alle hinterlegten Webhooks"},"post":{"tags":["Webhooks"],"summary":"Registriert einen neuen Webhook","description":"Registriert einen neuen Webhook für einen bestimmten Login","operationId":"createWebhook","requestBody":{"description":"Die Webhook-Konfiguration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}},"required":true},"responses":{"200":{"description":"Der erstellte Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}}},"x-operationName":"Registriert einen neuen Webhook","x-codegen-request-body-name":"webhookRequest"}},"/webhooks/{webhookIdentifier}":{"get":{"tags":["Webhooks"],"summary":"Liefert einen bestimmten Webhook","description":"Liefert die Daten eines bestimmten Webhooks","operationId":"getWebhook","parameters":[{"name":"webhookIdentifier","in":"path","description":"Die ID des Webhooks","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der gewünschte Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Webhook gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Liefert einen bestimmten Webhook"},"put":{"tags":["Webhooks"],"summary":"Updated den gewünschten Webhook","description":"Updated die Daten des gewünschten Webhooks","operationId":"updateWebhook","parameters":[{"name":"webhookIdentifier","in":"path","description":"Die ID des Webhooks","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Die Webhook-Konfiguration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}},"required":true},"responses":{"200":{"description":"Der überarbeitete Webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Webhook gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Updated den gewünschten Webhook","x-codegen-request-body-name":"webhookRequest"},"delete":{"tags":["Webhooks"],"summary":"Löscht einen Webhook","description":"Löscht den gegebenen Webhook","operationId":"deleteWebhook","parameters":[{"name":"webhookIdentifier","in":"path","description":"Die ID des Webhooks","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Wenn der Webhook erfolgreich gelöscht wurde","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Webhook gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Löscht einen Webhook"}},"/cancellations":{"post":{"tags":["Kündigung","Verträge"],"summary":"Kündigung einleiten","description":"Leitet die Kündigung für einen bestimmten Tarif ein","operationId":"cancelContract","requestBody":{"description":"Die Kündigungsdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancellationRequest"}}},"required":true},"responses":{"204":{"description":"Kündigung erfolgreich eingeleitet","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Kündigung einleiten","x-codegen-request-body-name":"cancellationRequest"}},"/cancellations/{cancellationIdentifier}/actions/confirmationmail":{"post":{"tags":["Kündigung","Verträge"],"summary":"Kündigungsbestätigung erneut senden","description":"Löst eine erneute Versendung der Kündigungsbestätigung per E-Mail aus","operationId":"resendCancellationConfirmation","parameters":[{"name":"cancellationIdentifier","in":"path","description":"Die ID der bereits eingeleiteten Kündigung","required":true,"schema":{"type":"integer"}}],"responses":{"202":{"description":"Erneute Versendung erfolgreich beantragt","content":{}},"403":{"description":"Wenn kein Zugriff zu dieser Kündigung gewährt wird","content":{}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"Kündigungsbestätigung erneut senden"}},"/gdpr/pdfs":{"get":{"tags":["DSGVO-Verträge"],"summary":"PDF - Liefert die Daten der Vertrags-PDFs","description":"Liefert die Daten der vom Kunden manuell hochgeladenen Vertrags-PDFs","operationId":"getGDPRPDFs","responses":{"200":{"description":"Eine Liste von manuell hochgeladenen Vertrags-PDFs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GDPRPDF"}}}}}},"x-operationName":"PDF - Liefert die Daten der Vertrags-PDFs"},"post":{"tags":["DSGVO-Verträge"],"summary":"PDF - Vertrags-PDF hochladen","description":"Lädt einen eigens geschlossenen Vertrag hoch. Dabei werden nur PDF Dateien unterstützt","operationId":"uploadGDPRPDF","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadGDPRPDFRequest"}}},"required":true},"responses":{"201":{"description":"Vertrags-PDF erfolgreich hochgeladen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRPDF"}}}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"PDF - Vertrags-PDF hochladen","x-codegen-request-body-name":"uploadGDPRPDFRequest"}},"/gdpr/pdfs/{pdfIdentifier}":{"get":{"tags":["DSGVO-Verträge"],"summary":"PDF - Liefert ein bestimmtes Vertrags-PDF","description":"Liefert ein bestimmtes manuell hochgeladenes Vertrags-PDF des Kunden","operationId":"getGDPRPDF","parameters":[{"name":"pdfIdentifier","in":"path","description":"Die ID des Vertrags-PDFs","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Das gewünschte Vertrags-PDF","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRPDF"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"PDF - Liefert ein bestimmtes Vertrags-PDF"},"delete":{"tags":["DSGVO-Verträge"],"summary":"PDF - Löscht ein bestimmtes Vertrags-PDF","description":"Löscht ein bestimmtes manuell hochgeladenes Vertrags-PDF des Kunden","operationId":"deleteGDPRPDF","parameters":[{"name":"pdfIdentifier","in":"path","description":"Die ID des Vertrags-PDFs","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Wenn das Vertrags-PDF erfolgreich gelöscht wurde","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"PDF - Löscht ein bestimmtes Vertrags-PDF"}},"/gdpr/pdfs/{pdfIdentifier}/actions/download'":{"post":{"tags":["DSGVO-Verträge"],"summary":"PDF - Stellt ein Vertrags-PDF zum Download bereit","description":"Stellt ein manuell hochgeladenes Vertrags-PDF zum Download bereit","operationId":"downloadGDPRPDF","parameters":[{"name":"pdfIdentifier","in":"path","description":"Die ID des Vertrags-PDFs","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Das Vertrags-PDF","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrags-PDF gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"PDF - Stellt ein Vertrags-PDF zum Download bereit"}},"/gdpr/contract-presets":{"get":{"tags":["DSGVO-Verträge"],"summary":"Vertragskonfiguration - Liefert alle gespeicherten Vertrags-Konfigurationen","description":"Liefert alle gespeicherten Vertrags-Konfigurationen des Kunden","operationId":"getGDPRContractPresets","responses":{"200":{"description":"Eine Liste von Vertrags-Konfigurationen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GDPRContractPreset"}}}}}},"x-operationName":"Vertragskonfiguration - Liefert alle gespeicherten Vertrags-Konfigurationen"},"post":{"tags":["DSGVO-Verträge"],"summary":"Vertragskonfiguration - Speichert eine Vertrags-Konfiguration","description":"Speichert eine Vertrags-Konfiguration","operationId":"createGDPRContractPresets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContractPreset"}}},"required":true},"responses":{"201":{"description":"Vertrags-Konfiguration erfolgreich gespeichert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContractPreset"}}}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"Vertragskonfiguration - Speichert eine Vertrags-Konfiguration","x-codegen-request-body-name":"createGDPRContractPresetsRequest"}},"/gdpr/contract-presets/{contractPresetIdentifier}":{"get":{"tags":["DSGVO-Verträge"],"summary":"Vertragskonfiguration - Liefert eine bestimmte Vertrags-Konfiguration","description":"Liefert eine bestimmte Vertrags-Konfiguration des Kunden","operationId":"getGDPRContractPreset","parameters":[{"name":"contractPresetIdentifier","in":"path","description":"Die ID der Vertrags-Konfiguration","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Die gewünschte Vertrags-Konfiguration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContractPreset"}}}},"403":{"description":"Wenn kein Zugriff zu dieser Vertrags-Konfiguration gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertragskonfiguration - Liefert eine bestimmte Vertrags-Konfiguration"}},"/gdpr/contracts":{"get":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Liefert alle hinterlegten Verträge","description":"Liefert die Daten aller hinterlegten Verträge","operationId":"getGDPRContracts","responses":{"200":{"description":"Eine Liste von Verträgen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GDPRContract"}}}}}},"x-operationName":"Vertrag - Liefert alle hinterlegten Verträge"},"post":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Vertrag anlegen","description":"Legt einen Vertrag mit den angegebenen Daten an","operationId":"createGDPRContract","requestBody":{"description":"Die Vertragsdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGDPRContractRequest"}}},"required":true},"responses":{"201":{"description":"Vertrag erfolgreich angelegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContract"}}}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"Vertrag - Vertrag anlegen","x-codegen-request-body-name":"createGDPRContractRequest"}},"/gdpr/contracts/{contractIdentifier}":{"get":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Liefert einen bestimmten Vertrag","description":"Liefert die Daten eines bestimmten Vertrages","operationId":"getGDPRContract","parameters":[{"name":"contractIdentifier","in":"path","description":"Die ID des Vertrages","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der gewünschte Vertrag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContract"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertrag - Liefert einen bestimmten Vertrag"},"delete":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Löscht einen bestimmten Vertrag","description":"Löscht einen bestimmten Vertrag","operationId":"deleteGDPRContract","parameters":[{"name":"contractIdentifier","in":"path","description":"Die ID des Vertrages","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Wenn der Vertrag erfolgreich gelöscht wurde","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"409":{"description":"Wenn der Vertrag nicht mehr gelöscht werden kann, da er bereits abgeschlossen ist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertrag - Löscht einen bestimmten Vertrag"}},"/gdpr/contracts/{contractIdentifier}/actions/pdf'":{"post":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Liefert ein PDF zu einem bestimmten Vertrag","description":"Liefert das PDF des Inhalts eines bestimmten Vertrages","operationId":"createGDPRContractPDF","parameters":[{"name":"contractIdentifier","in":"path","description":"Die ID des Vertrages","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der Inhalt des gewünschten Vertrages als PDF","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertrag - Liefert ein PDF zu einem bestimmten Vertrag"}},"/gdpr/contracts/{contractIdentifier}/actions/mail'":{"post":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Verschickt eine E-Mail mit PDF an den Empfänger des Vertrags","description":"Verschickt eine E-Mail mit dem Vertrag in PDF-Form an den Empfänger des Vertrags. Die E-Mail enthält zudem einen Bestätigungslink, über den dem Vertrag digital zugestimmt werden kann.","operationId":"sendGDPRContractMail","parameters":[{"name":"contractIdentifier","in":"path","description":"Die ID des Vertrages","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"title":"sendMailForGDPRContractRequest","type":"object","properties":{"mailTo":{"type":"string","description":"Falls eine vom hinterlegten Kontakt abweichende Empfänger E-Mail Adresse angegeben werden soll"},"content":{"type":"string","description":"Falls ein spezifischer Inhalt anstelle des Standard E-Mail Inhalts versendet werden soll. Dabei kann mit Hilfe der Zeichenkette {{link}} der Bestätigungslink eingefügt werden."}}}}},"required":false},"responses":{"204":{"description":"Die E-Mail wurde verschickt","content":{}},"400":{"description":"Wenn der Vertrag bereits abgeschlossen ist","content":{}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertrag - Verschickt eine E-Mail mit PDF an den Empfänger des Vertrags","x-codegen-request-body-name":"contractMail"}},"/gdpr/contracts/{contractIdentifier}/actions/accept'":{"post":{"tags":["DSGVO-Verträge"],"summary":"Vertrag - Akzeptiert den Vertrag","description":"Akzeptiert den Vertrag und verschickt diesen bei Bedarf als PDF via E-Mail an beide Vertragspartner.","operationId":"acceptGDPRContract","parameters":[{"name":"contractIdentifier","in":"path","description":"Die ID des Vertrages","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"title":"acceptGDPRContractRequest","required":["contractSigner"],"type":"object","properties":{"email":{"type":"boolean","description":"Wahr, wenn der Vertrag zusätzlich an beide Vertragspartner versendet werden soll"},"contractSigner":{"type":"string","description":"Der vollständige Name des Vertragsunterzeichners"}}}}},"required":false},"responses":{"204":{"description":"Der Vertrag wurde akzeptiert und bei Bedarf versendet","content":{}},"400":{"description":"Wenn der Vertrag bereits akzeptiert wurde","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Vertrag - Akzeptiert den Vertrag","x-codegen-request-body-name":"acceptance"}},"/gdpr/contacts":{"get":{"tags":["DSGVO-Kontakte"],"summary":"Kontakt - Liefert alle hinterlegten Adressdaten","description":"Liefert die Daten aller hinterlegten Adressdaten","operationId":"getGDPRContacts","parameters":[{"name":"type","in":"query","description":"Filterung der Kontakte nach einem bestimmten Typ","schema":{"type":"string"}}],"responses":{"200":{"description":"Eine Liste von Adressdaten","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GDPRContact"}}}}}},"x-operationName":"Kontakt - Liefert alle hinterlegten Adressdaten"},"post":{"tags":["DSGVO-Kontakte"],"summary":"Kontakt - Adressdaten anlegen","description":"Legt einen Adressdatensatz mit den angegebenen Daten an","operationId":"createGDPRContact","requestBody":{"description":"Die Adressdaten","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContact"}}},"required":true},"responses":{"201":{"description":"Adressdatensatz erfolgreich angelegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContact"}}}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"Kontakt - Adressdaten anlegen","x-codegen-request-body-name":"createGDPRContactRequest"}},"/gdpr/contacts/{contactIdentifier}":{"get":{"tags":["DSGVO-Kontakte"],"summary":"Kontakt - Liefert einen bestimmten Adressdatensatz","description":"Liefert die Daten eines bestimmten Adressdatensatzes","operationId":"getGDPRContact","parameters":[{"name":"contactIdentifier","in":"path","description":"Die ID des Adressdatensatzes","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der gewünschte Adressdatensatz","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRContact"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Adressdatensatzes gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"Kontakt - Liefert einen bestimmten Adressdatensatz"}},"/gdpr/toms":{"get":{"tags":["DSGVO-TOMs"],"summary":"TOM - Liefert alle hinterlegten TOMs","description":"Liefert die Daten aller hinterlegten TOMs","operationId":"getGDPRToms","responses":{"200":{"description":"Eine Liste von TOMs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GDPRTom"}}}}}},"x-operationName":"TOM - Liefert alle hinterlegten TOMs"},"post":{"tags":["DSGVO-TOMs"],"summary":"TOM - TOM anlegen","description":"Legt einen TOM mit den angegebenen Daten an","operationId":"createGDPRTom","requestBody":{"description":"Die Daten des Toms","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRTom"}}},"required":true},"responses":{"201":{"description":"Tom erfolgreich angelegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRTom"}}}},"500":{"description":"Wenn es zu einem unbekannten Fehler gekommen ist","content":{}}},"x-operationName":"TOM - TOM anlegen","x-codegen-request-body-name":"createGDPRTomRequest"}},"/gdpr/toms/{tomIdentifier}":{"get":{"tags":["DSGVO-TOMs"],"summary":"TOM - Liefert einen bestimmten TOM","description":"Liefert die Daten eines bestimmten TOMs","operationId":"getGDPRTom","parameters":[{"name":"tomIdentifier","in":"path","description":"Die ID des TOMs","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Der gewünschte TOM","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GDPRTom"}}}},"403":{"description":"Wenn kein Zugriff zu diesem Vertrag gewährt wird","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}},"x-operationName":"TOM - Liefert einen bestimmten TOM"}},"/customers/{customerNumber}/tickets":{"get":{"tags":["Tickets"],"summary":"Support-Tickets auslesen","description":"Listet Support-Tickets eines Kunden auf","operationId":"listSupportTickets","parameters":[{"name":"customerNumber","in":"path","description":"Die Kundennummer","required":true,"schema":{"type":"number"}},{"name":"sortDirection","in":"query","description":"Die Sortierungsrichtung","schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"status","in":"query","description":"Der Ticketstatus","schema":{"type":"string","enum":["open","in-progress","feedback","information","answered","done"]}},{"name":"summaryOnly","in":"query","description":"Kurzfassung der Tickets ohne Antworten","schema":{"type":"boolean"}},{"name":"limit","in":"query","description":"Maximale Anzahl an Tickets","schema":{"type":"number"}}],"responses":{"200":{"description":"Array von allen Support-Tickets","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Ticket"}}}}}},"x-operationName":"Support-Tickets auslesen"}},"/tickets":{"post":{"tags":["Tickets"],"summary":"Neues Support-Ticket","description":"Erstellt ein neues Support-Ticket","operationId":"createSupportTicket","requestBody":{"description":"Das neue Support-Ticket","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketInput"}}},"required":true},"responses":{"201":{"description":"Das neu erstellte Ticket","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ticket"}}}}},"x-operationName":"Neues Support-Ticket","x-codegen-request-body-name":"ticket"}},"/tickets/{ticketIdentifier}":{"get":{"tags":["Tickets"],"summary":"Ticket auslesen","description":"Liefert das angeforderte Ticket mit Metainformationen zurück","operationId":"getSupportTicket","parameters":[{"name":"ticketIdentifier","in":"path","description":"Die Ticket-ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Angefragtes Ticket","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ticket"}}}}},"x-operationName":"Ticket auslesen"}},"/tickets/{ticketIdentifier}/answers":{"get":{"tags":["Tickets"],"summary":"Ticketantworten auslesen","description":"Liefert alle Antworten auf ein bestimmtes Support-Ticket zurück","operationId":"listSupportTicketAnswers","parameters":[{"name":"ticketIdentifier","in":"path","description":"Die Ticket-ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Array aller Antworten eines Support-Tickets","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TicketAnswer"}}}}}},"x-operationName":"Ticketantworten auslesen"},"post":{"tags":["Tickets"],"summary":"Ticketantwort erstellen","description":"Erstellt eine neue Antwort auf ein Support-Ticket","operationId":"answerSupportTicket","parameters":[{"name":"ticketIdentifier","in":"path","description":"Die Ticket-ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Die neue Antwort","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketAnswerInput"}}},"required":true},"responses":{"201":{"description":"Neue Ticket-Antwort erstellt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketAnswer"}}}}},"x-operationName":"Ticketantwort erstellen","x-codegen-request-body-name":"answer"}},"/tickets/{ticketIdentifier}/actions/close":{"post":{"tags":["Tickets"],"summary":"Ticket schließen","description":"Schließt das angegebene Ticket","operationId":"closeSupportTicket","parameters":[{"name":"ticketIdentifier","in":"path","description":"Die Ticket-ID","required":true,"schema":{"type":"string"}},{"name":"closedByCustomer","in":"query","description":"Ob das Ticket vom Kunden geschlossen wurde","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Das betroffene Ticket","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketAnswer"}}}}}}},"/ticket-categories":{"get":{"tags":["Tickets"],"summary":"Ticketkategorien auslesen","description":"Liefert alle auswählbaren Ticketkategorien","operationId":"listTicketCategories","responses":{"200":{"description":"Array aller Ticketkategorien","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TicketCategory"}}}}}},"x-operationName":"Ticketantworten auslesen"}},"/daemoncloud/allowed":{"get":{"tags":["Dateiupload"],"description":"Liefert die erlaubten Dateitypen für den Dateiupload","operationId":"getAllowedFileTypes","responses":{"200":{"description":"Objekt mit allen erlaubten Dateitypen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowedFileTypes"}}}}}}},"/daemoncloud/files":{"post":{"tags":["Dateiupload"],"description":"Lädt eine Datei hoch","operationId":"uploadFile","requestBody":{"description":"Die Datei die hochgeladen wird","content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"},"target":{"type":"object","properties":{"employees":{"type":"boolean"},"customers":{"type":"array","items":{"type":"string"}}}}}}}}},"responses":{"201":{"description":"Objekt mit allen nötigen Datei-Metainformationen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileMeta"}}}}}}},"/daemoncloud/files/{fileId}":{"get":{"tags":["Dateiupload"],"description":"Liefert die gewünschte Datei als Base64 String","operationId":"getFile","parameters":[{"name":"fileId","in":"path","description":"ID einer Datei","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Datei als Base64-String","content":{"text/plain":{"schema":{"type":"string","format":"base64"}}}}}},"delete":{"tags":["Dateiupload"],"description":"Löscht eine hochgeladene Datei","operationId":"deleteFile","parameters":[{"name":"fileId","in":"path","description":"ID einer Datei","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Deleted successfully"}}}},"/daemoncloud/files/{fileId}/details":{"get":{"tags":["Dateiupload"],"description":"Liefert Detailinformationen zu einer Datei","operationId":"getFileDetails","parameters":[{"name":"fileId","in":"path","description":"ID einer Datei","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Objekt mit allen nötigen Datei-Metainformationen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileMeta"}}}}}}},"/accounts/{accountIdentifier}/stats/visitors":{"get":{"tags":["Accounts"],"description":"Liefert Statistiken zu Besucherzahlen eines Projekts","operationId":"getAccountVisitorStatistics","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Objekt der Visitor-Statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisitorStatistics"}}}}}}},"/accounts/{accountIdentifier}/stats":{"get":{"tags":["Accounts"],"description":"Liefert Statistiken zur Speicherplatzauslastung eines Projekts","operationId":"getAccountStatistics","parameters":[{"name":"accountIdentifier","in":"path","description":"Name oder ID eines Accounts","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Objekt der Speicherplatzauslastung eines Projekts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorageStatistics"}}}}}}},"/phoneVerification/{customernumber}":{"get":{"tags":["Telefonverifizierung"],"description":"Liefert den Telefonverifizierungscode der Kundennummer und aktualisiert\ndiesen bei Bedarf\n","operationId":"getPhoneVerificationCode","parameters":[{"name":"customernumber","in":"path","description":"Kundennummer","required":true,"schema":{"type":"number"}}],"responses":{"200":{"description":"Objekt mit Telefonverifizierungscode","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationCode"}}}}}}},"/menu":{"get":{"operationId":"getNavigation","tags":["navigation"],"summary":"Menu generation","description":"Get the data for the menu of the customer login","parameters":[{"name":"forceMittwaldVersion","in":"query","description":"Skip whitelabeling even when the host is not login.mittwald.de","required":false,"schema":{"type":"boolean"}},{"name":"skipCache","in":"query","description":"Don't get any values from cache.","required":false,"schema":{"type":"boolean"}},{"name":"onlyRootLevel","in":"query","description":"Only render the first level of the menu. Performance boost, but have to load the childs manually later.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"The menu result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MainMenu"}}}},"500":{"description":"General error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/menuMeta":{"get":{"operationId":"getNavigationMeta","tags":["navigation"],"summary":"Get meta menu items","description":"Get the meta for the menu of the customer login","parameters":[{"name":"skipCache","in":"query","description":"Don't get any values from cache.","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"The menu result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MainMeta"}}}},"500":{"description":"General error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/search":{"get":{"operationId":"search","tags":["navigation"],"summary":"search for customer center menu","description":"search for accounts, reseller or domains","parameters":[{"name":"needle","in":"query","description":"search string","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The menu result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResult"}}}},"400":{"description":"Missing or malformed argument. Error message in reason phrase.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/accounts/{accountIdentifier}/domainOverview":{"get":{"operationId":"getDomainOverview","tags":["Domains"],"summary":"Get domain overview","description":"Get the data for the domain overview","parameters":[{"name":"accountIdentifier","in":"path","description":"Account name or uid.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of domain records for the domain overview","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DomainOverviewItem"}}}}},"500":{"description":"General error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/accounts/{accountIdentifier}/dns":{"get":{"operationId":"getDnsOverview","tags":["Domains"],"summary":"Get dns overview","description":"Get the data for the dns overview","parameters":[{"name":"accountIdentifier","in":"path","description":"Account name or uid.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of dns records for the dns overview","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DnsOverviewItem"}}}}},"500":{"description":"General error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/accounts/{accountIdentifier}/ip-addresses":{"get":{"operationId":"getAccountIpAddresses","tags":["Domains"],"summary":"IP Adressen des Accounts auslesen","description":"gibt die IP Adressen des Accounts zurück, die sich alls DNS Records\neignen\n","parameters":[{"name":"accountIdentifier","in":"path","description":"Account name oder uid.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Liste der verfügbaren IP-Adressen","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountIpAddress"}}}}},"500":{"description":"General error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/accounts/{accountIdentifier}/dns/{domainIdentifier}":{"put":{"summary":"Update DNS information for a domain","description":"Updates DNS records for all available types","tags":["Domains"],"operationId":"updateDnsRecords","parameters":[{"name":"accountIdentifier","description":"Name or UID of the account","in":"path","required":true,"schema":{"type":"string"}},{"name":"domainIdentifier","description":"Name of the domain or subdomain","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Update DNS records of a specific domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DNSRecordRequest"}}},"required":true},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DNSUpdateResponse"}}}},"400":{"description":"Validation exception","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DNSValidationErrorResponse"}}}}}}},"/flagging/flags/{flagId}":{"get":{"operationId":"getFlag","tags":["Kunden"],"summary":"Flags (z.B. DSGVO)","description":"Flags (z.B. DSGVO)","parameters":[{"name":"flagId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"DSGVO","content":{"application/json":{"schema":{"type":"object","properties":{"signed":{"type":"string"}}}}}}}}},"/accounts/{account}/actions/change-password":{"post":{"operationId":"changeAccountPassword","tags":["Password"],"summary":"Change account password","parameters":[{"name":"account","in":"path","description":"A account ID or name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeRequest"}}},"required":true},"responses":{"201":{"description":"Password changed"},"400":{"description":"Invalid password requirements.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"When the user is not authorized to access this resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"500":{"description":"Any error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/customers/{customerNumber}/actions/change-password":{"post":{"operationId":"changeCustomerPassword","tags":["Password"],"summary":"Change customer password","parameters":[{"name":"customerNumber","in":"path","description":"Customer number","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChangeRequest"}}},"required":true},"responses":{"201":{"description":"Password changed"},"400":{"description":"Invalid password requirements.","content":{"application/json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"string"}}}}}}},"403":{"description":"When the user is not authorized to access this resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"500":{"description":"Any error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}}}}},"/mfa/actions/init":{"post":{"tags":["mfa"],"summary":"Initiate a new MFA action","description":"This resource can be used to initiate a new MFA action. The resulting\ntoken can be used to verify the MFA action.\n","operationId":"initMfaAction","parameters":[{"name":"X-JWT","in":"header","description":"Can be used to authenticate an already existing user. If set, must\ncontain a token issued by this very service.\n","schema":{"type":"string"}}],"requestBody":{"description":"The MFA action request","required":false,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"The process of activating Multi Factor Authentication is\ninitialized. Now you have to confirm it\n","content":{"application/json":{"schema":{"type":"object","required":["barcode","url"],"properties":{"barcode":{"type":"string","description":"base64 encoded barcode content to scan from your mfa app.\ne.g. `iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAAAAADYoy...`.\nYou\\ncan display it with `<img\nsrc=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUh..\\\" />`\\n\n"},"url":{"type":"string","description":"Same as barcode,  but in URL form.\\n,","example":"otpauth://totp/mStudio:test@gmail.com?algorithm=SHA1&digits=6&issuer=mStudio&period=30&secret=HTXT7KJFVNAJUPYWQRWMNVQE5AF5YZI2"}}}}}}}}},"/mfa/actions/confirm":{"post":{"tags":["mfa"],"summary":"Confirm your new multi factor.","operationId":"confirmMfa","description":"This action returns recovery codes you can use to authenticate\nonce.\\nKeep track of them carefully. Don not lose them.\\n\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["multiFactorCode"],"properties":{"multiFactorCode":{"type":"string","maxLength":16,"minLength":6,"description":"Multi Factor Code to confirm MFA.","example":123456}}}}}},"responses":{"200":{"description":"Mfa is now activated. You can not login without your mfa again.\\n","content":{"application/json":{"schema":{"type":"object","required":["recoveryCodesList"],"properties":{"recoveryCodesList":{"type":"array","maxItems":20,"minItems":20,"description":"A recovery code may only be used once. They can be used if\nyou lose access to your mfa device.\\n\n","items":{"type":"string","minLength":16,"maxLength":16,"example":1234123412341234}}}}}}},"400":{"description":"Some of the specified values does not meet our\nrequirements.\\nPossible domain specific `type` values are:\\n  *\nEmailAddressNotVerified\\n  * MfaNotInitialized\\n  *\nMfaAlreadyConfirmed\\n\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}}}}},"/mfa":{"get":{"tags":["mfa"],"summary":"Get your current multi factor auth status.","operationId":"getMfaStatus","responses":{"200":{"description":"Multi factor auth status,","content":{"application/json":{"schema":{"type":"object","required":["initialized","confirmed"],"properties":{"initialized":{"type":"boolean"},"confirmed":{"type":"boolean"}}}}}}}},"put":{"tags":["mfa"],"summary":"Reset the recovery codes for your multi factor authentication.","operationId":"resetRecoveryCodes","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["multiFactorCode"],"properties":{"multiFactorCode":{"type":"string","description":"Multi Factor Code to authorize your request.","minLength":6,"maxLength":16,"example":123456}}}}}},"responses":{"200":{"description":"The old recovery codes have been deactivated and new ones have been\ngenerated.\n","content":{"application/json":{"schema":{"type":"object","required":["recoveryCodesList"],"properties":{"recoveryCodesList":{"type":"array","maxItems":20,"minItems":20,"items":{"type":"string","minLength":16,"maxLength":16,"example":1234123412341234}}}}}}},"400":{"description":"Some of the specified values does not meet our\nrequirements.\\nPossible domain specific `type` values are:\\n  *\nMultiFactorCodeNotValid\\n  * MfaNotInitialized\\n\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}}}},"delete":{"tags":["mfa"],"summary":"Disable Multi Factor Authentication.","operationId":"deleteMfa","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["multiFactorCode"],"properties":{"multiFactorCode":{"type":"string","maxLength":16,"minLength":6,"description":"Multi Factor Code to confirm MFA."}}}}}},"responses":{"204":{"description":"Multi Factor Authentication was disabled."},"400":{"description":"Some of the specified values does not meet our\nrequirements.\\nPossible domain specific `type` values are:\\n  *\nMultiFactorCodeNotValid\\n\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}}}}},"/mfa/secret":{"get":{"tags":["mfa"],"summary":"Get your current multi factor auth secret.","operationId":"getMfaSecret","parameters":[{"in":"query","name":"multiFactorCode","schema":{"type":"string","maxLength":16,"minLength":6,"description":"Multi Factor Code to confirm MFA."}}],"responses":{"200":{"description":"Multi factor auth secret","content":{"application/json":{"schema":{"type":"object","required":["barcode","url"],"properties":{"barcode":{"type":"string","description":"base64 encoded barcode content to scan from your mfa app.\ne.g. `iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAAAAADYoy...`.\nYou\\ncan display it with `<img\nsrc=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUh..\\\" />`\\n\n"},"url":{"type":"string","description":"Same as barcode,  but in URL form.\\n","example":"otpauth://totp/mStudio:test@gmail.com?algorithm=SHA1&digits=6&issuer=mStudio&period=30&secret=HTXT7KJFVNAJUPYWQRWMNVQE5AF5YZI2"}}}}}}}}},"/verify":{"post":{"tags":["Authentifizierung"],"summary":"Verify an existing authentication token","description":"This resource can be used to verify an existing JWT. This resource is\njust for convenience; clients can also use the `/key` resource to obtain\nthis service's public key and verify the token's signature theirselves.\n","operationId":"verifyToken","requestBody":{"description":"The JWT to verify","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EncodedJwt"}}},"required":true},"responses":{"200":{"description":"Token is valid","content":{}},"400":{"description":"Unreadable token","content":{}},"403":{"description":"Unverifiable token","content":{}}},"x-codegen-request-body-name":"body"}},"/sign":{"post":{"tags":["admin"],"summary":"Creates a new service token","description":"This operation can be used to sign a new service token. Note that this\nendpoint can *only* be used to create `pri/svc/` users (that means\nservice users, not regular users!) and `include` privileges may *only*\ncontain `pri/cap/` privileges.\n","operationId":"signToken","parameters":[{"name":"X-JWT","in":"header","description":"The authentication header of an already existing user. *Must*\ncontain a JWT signed by this service for any member of the Mittwald\nsecurity team.\n","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"The JWT claims to sign","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwt"}}},"required":true},"responses":{"200":{"description":"Token was signed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwt"}},"application/jwt":{"schema":{"$ref":"#/components/schemas/Jwt"}}}}},"x-codegen-request-body-name":"claims"}},"/key":{"get":{"tags":["verification"],"summary":"Gets key for token verification","description":"This resource contains a RSA public key that can be used to verify\ntokens issued by this service.\n","operationId":"getPublicKey","responses":{"200":{"description":"The public key as PEM file","content":{"application/x-pem-file":{"schema":{"$ref":"#/components/schemas/PublicKey"}}}}}}},"/customers/{customerNumber}/is-show-feedback":{"get":{"tags":["Feedback"],"summary":"Gets the show feedback status","operationId":"getIsShowFeedback","parameters":[{"name":"customerNumber","in":"path","description":"Customer number","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Object with the show feedback status","content":{"application/json":{"schema":{"type":"object","required":["isShowFeedback","isNotNow"],"properties":{"isShowFeedback":{"type":"boolean"},"isNotNow":{"type":"boolean"}}}}}},"403":{"description":"You have no access to this customer number.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Customer number does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"500":{"description":"An internal error occuured, please try again later.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/customers/{customerNumber}/feedback":{"post":{"tags":["Feedback"],"summary":"Create feedback","operationId":"createFeedback","parameters":[{"name":"customerNumber","in":"path","description":"Customer number","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Feedback data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeedback"}}},"required":true},"responses":{"201":{"description":"Feedback created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"400":{"description":"Your request is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"403":{"description":"You have no access to this customer number.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Customer number does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"Your request contains unprocessable entities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"425":{"description":"We received enough feedback, thank you.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"500":{"description":"An internal error occuured, please try again later.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/accounts/{accountIdentifier}/blocked-bots":{"get":{"tags":["Accounts"],"summary":"List blocked bots belonging to an Account.","operationId":"accountListBlockedBots","parameters":[{"name":"accountIdentifier","in":"path","description":"ID of the Account to list blocked bots for.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["blockedBots","isManaged"],"properties":{"blockedBots":{"$ref":"#/components/schemas/BlockedBots"},"isManaged":{"type":"boolean"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"tags":["Accounts"],"summary":"Set blocked bots belonging to an Account.","operationId":"accountSetBlockedBots","parameters":[{"name":"accountIdentifier","in":"path","description":"ID of the Account to list blocked bots for.","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Blocked Bot List","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetBlockedBots"}}},"required":true},"responses":{"204":{"description":"NoContent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"403":{"description":"AccessDenied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"NotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"422":{"description":"UnprocessableEntity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"429":{"description":"TooManyReqeusts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account-default-blocked-bots":{"get":{"tags":["Accounts"],"summary":"List default blocked bots.","operationId":"accountListDefaultBlockedBots","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["defaultBlockedBots"],"properties":{"defaultBlockedBots":{"$ref":"#/components/schemas/BlockedBots"}}}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/accounts/{accountIdentifier}/actions/set-blocked-bots-managed":{"post":{"tags":["Accounts"],"summary":"Set blocked bots to managed for account.","operationId":"accountSetBlockedBotsManaged","parameters":[{"name":"accountIdentifier","in":"path","description":"ID of the Account to set blocked bots for.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NoContent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Message"}}}},"403":{"description":"AccessDenied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"InternalServerError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"DNSValidationErrorResponse":{"type":"object","required":["message"],"properties":{"field":{"type":"string"},"message":{"type":"string","description":"Error message"},"validationErrors":{"type":"array","description":"List of validation errors","items":{"type":"object","properties":{"context":{"type":"object","properties":{"name":{"type":"string"}}},"message":{"type":"string"},"path":{"type":"string"}}}}}},"Account":{"title":"Account","required":["description"],"type":"object","properties":{"uid":{"type":"integer","readOnly":true},"customerNumber":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true},"activateShell":{"type":"boolean","readOnly":true},"description":{"type":"string"},"disabled":{"type":"boolean","readOnly":true},"ipAddresses":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/IpAddress"}},"status":{"type":"string","readOnly":true,"enum":["creating","updating","deleting","ready"]}}},"AllowedFileTypes":{"title":"AllowedFileTypes","required":["mimetypes","extensions"],"type":"object","properties":{"mimetypes":{"type":"array","items":{"type":"string"}},"extensions":{"type":"array","items":{"type":"string"}}}},"ApplicationToken":{"title":"ApplicationToken","required":["crdate","uuid"],"type":"object","properties":{"uuid":{"type":"string","description":"Die \"ID\" des Tokens. Diese ist bei späteren Authentifizierungsvorgängen als Nutzername zu verwenden.\n","format":"uuid"},"crdate":{"type":"string","description":"Das Erstelldatum als ISO 8601-Zeitstempel.\n","format":"date-time"},"description":{"type":"string","description":"Der frei wählbare Beschreibungstext des Tokens, der zuvor vom Benutzer vorgegeben wurde.\n"}}},"ApplicationTokenInput":{"title":"ApplicationTokenInput","required":["description"],"type":"object","properties":{"description":{"type":"string"}}},"ApplicationTokenResponse":{"title":"ApplicationTokenResponse","required":["crdate","token","uuid"],"type":"object","properties":{"uuid":{"type":"string","description":"Die \"ID\" des Tokens. Diese ist bei späteren Authentifizierungsvorgängen als Nutzername zu verwenden.\n","format":"uuid"},"crdate":{"type":"string","description":"Das Erstelldatum als ISO 8601-Zeitstempel.\n","format":"date-time"},"token":{"type":"string","description":"Der \"geheime\" Teil des Tokens. Dieser ist bei späteren Authentifzierungsvorgängen als Passwort zu benutzen; außer in der initialen Antwort nach Erstellen des Tokens ist kein lesender Zugriff mehr auf diesen Wert möglich.\n","format":"password"},"description":{"type":"string","description":"Der frei wählbare Beschreibungstext des Tokens, der zuvor vom Benutzer vorgegeben wurde.\n"}}},"Token":{"title":"Token","type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"Article":{"title":"Article","type":"object","properties":{"articleNumber":{"type":"integer"},"isOrderable":{"type":"boolean","readOnly":true},"price":{"type":"object","properties":{"default":{"type":"object","properties":{"net":{"type":"number"},"currency":{"type":"string"},"setupFee":{"type":"number"},"vat":{"type":"number"}}}},"readOnly":true},"description":{"type":"object","properties":{"title":{"type":"string"},"text":{"type":"string"}},"readOnly":true},"contract":{"type":"object","properties":{"contractDuration":{"type":"integer"},"unit":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"readOnly":true},"billing":{"type":"object","properties":{"billingPeriod":{"type":"integer"},"allowDurationModification":{"type":"boolean"},"unit":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}}},"readOnly":true},"commission":{"type":"object","properties":{"default":{"type":"object","properties":{"net":{"type":"number"},"currency":{"type":"string"},"setupFee":{"type":"number"},"vat":{"type":"number"}}}},"readOnly":true},"articleGroups":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/ArticleGroup"}},"benefits":{"type":"object","properties":{"server":{"type":"object","properties":{"hardware":{"type":"object","properties":{"maxWebspace":{"type":"integer"},"vCpuCores":{"type":"integer"},"vCpuUnits":{"type":"integer"},"vMaxMemory":{"type":"integer"},"vMaxTraffic":{"type":"integer"},"memoryLimit":{"type":"integer"},"maxExecutionTime":{"type":"integer"}}},"backup":{"type":"object","properties":{"backupRange":{"type":"integer"}}},"cronJob":{"type":"object","properties":{"max":{"type":"integer"},"minInterval":{"type":"integer"},"customInterval":{"type":"boolean"}}},"ssl":{"type":"object","properties":{"inclusive":{"type":"integer"}}},"ip":{"type":"object","properties":{"inclusive":{"type":"integer"}}},"ftpUser":{"type":"object","properties":{"max":{"type":"integer"}}},"ssh":{"type":"object","properties":{"active":{"type":"boolean"}}}}},"domain":{"type":"object","properties":{"active":{"type":"boolean"},"inclusive":{"type":"integer"},"max":{"type":"integer"}}},"subdomain":{"type":"object","properties":{"max":{"type":"integer"}}},"mailAddress":{"type":"object","properties":{"max":{"type":"integer"},"maxAutoResponder":{"type":"integer"}}},"mailBox":{"type":"object","properties":{"max":{"type":"integer"},"maxSize":{"type":"integer"},"spamDefender":{"type":"object","properties":{"key":{"type":"integer"}}}}},"database":{"type":"object","properties":{"mysql":{"type":"object","properties":{"max":{"type":"integer"},"externalAccess":{"type":"boolean"}}}}},"webFtp":{"type":"object","properties":{"active":{"type":"boolean"}}},"webMail":{"type":"object","properties":{"active":{"type":"boolean"}}},"dnsEditor":{"type":"object","properties":{"active":{"type":"boolean"},"editorA":{"type":"boolean"},"editorCNAME":{"type":"boolean"},"editorMX":{"type":"boolean"},"editorSRV":{"type":"boolean"},"editorTXT":{"type":"boolean"}}},"firewallPlus":{"type":"object","properties":{"active":{"type":"boolean"}}},"monitoringPlus":{"type":"object","properties":{"active":{"type":"boolean"}}},"designSwitcher":{"type":"object","properties":{"active":{"type":"boolean"}}},"versionManager":{"type":"object","properties":{"active":{"type":"boolean"}}},"template":{"type":"object","properties":{"max":{"type":"integer"}}},"snapshot":{"type":"object","properties":{"max":{"type":"integer"}}}},"readOnly":true},"configurationData":{"type":"object","properties":{"limits":{"type":"object","properties":{"max_cores":{"type":"integer"},"max_documents":{"type":"integer"},"memory":{"type":"integer"}}}},"readOnly":true},"articleOptions":{"type":"object","properties":{"mainCategory":{"type":"object","properties":{"subCategory":{"type":"array","items":{"$ref":"#/components/schemas/ArticleOption"}}}}},"readOnly":true},"crossSellingArticles":{"type":"array","readOnly":true,"items":{"$ref":"#/components/schemas/CrossSellingOption"}}}},"ArticleGroup":{"title":"ArticleGroup","type":"object","properties":{"href":{"type":"string"},"title":{"type":"string"}}},"ArticleOption":{"title":"ArticleOption","type":"object","properties":{"default":{"type":"boolean"},"price":{"type":"object","properties":{"default":{"type":"object","properties":{"net":{"type":"number"},"currency":{"type":"string"},"setupFee":{"type":"number"},"vat":{"type":"number"}}}}},"article":{"$ref":"#/components/schemas/Article"}}},"ArticleUpgradeOption":{"title":"ArticleUpgradeOption","type":"object","properties":{"targetArticleNumber":{"type":"number"},"toolboxProRequired":{"type":"boolean"},"description":{"type":"string"}}},"AuthenticationIncompleteResponse":{"title":"AuthenticationIncompleteResponse","type":"object","required":["name","deviceId"],"properties":{"name":{"type":"string","enum":["TOTP","DeviceCookie"]},"deviceId":{"type":"string"}}},"AuthenticationResponse":{"title":"AuthenticationResponse","required":["expires","token"],"type":"object","properties":{"token":{"type":"string","description":"Das API-Token","readOnly":true},"expires":{"type":"string","description":"Ablaufzeitpunkt des Tokens","format":"datetime","readOnly":true}}},"BankData":{"title":"BankData","type":"object","properties":{"bankAccountNumber":{"type":"string","description":"Die zu konvertierende Kontonummer"},"bankCode":{"type":"string","description":"Die zu konvertierende BLZ"}}},"Benefit":{"title":"Benefit","type":"object","properties":{"benefit":{"type":"object","properties":{"identifier":{"type":"string"},"uid":{"type":"integer"}}},"exceedance":{"type":"integer"},"uid":{"type":"integer"},"usage":{"type":"integer"},"value":{"type":"integer"}}},"Billing":{"title":"Billing","type":"object","properties":{"vatRegNumber":{"type":"string"}}},"Cancellation":{"title":"Cancellation","type":"object","properties":{"uid":{"type":"integer"},"status":{"type":"string"},"creationDate":{"type":"integer"},"cancellationDate":{"type":"string"}}},"CancellationRequest":{"title":"CancellationRequest","required":["contract"],"type":"object","properties":{"contract":{"type":"integer"},"domains":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string"},"transfer":{"type":"boolean"},"transit":{"type":"boolean"},"cancellationDate":{"type":"integer"}}}},"message":{"type":"string","description":"Eine persönliche Nachricht zur Kündigung"},"call":{"type":"boolean","description":"Wahr, wenn der Kunde noch einmal angerufen werden möchte"},"reason":{"type":"integer","description":"ID des Kündigungsgrundes"}}},"Cart":{"title":"Cart","type":"object","properties":{"_id":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Article"}},"jwt":{"type":"string","description":"Set a new jwt for this cart."},"promotionCode":{"type":"string"},"newsletter":{"type":"boolean"},"offer":{"type":"number"},"software":{"type":"string","description":"The software to install for the order."},"os":{"type":"string","description":"The operating system to install for the order."},"note":{"type":"string","description":"Store a customer note for the order."},"mysqlVersion":{"type":"string","description":"The MySQL-Version to use for the order."},"databasePartitionPercentage":{"type":"number","description":"The database partition ratio. Must be between 20 & 80 %."},"sourceAccount":{"type":"string","description":"Only for upgrades/extract: The UID or name of the source account."},"sourceReseller":{"type":"string","description":"Only for upgrades/extract: The UID or name of the source reseller."},"agencyServer":{"type":"number","description":"The UID of the target agency server."},"stayOnHardware":{"type":"boolean","description":"Keep your existing hardware"},"testing":{"type":"boolean","description":"Is order an testaccount?"},"billingPeriod":{"type":"number","description":"Billing period for main order item"},"customerBillingPeriod":{"type":"number","description":"Billing period for whole customer"},"commission":{"type":"string","description":"The code from the partnerprogram"},"isCommissionLocked":{"type":"boolean","description":"If enabled, nobody can remove/change the commission code. Default=false"},"dueDate":{"type":"number","description":"Unix timestamp of the due date of the order (wish order execution date)."},"projectName":{"type":"string","description":"Your description for the account."},"projectPassword":{"type":"string","description":"Your password for the account. Will be encrypted after setting this value."},"contractPartner":{"$ref":"#/components/schemas/Contact"},"contactPerson":{"$ref":"#/components/schemas/Contact"},"billingAddress":{"$ref":"#/components/schemas/Contact"},"paymentSettings":{"$ref":"#/components/schemas/PaymentSettings"}}},"CartItem":{"title":"CartItem","required":["_id","identifier","itemType"],"type":"object","properties":{"_id":{"type":"string","readOnly":true},"itemType":{"type":"string","readOnly":true},"identifier":{"type":"string"}}},"CartItemInput":{"title":"CartItemInput","required":["identifier"],"type":"object","properties":{"identifier":{"type":"string"},"sourceIdentifier":{"type":"string"}}},"Certificate":{"type":"object","required":["uid","commonName","article"],"properties":{"uid":{"type":"integer"},"commonName":{"type":"string"},"stage":{"$ref":"#/components/schemas/CertificateStage"},"statusCode":{"$ref":"#/components/schemas/CertificateStatusCode"},"statusDescription":{"type":"string"},"expireDate":{"type":"integer"},"approverEmail":{"type":"string"},"article":{"$ref":"#/components/schemas/Article"},"upgradeToArticle":{"type":"object","properties":{"articleNumber":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}}}}},"CertificateStage":{"type":"string","enum":["NEW","RENEW","UPGRADE","ACTIVE","EXPIRED","CANCEL","CANCEL_FORCE","DELETED"]},"CertificateStatusCode":{"type":"string","enum":["PENDING","COMPLETE","FAILED","DELETED","AUTO_RENEW","FE_UPGRADE","UPGRADE","FE_RENEW","REISSUE","NEW","INIT_SUCCESS","INIT_RENEW","INIT_REISSUE","INIT_NEW","INIT_CANCEL","INIT_BILLING","INIT_UPGRADE","WF_CUSTOMER_CERTIFICATE","IP_SETUP","WF_EXTENDED_EXPIREDATE","WF_LOADBALANCER_UPDATE","WF_VHOST_UPDATE","WF_DNS_UPDATE","WF_IP_NO_LONGER_USED","RESEND_APPROVER_MAIL"]},"Contact":{"title":"Contact","required":["city","country","emailAddress","firstName","houseNumber","zip","lastName","salutation","street"],"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"title":{"minLength":1,"type":"string"},"salutation":{"type":"string","enum":["Herr","Frau","Divers"]},"street":{"minLength":1,"type":"string"},"houseNumber":{"minLength":1,"type":"string"},"zip":{"type":"string","minLength":1},"city":{"minLength":1,"type":"string"},"company":{"type":"string"},"emailAddress":{"type":"string","format":"email"},"country":{"maxLength":2,"minLength":2,"type":"string","description":"iso country short code (ISO 3166-1 alpha-2)"},"fax":{"type":"string"}}},"ContactUpdateRequest":{"title":"ContactUpdateRequest","allOf":[{"$ref":"#/components/schemas/UpdateContact"}]},"ContactWithPhone":{"title":"ContactWithPhone","allOf":[{"$ref":"#/components/schemas/Contact"},{"required":["phone"],"type":"object","properties":{"phone":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"}}}]},"Contract":{"title":"Contract","type":"object","properties":{"title":{"type":"string"},"startDate":{"type":"string","format":"datetime"},"contractDuration":{"type":"string"}}},"Country":{"title":"Country","required":["euMember","isoLong","isoShort","name"],"type":"object","properties":{"isoShort":{"type":"string","description":"2-Zeichen-ISO-Name des Landes (z.B. `DE`)"},"isoLong":{"type":"string","description":"Langer ISO-Name des Landes (z.B. `DEU`)","readOnly":true},"euMember":{"type":"boolean","description":"`true` wenn dieses Land EU-Mitglied ist","readOnly":true},"name":{"required":["de","en"],"type":"object","properties":{"de":{"type":"string","description":"Deutscher Name","readOnly":true},"en":{"type":"string","description":"Englischer Name","readOnly":true}},"readOnly":true}}},"CreateCustomerRequest":{"title":"CreateCustomerRequest","required":["contractPartner"],"type":"object","properties":{"contractPartner":{"$ref":"#/components/schemas/ContactWithPhone"},"contactPerson":{"$ref":"#/components/schemas/OptionalContactWithPhone"},"billingAddress":{"$ref":"#/components/schemas/OptionalContactWithTaxID"},"paymentSettings":{"$ref":"#/components/schemas/PaymentSettings"}}},"CreateCustomerResponse":{"title":"CreateCustomerResponse","required":["customerNumber","password"],"type":"object","properties":{"customerNumber":{"type":"string"},"password":{"type":"string"}}},"CreateGDPRContractRequest":{"title":"CreateGDPRContractRequest","required":["client","html","recipient","tom"],"type":"object","properties":{"html":{"type":"string"},"tom":{"type":"string","description":"Die ID des verwendeten TOMs"},"client":{"type":"string","description":"Der Auftraggeber des Vertrags in Form einer ID eines bereits angelegten DSGVO Adressdatensatzes"},"recipient":{"type":"string","description":"Der Auftragnehmer des Vertrags in Form einer ID eines bereits angelegten DSGVO Adressdatensatzes"},"isPartnerContract":{"type":"boolean","default":false}}},"CrossSellingOption":{"title":"CrossSellingOption","type":"object","properties":{"href":{"type":"string"},"articleNumber":{"type":"integer"},"sorting":{"type":"integer"}}},"Customer":{"title":"Customer","required":["customerNumber","prospect"],"type":"object","properties":{"customerNumber":{"type":"number","description":"Die Kundennummer des Kunden"},"prospect":{"type":"boolean","description":"Wahr, wenn der Kunde als Interessent hinterlegt ist"}}},"CustomerAccount":{"title":"CustomerAccount","type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"article":{"$ref":"#/components/schemas/Article"},"contracts":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}}}},"CustomerAddress":{"title":"CustomerAddress","required":["city","country","houseNumber","street","zip"],"type":"object","properties":{"street":{"type":"string","description":"Straße"},"houseNumber":{"type":"string","description":"Hausnummer"},"zip":{"type":"string","description":"PLZ"},"city":{"type":"string","description":"Stadt"},"country":{"$ref":"#/components/schemas/Country"}}},"CustomerBillingSettings":{"title":"CustomerBillingSettings","required":["postalInvoices"],"type":"object","properties":{"vatID":{"type":"string"},"postalInvoices":{"type":"boolean"}}},"CustomerContactData":{"title":"CustomerContactData","required":["email","telephone"],"type":"object","properties":{"telephone":{"type":"string"},"fax":{"type":"string"},"email":{"type":"string","format":"email"}}},"CustomerContract":{"title":"CustomerContract","type":"object","properties":{"uid":{"type":"integer"},"article":{"$ref":"#/components/schemas/Article"},"title":{"type":"string"},"text":{"type":"string"},"sourceUid":{"type":"integer"},"sourceType":{"type":"string"},"creationDate":{"type":"integer"},"nextPeriodDate":{"type":"integer"},"billingPeriod":{"type":"integer"},"cancellation":{"$ref":"#/components/schemas/Cancellation"},"account":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"additionalArticles":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}}}},"CustomerPartner":{"title":"CustomerPartner","required":["address","contact","firstName","lastName","salutation"],"type":"object","properties":{"firstName":{"type":"string","description":"Vorname"},"lastName":{"type":"string","description":"Nachname"},"title":{"type":"string","description":"(Akademischer) grad"},"salutation":{"type":"string","description":"Grußformel, z.B. *Herr* oder *Frau*"},"company":{"type":"string","description":"Firmenname, oder `null`"},"address":{"$ref":"#/components/schemas/CustomerAddress"},"contact":{"$ref":"#/components/schemas/CustomerContactData"}}},"CustomerPaymentSettings":{"title":"CustomerPaymentSettings","type":"object"},"DatabaseType":{"title":"DatabaseType","type":"object","properties":{"uid":{"type":"integer"},"type":{"type":"string"},"default":{"type":"boolean"}}},"Domain":{"title":"Domain","type":"object","required":["name","fullname","tld"],"properties":{"name":{"type":"string"},"fullname":{"type":"string"},"registryStatus":{"type":"string"},"tld":{"type":"string"}}},"DomainAuthCode":{"title":"DomainAuthCode","type":"object","properties":{"auth-code":{"type":"string"}}},"DomainDeletionRequest":{"title":"DomainDeletionRequest","type":"object","properties":{"transfer":{"type":"boolean","description":"Domain zum Providerwechsel freigeben"},"transit":{"type":"boolean","description":"Denic transit nutzen (nur für .de Domains)"},"cancellationDate":{"type":"number","description":"UNIX-Timestamp des Kündigungsdatums"}}},"DomainItem":{"title":"DomainItem","required":["_id","itemType","name","transfer"],"type":"object","properties":{"_id":{"type":"string","readOnly":true},"itemType":{"type":"string","readOnly":true},"name":{"type":"string"},"authCode":{"type":"string"},"transfer":{"type":"boolean"}}},"DomainItemInput":{"title":"DomainItemInput","required":["name"],"type":"object","properties":{"name":{"type":"string"},"authCode":{"type":"string"},"transfer":{"type":"boolean"}}},"DomainNameTransfer":{"title":"DomainNameTransfer","type":"object","properties":{"authcode":{"type":"string"},"authInfoProcedure":{"type":"integer","description":"1 für das AuthInfo1 Verfahren oder 2 für das AuthInfo2 Verfahren"}}},"DomainProxy":{"title":"DomainProxy","type":"object","properties":{"uid":{"type":"integer"},"domain":{"type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"subDomain":{"type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"sourceAccount":{"type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"destinationAccount":{"type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"expireDate":{"type":"object","properties":{"date":{"type":"string"},"timezone_type":{"type":"integer"},"timezone":{"type":"string"}}}}},"DomainRegistration":{"title":"DomainRegistration","required":["sld","tld"],"type":"object","properties":{"handles":{"$ref":"#/components/schemas/Handles"},"sld":{"type":"string"},"tld":{"type":"string"},"domainNameTransfer":{"$ref":"#/components/schemas/DomainNameTransfer"},"external":{"type":"boolean","description":"Gesetzt, wenn es sich um einen Virtual Host Eintrag handeln soll"},"target":{"type":"string","description":"Bei Virtual Host Einträgen kann direkt das Zielverzeichnis mit angegeben werden"}}},"Email":{"title":"Email","type":"object","properties":{"subject":{"type":"string"},"body":{"type":"string"},"htmlTemplate":{"type":"string","default":"newsletter_without_header"},"templateData":{"type":"object","properties":{},"description":"Daten die in der HTML-Template verarbeitet werden sollen"},"senderAddress":{"type":"string","default":"support@mittwald.de"},"senderName":{"type":"string","default":"Mittwald CM Service"}}},"Error":{"title":"Error","type":"object","properties":{"message":{"type":"string"}}},"FileMeta":{"title":"FileMeta","description":"Relevante Metadaten der hochgeladenen Datei","type":"object","required":["id","type","name"],"properties":{"id":{"description":"UUID der Datei","type":"string","format":"uuid"},"type":{"description":"Mimetype der Datei","type":"string"},"name":{"description":"Name der Datei","type":"string"}}},"GDPRContact":{"title":"GDPRContact","required":["city","houseNumber","mail","name","street","zipCode"],"type":"object","properties":{"name":{"type":"string"},"street":{"type":"string"},"houseNumber":{"type":"string"},"zipCode":{"type":"string"},"city":{"type":"string"},"mail":{"type":"string"},"creationDate":{"type":"string","description":"Das Erstelldatum im UTC Format","format":"datetime"},"type":{"type":"string","description":"Ein frei wählbarer Typ, der optional angegeben werden kann."}}},"GDPRContract":{"title":"GDPRContract","type":"object","properties":{"creationDate":{"type":"string","description":"Das Erstelldatum im UTC Format","format":"datetime"},"tom":{"type":"object","properties":{}},"client":{"type":"object","properties":{}},"recipient":{"type":"object","properties":{}},"html":{"type":"string","description":"Der Inhalt des Vertrages in Form von HTML"},"confirmationDate":{"type":"string","description":"Das Datum (im UTC Format), zu dem der Vertrag angenommen wurde","format":"datetime"},"sentDate":{"type":"string","description":"Das Datum (im UTC Format), zu dem der Vertrag zuletzt via E-Mail versendet wurde","format":"datetime"},"reminderSentDate":{"type":"string","description":"Das Datum (im UTC Format), zu dem automatisiert eine Erinnerungsmail versendet wurde","format":"datetime"},"isPartnerContract":{"type":"boolean"},"contractSigner":{"type":"string","description":"Der vollständige Name des Vertragsunterzeichners"}}},"GDPRContractPreset":{"title":"GDPRContractPreset","required":["name"],"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"config":{"type":"object","properties":{}},"creationDate":{"type":"string","description":"Das Erstelldatum im UTC Format","format":"datetime"}}},"GDPRPDF":{"title":"GDPRPDF","required":["name"],"type":"object","properties":{"name":{"type":"string"},"creationDate":{"type":"string","description":"Das Erstelldatum im UTC Format","format":"datetime"}}},"GDPRTom":{"title":"GDPRTom","type":"object","properties":{"content":{"type":"string"},"creationDate":{"type":"string","description":"Das Erstelldatum im UTC Format","format":"datetime"}}},"GuestOperatingSystem":{"title":"GuestOperatingSystem","type":"object","properties":{"name":{"type":"string","description":"Name des Betriebssystems","readOnly":true},"identifier":{"type":"string","description":"Eindeutiger Identifier des Betriebssystems","readOnly":true},"pleskRequired":{"type":"boolean","description":"Beinhaltet eine Plesk Version","readOnly":true},"pleskVersion":{"type":"number","description":"Die Plesk Version","readOnly":true}}},"Handles":{"title":"Handles","type":"object","properties":{"owner":{"$ref":"#/components/schemas/Contact"},"admin":{"$ref":"#/components/schemas/Contact"}}},"HostingOrderCustomer":{"title":"HostingOrderCustomer","required":["city","country","emailAddress","firstName","houseNumber","lastName","phone","salutation","street"],"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"title":{"minLength":1,"type":"string"},"salutation":{"type":"string","enum":["Herr","Frau","Divers"]},"street":{"minLength":1,"type":"string"},"houseNumber":{"minLength":1,"type":"string"},"city":{"minLength":1,"type":"string"},"company":{"type":"string"},"emailAddress":{"type":"string","format":"email"},"phone":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"},"country":{"maxLength":2,"minLength":2,"type":"string","description":"iso country short code (ISO 3166-1 alpha-2)"}}},"Invoice":{"title":"Invoice","required":["grossTotal","invoiceNumber","invoicedAt","items","netTotal"],"type":"object","properties":{"invoiceNumber":{"type":"number","description":"Die Rechnungsnummer"},"invoicedAt":{"type":"string","description":"Das Datum der Rechnungsstellung","format":"datetime"},"netTotal":{"$ref":"#/components/schemas/InvoiceAmount"},"grossTotal":{"$ref":"#/components/schemas/InvoiceAmount"},"items":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceItem"}}}},"InvoiceAmount":{"title":"InvoiceAmount","required":["currency"],"type":"object","properties":{"currency":{"type":"string","description":"Die Währung des Betrags","enum":["EUR"]}}},"InvoiceItem":{"title":"InvoiceItem","required":["netTotal","quantity","text","title"],"type":"object","properties":{"title":{"type":"string"},"text":{"type":"string"},"netTotal":{"$ref":"#/components/schemas/InvoiceAmount"},"quantity":{"required":["amount"],"type":"object","properties":{"amount":{"type":"integer","description":"Anzahl"},"unit":{"type":"string","description":"Einheit"}}}}},"AccountIpAddress":{"type":"object","required":["address","type","commonName","version"],"properties":{"address":{"type":"string","description":"Die IP-Adresse"},"type":{"type":"string","description":"Die Art der IP-Adresse","enum":["SHARED","EXCLUSIVE","PREMIUM","ACCOUNT","CUSTOMER"]},"version":{"type":"number","description":"die ip Version","enum":[4,6]},"commonName":{"type":"string","description":"Der Common Name des SSL-Zertifikats, falls es eine SSL-IP ist"}}},"IpAddress":{"title":"IpAddress","type":"object","properties":{"address":{"type":"string","readOnly":true},"scope":{"type":"string","readOnly":true,"enum":["internal","external"]},"version":{"type":"number","readOnly":true},"type":{"type":"string"},"relatedCertificateCommonName":{"type":"string"}}},"MailAck":{"title":"MailAck","type":"object","properties":{"msg":{"type":"string"},"recipients":{"type":"array","items":{"type":"string"}}}},"MailAddress":{"title":"MailAddress","type":"object","properties":{"uid":{"type":"integer"},"fullName":{"type":"string"}}},"Cronjob":{"title":"Cronjob","type":"object","required":["uid","name","enabled","errorReporting","errorReportingEmail","customTimeoutMode","type","interval","status"],"properties":{"uid":{"type":"integer"},"name":{"type":"string"},"enabled":{"type":"boolean"},"errorReporting":{"type":"string","enum":["NONE","MAIL_ON_FAILURE","MAIL"]},"errorReportingEmail":{"type":"string"},"customTimeoutMode":{"description":"Whether a custom timeout is set","type":"number","enum":[0,1]},"customTimeoutValue":{"description":"Amount of custom timeout","type":"number"},"type":{"description":"Type of cronjob (server based, browser based, custom interpreter)","type":"string","enum":["SERVER","BROWSER","INTERPRETER"]},"interval":{"description":"Crontab interval","type":"array","items":{"type":"string"}},"status":{"type":"number"},"file":{"type":"string"},"params":{"type":"string"},"url":{"type":"string"},"interpreter":{"$ref":"#/components/schemas/CronjobInterpreter"}}},"CronjobInterpreter":{"type":"object","required":["hidden","name","type","uid"],"properties":{"hidden":{"type":"boolean"},"name":{"type":"string"},"type":{"type":"string"},"uid":{"type":"number"}}},"CronjobIntervalTemplate":{"type":"object","required":["description","interval","public","sorting","uid"],"properties":{"description":{"type":"string"},"interval":{"type":"array","items":{"type":"string"}},"public":{"type":"boolean"},"sorting":{"type":"number"},"uid":{"type":"number"}}},"CronjobSoftwareTemplate":{"type":"object","required":["cronjob","name","software","uid"],"properties":{"name":{"type":"string"},"uid":{"type":"number"},"software":{"type":"object","required":["identifier","uid"],"properties":{"identifier":{"type":"string"},"uid":{"type":"number"}}},"cronjob":{"type":"object","required":["uid","name","enabled","errorReporting","errorReportingEmail","customTimeoutMode","type","interval","status"],"properties":{"uid":{"type":"integer"},"name":{"type":"string"},"enabled":{"type":"boolean"},"errorReporting":{"type":"string","enum":["NONE","MAIL_ON_FAILURE","MAIL"]},"errorReportingEmail":{"type":"string"},"customTimeoutMode":{"description":"Whether a custom timeout is set","type":"number","enum":[0,1]},"customTimeoutValue":{"description":"Amount of custom timeout","type":"number"},"type":{"description":"Type of cronjob (server based, browser based, custom interpreter)","type":"string","enum":["SERVER","BROWSER","INTERPRETER"]},"interval":{"description":"Crontab interval","type":"array","items":{"type":"string"}},"status":{"type":"number"},"file":{"type":"string"},"params":{"type":"string"},"url":{"type":"string"},"interpreter":{"$ref":"#/components/schemas/CronjobInterpreter"}}}}},"CreateCronjob":{"type":"object","required":["customTimeoutMode","enabled","errorReporting","interval","name","type"],"properties":{"customTimeoutMode":{"type":"number","enum":[0,1]},"customTimeoutValue":{"type":"number"},"enabled":{"type":"boolean"},"errorReporting":{"type":"string","enum":["NONE","MAIL_ON_FAILURE","MAIL"]},"errorReportingEmail":{"type":"string"},"file":{"type":"string"},"url":{"type":"string"},"interpreter":{"type":"number"},"interval":{"type":"array","items":{"type":"string"}},"name":{"type":"string"},"params":{"type":"string"},"type":{"type":"string","enum":["SERVER","BROWSER","INTERPRETER"]}}},"DirectoryOrFileMeta":{"type":"object","required":["absolutePath","isDirectory","isFile","isLink","name"],"properties":{"absolutePath":{"type":"string"},"isDirectory":{"type":"boolean"},"isFile":{"type":"boolean"},"isLink":{"type":"boolean"},"name":{"type":"string"},"target":{"type":"string"}}},"Message":{"title":"Message","type":"object","properties":{"message":{"type":"string"}}},"OfferRequest":{"title":"OfferRequest","required":["articles","recipient"],"type":"object","properties":{"recipient":{"$ref":"#/components/schemas/OfferRequestRecipient"},"articles":{"$ref":"#/components/schemas/OfferRequestArticles"},"isTechnicalAdminForRecipient":{"type":"boolean","default":false}}},"OfferRequestArticle":{"title":"OfferRequestArticle","required":["articleNumber"],"type":"object","properties":{"articleNumber":{"type":"number"}}},"OfferRequestArticles":{"title":"OfferRequestArticles","required":["main"],"type":"object","properties":{"main":{"$ref":"#/components/schemas/OfferRequestArticle"},"additional":{"type":"array","items":{"$ref":"#/components/schemas/OfferRequestArticle"}}}},"OfferRequestRecipient":{"title":"OfferRequestRecipient","required":["city","country","emailAddress","firstName","houseNumber","lastName","phone","salutation","street"],"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"title":{"minLength":1,"type":"string"},"salutation":{"type":"string","enum":["Herr","Frau","Divers"]},"street":{"minLength":1,"type":"string"},"houseNumber":{"minLength":1,"type":"string"},"city":{"minLength":1,"type":"string"},"company":{"type":"string"},"emailAddress":{"type":"string","format":"email"},"phone":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"},"country":{"maxLength":2,"minLength":2,"type":"string","description":"iso country short code (ISO 3166-1 alpha-2)"}}},"OptionalContact":{"title":"OptionalContact","type":"object"},"OptionalContactWithPhone":{"title":"OptionalContactWithPhone","type":"object"},"OptionalContactWithTaxID":{"title":"OptionalContactWithTaxID","allOf":[{"type":"object","properties":{"vat":{"minLength":1,"type":"string","description":"Umsatzsteuer-ID"}}},{"$ref":"#/components/schemas/OptionalContact"}]},"OrderPreUpgradeCheck":{"title":"OrderPreUpgradeCheck","type":"object","properties":{"ipChanges":{"type":"boolean"}}},"PartnerHostingOrderRequest":{"title":"PartnerHostingOrderRequest","type":"object","properties":{"customer":{"$ref":"#/components/schemas/HostingOrderCustomer"},"billing":{"$ref":"#/components/schemas/Billing"}}},"PaymentReceipt":{"title":"PaymentReceipt","required":["amount","kind","recordedAt"],"type":"object","properties":{"recordedAt":{"type":"string","description":"Datum, an dem der Zahlungseingang erfasst wurde","format":"datetime"},"amount":{"$ref":"#/components/schemas/InvoiceAmount"},"kind":{"required":["description"],"type":"object","properties":{"description":{"type":"string","description":"Die Art der Buchung"}}}}},"PaymentSettings":{"title":"PaymentSettings","type":"object"},"Recommendation":{"title":"Recommendation","required":["expireDate","id","pinCode"],"type":"object","properties":{"id":{"type":"string"},"pinCode":{"type":"number"},"expireDate":{"type":"string"}}},"Reseller":{"title":"Reseller","type":"object","properties":{"uid":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true},"customerNumber":{"type":"integer","readOnly":true}}},"ShopTestAgencyOrderRequest":{"title":"ShopTestAgencyOrderRequest","required":["customer"],"type":"object","properties":{"customer":{"$ref":"#/components/schemas/TestHostingOrderCustomer"},"isRegisteredForNewsletter":{"type":"boolean","default":false}}},"Software":{"title":"Software","required":["identifier"],"type":"object","properties":{"identifier":{"type":"string"},"name":{"type":"string"},"uid":{"type":"integer"},"category":{"type":"object","properties":{"name":{"type":"string"},"uid":{"type":"integer"}}}}},"SoftwareExtension":{"title":"SoftwareExtension","type":"object","properties":{"uid":{"type":"number","readOnly":true},"key":{"type":"string","description":"Der Extension-Key, der die Extension/Plugin innerhalb des Systems eindeutig identifiziert","readOnly":true},"name":{"type":"string","description":"Der menschenlesbare Name der Extension","readOnly":true},"version":{"type":"string","description":"Die derzeit installierte Version der Extension","readOnly":true}}},"SoftwareInstallation":{"title":"SoftwareInstallation","type":"object","properties":{"uid":{"type":"number","readOnly":true},"software":{"type":"object","properties":{"uid":{"type":"number"},"identifier":{"type":"string"},"name":{"type":"string"}},"readOnly":true},"version":{"type":"object","properties":{"uid":{"type":"number"},"number":{"type":"string"}},"readOnly":true},"installPath":{"type":"string","description":"Dateipfad, in welchem die Software im Account installiert ist"},"frontendUrl":{"type":"string","description":"URL zum Frontend der Software"},"backendUrl":{"type":"string","description":"URL zum Backend der Software"},"documentRoot":{"type":"string","description":"DocumentRoot der Software, relativ zum Installationspfad (`installPath`)"},"status":{"type":"string","enum":["creating","updating","deleting","ready"]},"database":{"type":"object","properties":{"uid":{"type":"number","readOnly":true},"name":{"type":"string","readOnly":true}},"description":"Die Datenbank, in welcher diese Softwareinstallation installiert ist"},"archiveFrom":{"$ref":"#/components/schemas/SoftwareInstallation"}}},"StorageStatistics":{"title":"StorageStatistics","required":["accounts"],"type":"object","properties":{"accounts":{"type":"array","items":{"required":["details","limit","name","percent","summary"],"type":"object","properties":{"details":{"required":["backups","dbspace","mail","snapshot","system","template","webspace"],"type":"object","properties":{"backups":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"dbspace":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"mail":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"snapshot":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"system":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"template":{"$ref":"#/components/schemas/StorageStatisticsItemList"},"webspace":{"$ref":"#/components/schemas/StorageStatisticsItemList"}}},"limit":{"type":"number","description":"Speicherplatzbeschränkung des Projekts","format":"integer"},"name":{"type":"string","description":"Name des Projekts"},"percent":{"type":"number","description":"Relative/prozentuale Auslastung (0-100) des Projekt-Speicherplatzes"},"summary":{"type":"number","description":"Absolute Speicherplatzverbrauch des Projekts, in KiB","format":"integer"}}}},"meta":{"required":["limit","percent","summary"],"type":"object","properties":{"limit":{"type":"number","description":"Speicherplatzbeschränkung der relevanten Projekte","format":"integer"},"percent":{"type":"number","description":"Relative/prozentuale Auslastung (0-100) des Projekt-Speicherplatzes"},"summary":{"type":"number","description":"Absolute Speicherplatzverbrauch der Projekte, in KiB","format":"integer"}}}}},"StorageStatisticsItem":{"title":"StorageStatisticsItem","required":["itemName","itemSize","itemUpdatedAt"],"type":"object","properties":{"itemName":{"type":"string"},"itemSize":{"type":"number","description":"Speicherplatzverbrauch in KiB\n","format":"integer"},"itemUpdatedAt":{"type":"number","description":"Letzter Änderungszeitpunkt, als UNIX-Zeitstempel in Sekunden.\n","format":"integer"}}},"StorageStatisticsItemList":{"title":"StorageStatisticsItemList","required":["items","summary"],"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/StorageStatisticsItem"}},"summary":{"type":"number","description":"Gesamt-Speicherplatzverbrauch, in KiB","format":"integer"}}},"Subdomain":{"title":"Subdomain","type":"object","properties":{"uid":{"type":"integer","readOnly":true},"fullName":{"type":"string","readOnly":true},"target":{"type":"string"},"name":{"type":"string"}}},"SubdomainCreationBody":{"title":"SubdomainCreationBody","required":["name"],"type":"object","properties":{"name":{"type":"string"},"target":{"type":"string"}}},"TestAccountOrderRequest":{"title":"TestAccountOrderRequest","required":["customer"],"type":"object","properties":{"customer":{"$ref":"#/components/schemas/TestHostingOrderCustomer"},"software":{"$ref":"#/components/schemas/Software"},"isRegisteredForNewsletter":{"type":"boolean","default":false}}},"TestAgencyOrderRequest":{"title":"TestAgencyOrderRequest","required":["customer"],"type":"object","properties":{"customer":{"$ref":"#/components/schemas/TestHostingOrderCustomer"},"isRegisteredForNewsletter":{"type":"boolean","default":false}}},"TestHostingOrderCustomer":{"title":"TestHostingOrderCustomer","required":["country","emailAddress","firstName","lastName","salutation"],"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"title":{"minLength":1,"type":"string"},"salutation":{"type":"string","enum":["Herr","Frau","Divers"]},"street":{"minLength":1,"type":"string"},"houseNumber":{"minLength":1,"type":"string"},"city":{"minLength":1,"type":"string"},"company":{"type":"string"},"emailAddress":{"type":"string","format":"email"},"phone":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"},"country":{"maxLength":2,"minLength":2,"type":"string","description":"iso country short code (ISO 3166-1 alpha-2)"}}},"Ticket":{"title":"Ticket","required":["answersCount","author","createdAt","updatedAt","message","status","publicStatus","subject","uid"],"type":"object","properties":{"uid":{"type":"integer"},"subject":{"type":"string"},"message":{"type":"string"},"createdAt":{"type":"string","format":"datetime"},"updatedAt":{"type":"string","format":"datetime"},"status":{"$ref":"#/components/schemas/TicketStatus"},"publicStatus":{"$ref":"#/components/schemas/TicketStatus"},"author":{"required":["email","name","telephone","isMittwaldAuthor"],"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"telephone":{"type":"string"},"isMittwaldAuthor":{"type":"boolean"}}},"account":{"required":["name","uid"],"type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"customer":{"required":["customernumber"],"type":"object","properties":{"customernumber":{"type":"integer"}}},"answersCount":{"type":"integer"},"files":{"type":"array","items":{"type":"string","format":"uuid"}}}},"TicketStatus":{"title":"TicketStatus","type":"string","enum":["open","in-progress","feedback","information","answered","done"]},"TicketCategory":{"title":"TicketCategory","type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"}}},"TicketAnswer":{"title":"TicketAnswer","required":["author","createdAt","message","uid"],"type":"object","properties":{"uid":{"type":"integer"},"message":{"type":"string"},"createdAt":{"type":"string","format":"datetime"},"author":{"required":["email","name","telephone","isMittwaldAuthor"],"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"telephone":{"type":"string"},"isMittwaldAuthor":{"type":"boolean"}}},"files":{"type":"array","items":{"type":"string","format":"uuid"}}}},"TicketAnswerInput":{"title":"TicketAnswerInput","required":["message"],"type":"object","properties":{"message":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"telephone":{"type":"string"}}},"customer":{"required":["customernumber"],"type":"object","properties":{"customernumber":{"type":"number"}}},"files":{"type":"array","items":{"$ref":"#/components/schemas/FileMeta"}}}},"TicketInput":{"title":"TicketInput","required":["message","subject","customer"],"type":"object","properties":{"subject":{"type":"string"},"message":{"type":"string"},"author":{"type":"object","properties":{"name":{"type":"string","description":"Abweichender Name; falls nicht angegeben, wird der Name des aktuell authentifizierten Nutzers verwendet."},"email":{"type":"string","description":"Abweichende E-Mail-Adresse; falls nicht angegeben, wird die Adresse des aktuell authentifizierten Nutzers verwendet.","format":"email"},"telephone":{"type":"string","description":"Abweichende Telefonnummer; falls nicht angegeben, wird die Telefonnummer (sofern bekannt) des aktuell authentifizierten Nutzers verwendet."},"notify":{"type":"boolean","description":"Beschreibt, ob der Autor über Antworten auf dieses Ticket per E-Mail benachrichtigt werden möchte."}}},"account":{"required":["name"],"type":"object","properties":{"name":{"type":"string"}}},"customer":{"required":["customernumber"],"type":"object","properties":{"customernumber":{"type":"number"}}},"files":{"type":"array","items":{"$ref":"#/components/schemas/FileMeta"}}}},"PublicTopLevelDomain":{"title":"PublicTopLevelDomain","type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"string"},"setupFee":{"type":"string"},"type":{"type":"string"}},"required":["uid","name","description","price","setupFee","type"]},"TopLevelDomain":{"title":"TopLevelDomain","type":"object","properties":{"uid":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"articleNumber":{"type":"integer"},"price":{"type":"string"},"agencyPrice":{"type":"string"},"setupFee":{"type":"string"},"isAllowedAsInclusiveDomain":{"type":"boolean"}}},"UpdateContact":{"title":"UpdateContact","type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"title":{"minLength":1,"type":"string"},"salutation":{"type":"string","enum":["Herr","Frau","Divers"]},"street":{"minLength":1,"type":"string"},"houseNumber":{"minLength":1,"type":"string"},"zip":{"type":"string","minLength":1},"city":{"minLength":1,"type":"string"},"emailAddress":{"type":"string","format":"email"},"phone":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"},"fax":{"pattern":"^\\+([0-9]{2,3}|1)\\-[0-9]{2,5}\\-[0-9]+$","type":"string"},"country":{"maxLength":2,"minLength":2,"type":"string"},"vat":{"type":"string"}}},"UpgradeCase":{"title":"UpgradeCase","type":"object","properties":{"targetArticleNumber":{"type":"integer"},"toolboxProRequired":{"type":"boolean"},"description":{"type":"string"}}},"UploadGDPRPDFRequest":{"title":"UploadGDPRPDFRequest","required":["name","pdf"],"type":"object","properties":{"name":{"type":"string"},"pdf":{"type":"string","format":"binary"}}},"CreateFeedback":{"title":"CreateFeedback","type":"object","properties":{"vote":{"type":"integer","description":"1 means bad, ranges to 5 means best","enum":[1,2,3,4,5]},"message":{"type":"string"},"notNow":{"type":"boolean"}}},"SetBlockedBots":{"title":"SetBlockedBots","type":"object","properties":{"blockedBots":{"allOf":[{"$ref":"#/components/schemas/BlockedBots"}],"nullable":true}}},"BlockedBots":{"title":"BlockedBots","type":"array","uniqueItems":true,"items":{"type":"string"}},"VerificationCode":{"title":"VerificationCode","required":["code"],"type":"object","properties":{"code":{"type":"string","description":"Der generierte Telefonverifizierungscode"}}},"VirtualAccount":{"title":"VirtualAccount","required":["article","description","name","uid","virtualName"],"type":"object","properties":{"uid":{"type":"integer","readOnly":true},"name":{"type":"string","readOnly":true},"description":{"type":"string"},"virtualName":{"type":"string","readOnly":true},"article":{"$ref":"#/components/schemas/Article"}}},"VirtualAccountInput":{"title":"VirtualAccountInput","required":["article","description","password","virtualName"],"type":"object","properties":{"password":{"type":"string"},"description":{"type":"string"},"article":{"$ref":"#/components/schemas/Article"},"virtualName":{"type":"string","description":"Login-Alias für den virtuellen Account"}}},"VirtualAccountOutput":{"title":"VirtualAccountOutput","allOf":[{"$ref":"#/components/schemas/VirtualAccount"},{"required":["password"],"type":"object","properties":{"password":{"type":"string","description":"Das Passwort des neu angelegten Accounts. Dieses Passwort ist **nur** in der Antwort auf die Anfrage, die den Account erstellt hat, enthalten; nachfolgende Antworten (z.B. `GET`-Requests auf den Account) werden das Passwort nicht mehr enthalten."}}}]},"VisitorStatistics":{"title":"VisitorStatistics","type":"object","properties":{"id":{"type":"string","description":"ID des Projekts"},"last_information_at":{"type":"number"},"limit":{"required":["article","maximum","usage","usage_absolute"],"type":"object","properties":{"article":{"required":["name","number"],"type":"object","properties":{"name":{"type":"string"},"number":{"type":"number"}}},"maximum":{"type":"number","description":"Vorgesehene monatliche Besucherzahl"},"maximum_updated_at":{"type":"string","description":"Zeitpunkt der letzten Veränderung der monatlichen Besucherzahl","format":"date-time"},"usage":{"type":"number","description":"Relative Auslastung (0 bis 1) der vorgesehen monatlichen Besucherzahl"},"usage_absolute":{"type":"number","description":"Absolute Anzahl der bisherigen monatlichen Besucher","format":"integer"}}},"name":{"type":"string","description":"Name des Projekts"},"skip_information":{"type":"boolean"},"throttling":{"required":["enabled"],"type":"object","properties":{"enabled":{"type":"boolean"}}},"grace_period":{"type":"object"},"visitor_information":{"type":"object","properties":{"daily":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number","format":"integer"},"date":{"type":"string","format":"date-time"}}}},"monthly":{"type":"array","items":{"type":"object","properties":{"count":{"type":"number","format":"integer"},"date":{"type":"string","format":"date-time"}}}}}}}},"Webhook":{"title":"Webhook","required":["eventType","method","url"],"type":"object","properties":{"uid":{"type":"string","readOnly":true},"url":{"type":"string","format":"uri"},"method":{"type":"string","enum":["GET","POST","PUT","DELETE","PATCH"]},"eventType":{"type":"string","enum":["DOMAIN_REGISTRATION_STATUS"]},"headers":{"type":"object","properties":{}},"parameters":{"$ref":"#/components/schemas/WebhookParameter"}}},"WebhookParameter":{"title":"WebhookParameter","type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"MenuItemPayload":{"type":"object","required":["name","description","elementType","subLevelCount"],"properties":{"name":{"type":"string"},"accountUid":{"type":"string"},"description":{"type":"string"},"statusFields":{"type":"object","required":["disabled","technicalAdvised","devAccount","editLock"],"properties":{"disabled":{"type":"boolean"},"devAccount":{"type":"boolean"},"technicalAdvised":{"type":"boolean"},"editLock":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"elementType":{"type":"string"},"subLevelCount":{"type":"number"}}},"MainMenu":{"type":"object","required":["top","left","contract","support"],"properties":{"top":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}},"left":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}},"contract":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}},"support":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MenuItem":{"type":"object","required":["key","type","value"],"properties":{"key":{"type":"string"},"type":{"type":"string","enum":["relative","static","javascript","none"]},"value":{"type":"string"},"urlTarget":{"type":"string"},"payload":{"$ref":"#/components/schemas/MenuItemPayload"},"children":{"type":"array","items":{"$ref":"#/components/schemas/MenuItem"}}}},"MainMeta":{"type":"object","required":["errors","warnings"],"properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/MetaItem"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/MetaItem"}}}},"MetaItem":{"type":"object","required":["account","name"],"properties":{"account":{"type":"string"},"name":{"type":"string"},"usagePercent":{"type":"number"},"hexCode":{"type":"string"}}},"SearchResult":{"type":"object","properties":{"accounts":{"type":"array","items":{"$ref":"#/components/schemas/AccountSearchResult"}},"reseller":{"type":"array","items":{"$ref":"#/components/schemas/ResellerSearchResult"}},"solr":{"type":"array","items":{"$ref":"#/components/schemas/SolrSearchResult"}}}},"AccountSearchResult":{"type":"object","required":["account_uid","account_name","account_desc","dom_list"],"properties":{"account_uid":{"type":"number"},"account_name":{"type":"string"},"account_desc":{"type":"string"},"dom_list":{"type":"string"}}},"ResellerSearchResult":{"type":"object","required":["reseller_uid","reseller_name","reseller_desc"],"properties":{"reseller_uid":{"type":"number"},"reseller_name":{"type":"string"},"reseller_desc":{"type":"string"}}},"SolrSearchResult":{"type":"object","required":["solr_uid","solr_name"],"properties":{"solr_uid":{"type":"number"},"solr_name":{"type":"string"}}},"DomainOverviewItem":{"type":"object","required":["uid","_class","fullname","domain","target","accountUid","accountName","useAutodiscover","hasSslCertificate","hasVarnish","isSubDomain","isExternal","isSslReady","isTodoReady","isRegistrarJobOpen","isReady"],"properties":{"uid":{"type":"number"},"_class":{"type":"string"},"fullname":{"type":"string"},"domain":{"type":"string"},"target":{"type":"string"},"accountUid":{"type":"number"},"accountName":{"type":"string"},"useAutodiscover":{"type":"boolean"},"hasSslCertificate":{"type":"boolean","description":"Indicates if a TLS certificate should be provisioned for this domain item. See `isSslReady` for the actual readiness of the certificate.\n"},"hasVarnish":{"type":"boolean","description":"Indicates if a Varnish cache is active for this domain item.\n"},"isSubDomain":{"type":"boolean"},"isExternal":{"type":"boolean","description":"Indicates if this domain item is registered via mittwald, or via an external registry.\n"},"isSslReady":{"type":"boolean","description":"This property is `false` when a TLS certificate is currently being provisioned, or otherwise `true`. This means that this property is `true`, when A) no certificate is active at all (see `hasSslCertificate`, in this case), or B) a certificate has successfully been provisioned.\n"},"isTodoReady":{"type":"boolean","deprecated":true,"description":"Deprecated in favor of `isReady`.\n"},"isRegistrarJobOpen":{"type":"boolean"},"isReady":{"type":"boolean","description":"Indicates if the domain has been provisioned successfully (`true`), or if it is currently being provisioned or edited (`false`).\n"}}},"DnsRecord":{"type":"object","required":["host","value","ttl","priority"],"properties":{"host":{"type":"string"},"value":{"type":"string"},"ttl":{"type":"number"},"priority":{"type":"number"}}},"DnsOverviewItem":{"type":"object","required":["uid","_class","isSubdomain","isReady","hasSslCertificate","fullName","domainName","defaultAccountIp","records"],"properties":{"uid":{"type":"number"},"_class":{"type":"string"},"isSubdomain":{"type":"boolean"},"isReady":{"type":"boolean"},"hasSslCertificate":{"type":"boolean"},"fullName":{"type":"string"},"domainName":{"type":"string"},"defaultAccountIp":{"type":"string"},"defaultDomainIp":{"type":"object","properties":{"4":{"type":"string"},"6":{"type":"string"}}},"records":{"type":"object","required":["A","AAAA","CNAME","NS","MX","TXT","SRV","CAA"],"properties":{"A":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"AAAA":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"CNAME":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"NS":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"MX":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"TXT":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"SRV":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}},"CAA":{"type":"array","items":{"$ref":"#/components/schemas/DnsRecord"}}}}}},"DNSRecordRequest":{"type":"object","properties":{"mx":{"$ref":"#/components/schemas/MxRecord"},"target":{"$ref":"#/components/schemas/TargetRecord"},"ns":{"type":"array","items":{"type":"string"}},"txt":{"type":"array","items":{"type":"string"}},"srv":{"type":"array","items":{"$ref":"#/components/schemas/SrvRecord"}},"caa":{"type":"array","items":{"$ref":"#/components/schemas/CaaRecord"}}}},"ManualMxRecord":{"type":"object","required":["priority","value"],"properties":{"priority":{"type":"integer"},"value":{"type":"string"}}},"AutoMxRecordOption":{"type":"string","enum":["AUTO","NONE"]},"MxRecord":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/ManualMxRecord"}},{"$ref":"#/components/schemas/AutoMxRecordOption"}]},"TargetRecord":{"oneOf":[{"$ref":"#/components/schemas/CName"},{"$ref":"#/components/schemas/IpRecord"}]},"CName":{"type":"string","description":"CNAME (only allowed for subdomains)","example":"mittwald.de"},"IpRecord":{"type":"object","required":["a"],"properties":{"a":{"type":"string"},"aaaa":{"type":"string"}}},"SrvRecord":{"type":"object","required":["service","protocol","server","priority","weight","port"],"properties":{"service":{"type":"string"},"protocol":{"$ref":"#/components/schemas/SrvProtocol"},"server":{"type":"string"},"priority":{"type":"number"},"weight":{"type":"number"},"port":{"type":"number"}}},"SrvProtocol":{"type":"string","enum":["tcp","udp","tls"]},"CaaRecord":{"type":"object","required":["tag","flag","domain"],"properties":{"tag":{"type":"string","enum":["issue","issuewild","iodef"]},"flag":{"type":"number","enum":[0,128]},"domain":{"type":"string"}}},"DNSUpdateResponse":{"type":"object","properties":{"message":{"type":"string"}}},"CertificateCreateOrUpgradeResponse":{"type":"object","properties":{"found":{"type":"array","items":{"type":"string"}},"notFound":{"type":"array","items":{"type":"string"}}}},"BlogArticle":{"type":"object","required":["title","timestamp","description","link","identifier"],"properties":{"title":{"type":"string"},"timestamp":{"type":"string"},"description":{"type":"string"},"images":{"type":"array","items":{"$ref":"#/components/schemas/BlogArticleImage"}},"link":{"type":"string"},"identifier":{"type":"string"}}},"BlogArticleImage":{"type":"object","properties":{"url":{"type":"string"},"width":{"type":"number"}}},"PasswordChangeRequest":{"required":["password"],"type":"object","properties":{"password":{"type":"string"}}},"ValidationError":{"title":"Validation Error","required":["message","type"],"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"}}},"AuthenticationRequest":{"title":"Authentication request","required":["password","username"],"type":"object","properties":{"username":{"type":"string","description":"User name"},"password":{"type":"string","description":"Password","format":"password"},"multiFactorCode":{"description":"TOTP code or device authentication pin","type":"string"},"deviceId":{"type":"string"}}},"Jwt":{"title":"Jwt","required":["iat","sub"],"type":"object","properties":{"sub":{"type":"string","description":"Token subject"},"iat":{"type":"integer","description":"Time of token creation (UNIX timestamp)","readOnly":true},"exp":{"type":"integer","description":"Expire date","readOnly":true},"includes":{"type":"array","description":"Included subjects","items":{"type":"string"}}},"description":"Contents of issues JWTs"},"EncodedJwt":{"title":"EncodedJwt","type":"string","description":"An encoded and signed JWT"},"PublicKey":{"title":"PublicKey","type":"string","description":"A RSA public key in PEM format"},"Notification":{"title":"Notification","type":"object","required":["uid","crdate","read","title","message"],"properties":{"uid":{"type":"number"},"crdate":{"type":"number"},"read":{"type":"boolean"},"title":{"type":"string"},"message":{"type":"string"}}}},"responses":{"400":{"description":"Ungültige Anfrage. Dies kann beispielsweise geschehen, wenn die Anfrage ungültig codierte Inhalte enthält oder der Inhalt semantisch inkorrekt ist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Zugriff verweigert","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Bei der Verarbeitung der Anfrage ist ein Fehler aufgetreten.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}
