Variomedia Kunden-API
Unsere Kunden-API ermöglicht es allen Kunden wiederkehrende Vorgänge wie die Verwaltung von DNS-Einträgen oder das Anlegen von E-Mail-Adressen zu automatisieren.
Die API orientiert sich an der JSON:API-Spezifikation. Authentifizierung erfolgt über API Tokens, die für einzelne Kundenkontakte freigeschaltet werden müssen.
Unsere FAQ enthält praktische Beispiele (zum Beispiel Let’s Encrypt / certbot-Integration) und weitere Informationen.
Der Zugang muss manuell freigeschaltet werden. Bitte wenden Sie sich an die Kundenbetreuung – wir stellen Ihnen sehr gern einen Token aus.
Informationen zu unserer alten Reseller-API finden Sie unter /docs/legacy. Die alten API-Endpunkte funktionieren wie gewohnt und werden solange betrieben, bis die neue API volle Funktionsparität bietet.
Änderungen
2024-09-13
Reseller können nun Ihre Tarife einsehen.
2024-08-19
Reseller können nun ihren Kunden externe Kundennummern zuweisen und löschen.
2024-07-05
Reseller können nun Kunden den Zugang zum Kundenmenü (ent-)sperren.
2024-03-15
Der E-Mail-Adressen-Endpunkt zeigt nun auch die Belegung für den Open-Xchange App Drive-Dateispeicher an.
2022-10-11
Es ist nun möglich ein Startdatum für E-Mail-Autoresponder zu setzen.
2022-05-20
Die Liste der gültigen Zeichen für E-Mail-Postfachpasswörter wurde auf alle von der OWASP empfohlene erweitert.
2021-11-04
Subdomains können nun nach Domains gefiltert werden.
2021-05-27
Es ist nun unter Einschränkungen möglich, Catch-All-E-Mailadressen (default@domain.de
) anzulegen.
2021-03-12
Es ist nun möglich beim Anlegen von E-Mail-Postfächern ein eigenes Passwort anzugeben.
2020-12-01
Datenbanken zeigen nun auch Ihren Verbrauch an, der täglich aktualisiert wird.
2020-10-08
Es ist nun möglich das redirect_to_https
Attribut für Webspace- und Redirect-Subdomains zu manipulieren.
2020-09-08
Es ist nun möglich Datenbanken anzulegen und zu löschen.
2020-09-02
Es ist nun möglich sich Datenbanken anzeigen zu lassen.
2020-09-01
Es ist nun möglich sich Pakete anzeigen zu lassen.
2020-08-20
Es ist nun möglich Subdomains in Webspace bzw. Redirect umzuwandeln indem man den Webspace-Pfad bzw. die Ziel-URL PATCHt.
2020-07-14
- Es ist nun möglich Kundendaten abzurufen.
- Es ist ebenfalls möglich die Domainliste nach Kundennummern zu filtern.
2020-07-02
Es ist nun möglich, Web-Redirect-Subdomains anzulegen.
2020-06-16
Es ist nun möglich, Email-Subdomains anzulegen.
2020-06-11
Application Passwords für Email-Postfächer können nun angelegt und gelöscht werden.
2020-06-10
- Die Standard-PHP-Version für Webhosting-Subdomains kann nun gesetzt werden.
- Der Webspace-Pfad von Webhosting-Subdomains kann nun gesetzt werden.
2020-05-19
Der DNS-Migrationsmodus kann nun für Domains gesetzt werden.
2020-03-06
Es ist nun möglich, Autorespondern von E-Mail-Postfächern ein Ablaufdatum zuzuordnen.
2019-10-25
Es ist nun möglich E-Mail-Adressen serverseitig nach Adressen zu filtern.
2019-08-14
Beschreibungen (description
) von E-Mailadressen können nun mittels PATCH
geändert werden.
2019-08-13
Beim Anlegen von E-Mailadressen ist es nun möglich den Spamschutz zu konfigurieren. Wir raten jedoch dazu, den Standardwert reject
nicht zu ändern.
2019-08-12
- Autoresponder können nun gesetzt, aktiviert und deaktiviert werden.
- Statt neue Postfachpasswörter von Hand zu setzen, ist es nun auch möglich mittels eines
POST
s ein neues, sicheres Passwort zu setzen
2019-08-09
E-Mail-Adressen mit +
-Zeichen können nun als Weiterleitungsziele (forward_to
) für Postfächer und Weiterleitungen verwendet werden.
2019-08-08
Postfachpasswörter können nun geändert werden.
2019-06-11
Es ist nun möglich, bei E-Mail-Adressen zusätzliche Empfänger hinzuzufügen und zu löschen.
2019-05-17
E-Mail-Adressen können nun gelöscht werden.
2019-03-06 → Ende der Betaperiode
Die meisten Änderungen ergeben sich aus der Tatsache, dass einige Entscheidungen dem JSON:API-Standard widersprachen. Insbesondere müssen Untertypen die bisher per /data/type
gesetzt wurden, nun unterhalb der attributes
gesetzt werden und der Name darf nicht type
sein.
/dns-records
:- Beim Abruf heisst
/data/attributes/type
nun/data/attributes/record_type
. - Beim Anlegen muss das
type
-Feld nun immerdns-record
lauten. Der Untertyp wird mittels/data/attributes/record_type
definiert.
- Beim Abruf heisst
/domain-availability
: Die Ergebnisse sind nun ebenfalls nach JSON:API-Art gewrapt./email-addresses
:- Beim Abruf heisst
/data/attributes/type
nun/data/attributes/address_type
. - Beim Anlegen muss das
type
-Feld nun immeremail-address
lauten. Der Untertyp wird mittels/data/attributes/address_type
definiert.
- Beim Abruf heisst
/queue-jobs
:/data/attributes/type
heisst nun/data/attributes/job_type
./subdomains
:- Beim Abruf heisst
/data/attributes/type
nun/data/attributes/subdomain_type
. - Beim Anlegen muss das
type
-Feld nun immersubdomain
lauten. Der Untertyp wird mittels/data/attributes/subdomain_type
definiert.
- Beim Abruf heisst
2019-02-26
/domain-availability
: Domains können nun auf Verfügbarkeit geprüft werden./subdomains
: Beim Anlegen von Webhosting-Subdomains kann nun optional die PHP-Version angegeben werden.
Allgemeine Prinzipien
Basis-URL
Sämtliche URLs sind relativ zum Hostnamen https://api.variomedia.de/.
Authentifizierung
Authentifizierung findet mittels des Authorization:
-Headers statt.
Um das Testen in Browsern zu ermöglichen, ist es möglich traditionelle HTTP Basic Authentication zu verwenden. Hierbei nutzen Sie token
als User und den Token selbst als Passwort.
Alternativ kann auch die Methode token
benutzt werden:
Authorization: token ihr-token
Tokens deren Kontakte gelöscht werden, werden automatisch ungültig.
Content-Type
Vorzugsweise sollten Sie Ihre Request mit dem Content-Type application/vnd.api+json
verschicken. Die API verlangt das jedoch nicht und sollte es nicht gesetzt sein, sind die Server-Antworten als application/json
angegeben, um das Testen im Browser zu erleichtern.
Bei allen Requests, die eine JSON-Payload im Body haben, muss der Content-Type auf entweder application/vnd.api+json
oder application/json
gesetzt werden.
Versionierung
Versionierung findet per Accept:
-Header statt. Die aktuelle Version lautet:
Accept: application/vnd.variomedia.v1+json
Wird keine Version angegeben, erhalten Sie automatisch die neuste Version.
Wir empfehlen daher immer explizit eine API-Version zu setzen.
Rückwärtskompatible Änderungen wie das Hinzufügen von Attributen in Responses veranlassen keine Änderung der API-Version.
Limits
Derzeit besteht eine Durchsatzbegrenzung (Rate-Limit) von 10 Request / 10 Sekunden per IP. Sollte sie überschritten werden, liefert die API Statuscode 429 zurück.
Sollten Sie zu viele Fehler verursachen, wird der Zugang zur API vorrübergehend gesperrt.
Objekt-Filter
Standardmäßig erhalten Sie beim Auflisten von Objekten (in der Regel GET
-Request gegen die Basis-URL des Objektes) alle für den aktuellen Kunden oder Reseller relevanten Objekte zurück.
Dies kann insbesondere bei Resellern jedoch schnell unübersichtlich werden. Deshalb erlauben die meisten Endpunkte eine Filterung anhand von bestimmten Attributen. Welche das sind, wird in der jeweiligen Objektdokumentation aufgelistet.
Filter werden per URL-Parameter übergeben und haben stets die gleiche Form: filter[ATTRIBUT]=WERT
.
Wünschen Sie also eine Liste aller API-Objekte vom Typen OBJEKT
, die ein Attribut ATTRIBUT
mit dem Wert WERT
haben, würden Sie die folgende URL verwenden:
https://api.variomedia.de/OBJEKT?filter[ATTRIBUT]=WERT
Sie können mehrere WERT
e für ATTRIBUT
angeben indem sie entweder mehrere URL-Parameter übergeben (die Standardgemäß mit &
-Zeichen getrennt werden):
?filter[ATTRIBUT]=WERT_1&filter[ATTRIBUT]=WERT_2
Oder indem Sie die Werte mit Kommas trennen:
?filter[ATTRIBUT]=WERT_1,WERT_2
In beiden Fällen wird der Filter als ein logisches Oder interpretiert. ATTRIBUT
darf also sowohl WERT_1
, als auch WERT_2
sein.
Falls Sie Filter für mehrere unterschiedliche Attribute anwenden, werden die Filter als logisches Und angewendet.
Zum Beispiel:
?filter[domain]=domain1.de,domain2.de&filter[package_id]=1,2
Liefert eine Liste für die Domains domain1.de und domain2.de, aber nur falls sie in den Paketen 1 oder 2 liegen.
Job Queue
Bei Schreiboperationen, kann es vorkommen, dass bestimmte Aktionen asynchron erfolgen und mehrere Minuten brauchen, bis sie erledigt sind.
In dem Fall erhalten Sie vom Server ein 202 Accepted
zurück zusammen mit einem Link zu einem Job der den Status pending
hat.
Den Link finden Sie entweder im Content-Location
-Header oder im JSON-Body unter data.links.queue-job
.
Sobald ein Job erfolgreich abgearbeitet ist, wird sein Status auf done
gesetzt.
GET /queue-jobs
Gibt Ihnen eine Liste von Jobs die im Status pending
sind. Es gibt derzeit keine Filter.
Anhand von /data/links/object
lässt es sich auf das Objekt schließen, das erstellt/bearbeitet wird und anhand von /data/relationsships/owner/data/id
können Reseller die Jobs ihren Endkunden zuordnen.
Bitte beachten:
- Erledigte Jobs werden nach 24h gelöscht.
- Im Kundenmenü ausgelöste Jobs erscheinen hier nicht.
GET /queue-jobs/{id}
Liefert einen einzelnen Job anhand seiner ID zurück.
Kunden
GET /customers
Liefert die Liste aller Ihrer Kunden. Als Kontaktinformationen werden die Daten des Hauptkontakts des jeweiligen Kundenkontos angezeigt. Es gibt derzeit keine Filter.
GET /customers/{id}
Liefert Details für Kunden {id}
.
Manipulation
PATCH /customers/{id}
Kundenmenüzugang
Folgender Body für PATCH /customers/2042
sperrt den Zugang zum Kundenmenü für den Kunden mit der Kundennummer 2042
:
{
"data": {
"type": "customer",
"id": "2042",
"attributes": {
"is_login_disabled": true
}
}
}
Das Entsperren funktioniert analog, indem man false
setzt.
Externe Kundennummern
Reseller können Ihren Kunden einzigartige externe Kundennummern zuweisen die aus ASCII-Zeichen, Zahlen, .
, -
und _
bestehen.
Diese Nummern können für die Identifikation Ihrer Kunden in unserem System verwendet werden:
{
"data": {
"type": "customer",
"id": "2042",
"attributes": {
"external_customer_id": "abc-123"
}
}
}
Eine externe Kundennummer kann entfernt werden, indem sie auf null
gesetzt wird.
Domains
Domains können:
- über Variomedia registriert,
- einer Präsenz zugeordnet (d.h. sie wird bei Variomedia genutzt, aber woanders registriert; auch „externe Domain“ genannt),
- beides sein.
Deshalb enthält die Reponse zwei Unterfelder: registration
und presence
. Je nach Domaintyp, kann eines der beiden Felder null
sein, was eine Unterscheidung ermöglicht.
GET /domains
Liefert eine Liste aller Domains mit Erstellungs- und Ablaufdatum.
Mögliche Filter:
owner_id
: Kundennummerpackage_id
: Paket
GET /domains/{domain-name}
Liefert Details zur Domain {domain-name}
.
Manipulation
PATCH /domains/{domain-name}
Ermöglicht die Manipulation von existierenden Domains. Bitte beachten Sie, dass die Domain in der URL und das id
-Feld im Body identisch sein müssen.
DNS-Updateschutz
Den Updateschutz für DNS-Einträge aktiveren, beziehungsweise deaktivieren:
{
"data": {
"id": "beispielkunde.info",
"type": "domain",
"attributes": {
"presence": {
"dns_update_lock": false
}
}
}
}
DNS-Migrationsmodus
Analog können Sie ebenfalls den DNS-Migrationsmodus beeinflussen:
{
"data": {
"id": "beispielkunde.info",
"type": "domain",
"attributes": {
"presence": {
"dns_migration_mode": {
"enabled": true
}
}
}
}
}
Pakete
Pakete (manchmal auch Präsenzen genannt) verbinden Kunden, Domains und Hostingdienstleistungen wie Webhosting oder E-Mail-Adressen. Jedes Paket enthält Links zu allen dem Paket zugeordneten Objekten im relationships
-Teil der Antwort.
GET /packages
Liefert eine Liste von angelegten Paketen.
Mögliche Filter:
owner_id
: Kundennummerplan_id
: Tarif-ID
GET /packages/{id}
Liefert Details zum Paket {id}
.
Derzeit ist nur lesender Zugriff möglich.
Tarife
Tarife definieren die Leistungen, die für ein Paket freigeschaltet sind.
GET /plans
Liefert eine Liste von angelegten Tarife.
GET /plans/{id}
Liefert Details zum Tarif {id}
.
Derzeit ist nur lesender Zugriff möglich.
DNS-Einträge
GET /dns-records
Liefert eine Liste aller DNS-Einträge.
Mögliche Filter:
domain
: Domainname (ohne Subdomains)package_id
: Paket
GET /dns-records/{id}
Liefert Details zum DNS-Eintrag {id}
.
Erstellen
POST /dns-records
Erstellt einen neuen DNS-Eintrag anhand des POST-Bodys.
Derzeit können folgende Typen von DNS-Einträgen erstellt werden:
Zum Beispiel:
{
"data": {
"type": "dns-record",
"attributes": {
"record_type": "A",
"name": "local",
"domain": "domain.de",
"data": "127.0.0.1",
"ttl": 800
}
}
}
legt einen A
-Eintrag für die Domain local.domain.de
mit der Adresse 127.0.0.1
an.
- Das Feld
domain
muss eine Präsenz-Domain sein. - Das
ttl
(Time To Live) Feld ist in Sekunden (300–86400) und optional. Beim Fehlen wird der gleiche Systemdefault benutzt, wie im Kundenmenü.
Besonderheiten:
CNAME
-Einträge werden im Gegensatz zum Kundenmenü immer absolut interpretiert. Diedata
-Felderfoo.com
undfoo.com.
werden also identisch behandelt.
Löschen
DELETE /dns-records/{id}
Löscht einen DNS-Eintrag mit der id {id}
.
Bitte beachten Sie:
-
Gelöschte DNS-Einträge können nicht ohne weiteres wiederhergestellt werden!
-
Manche DNS-Einträge können nicht gelöscht werden. Zum Beispiel die von uns verwalteten DKIM-Einträge.
-
Falls Sie die DNS-Einträge, die das
base
-Tag im Kundenmenü tragen ändern möchten, sollten Sie unbedingt den Update-Schutz aktivieren, damit Vorgänge wie Tarifwechsel sie nicht zurücksetzen.Sie können dies entweder von Hand im Kundenmenü oder mit Hilfe des Domain-Endpunktes dieser API erledigen.
Subdomains
Es gibt drei Typen von Subdomains:
webspace
: Volles Webhosting und E-Mail.redirect
: HTTP-Redirect und E-Mail.email
: Subdomain die ausschließlich für E-Mail genutzt wird.
GET /subdomains
Liefert eine Liste von Subdomains für den aktuellen Kunden.
Mögliche Filter:
package_id
: Paketedomain
: Domains als Strings; z.B.variomedia.de
GET /subdomains/{id}
Liefert Details zur Subdomain mit der ID {id}
.
Erstellen
POST /subdomains
Erstellt eine neue Subdomain anhand des POST-Bodys.
Webspace
Ein Beispiel für einen POST-Body, der eine Webspace-Subdomain „sub“ für die Domain „domain.de“ anlegt, die auf den Pfad „/sub-webspace/“ zeigt:
{
"data": {
"type": "subdomain",
"attributes": {
"subdomain_type": "webspace",
"description": "Eine freiwillige Beschreibung.",
"domain": "domain.de",
"subdomain": "sub",
"webspace": {
"path": "/sub-webspace/"
}
}
}
}
Optional kann zusätzlich eine php_version
als String übergeben werden, die standardmäßig für PHP-Skripte verwendet wird. Beim Weggelassen wird automatisch die empfohlene PHP-Version verwendet.
Derzeit sind folgende Versionen zulässig:
"5.6"
(keine Sicherheitsupdates mehr verfügbar!)"7.1"
(keine Sicherheitsupdates mehr verfügbar!)"7.2"
(keine Sicherheitsupdates mehr verfügbar!)"7.3"
(keine Sicherheitsupdates mehr verfügbar!)"7.4"
(keine Sicherheitsupdates mehr verfügbar!)"8.0"
(keine Sicherheitsupdates mehr verfügbar!)"8.1"
(unterstützt bis 25.11.2024)"8.2"
(unterstützt bis 08.12.2025)"8.3"
(unterstützt bis 23.11.2026)
Redirect
Ein Beispiel für einen POST-Body, der eine Redirect-Subdomain „sub“ für die Domain „domain.de“ anlegt, die Zugriffe nach „sub2.domain.de“ mittels eines Location
-Headers weiterleitet und den Pfad dynamisch umschreibt:
{
"data": {
"type": "subdomain",
"attributes": {
"subdomain_type": "redirect",
"description": "Eine freiwillige Beschreibung.",
"domain": "domain.de",
"subdomain": "sub",
"redirect": {
"dynamic": true,
"target": "https://sub2.domain.de/"
}
}
}
}
Ist dynamic
auf false
gesetzt, wird hart auf die target
-URL umgeleitet. Wenn es true
ist, wird der Pfad übernommen. Also z.B. https://sub.domain.de/foo/bar
würde auf https://sub2.domain.de/foo/bar
umleiten.
Für die target
-URL gelten die gleichen Regeln, wie im Kundenmenü.
Ein Beispiel für einen POST-Body, der eine Email-Subdomain „sub“ für die Domain „domain.de“ anlegt:
{
"data": {
"type": "subdomain",
"attributes": {
"subdomain_type": "email",
"description": "Eine freiwillige Beschreibung.",
"domain": "domain.de",
"subdomain": "sub"
}
}
}
Manipulation
PATCH /subdomains/{id}
Erlaubt die Manipulation existierender Subdomains. Bitte beachten Sie, dass die ID in der URL und das id
-Feld im Body identisch sein müssen.
PHP-Version
Für Webspace-Subdomains können Sie die Standard-PHP-Version setzen:
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"webspace": {
"php_version": "7.4"
}
}
}
}
Für gültige Versionen, vergleichen Sie bitte die Liste von oben. Bei null
wird die Standardversion des Pakets, in dem sich die Subdomain befindet, verwendet.
Pfad zu Webspace
Um den Webspace-Pfad zu setzen:
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"webspace":{
"path": "/ihr/wordpress/"
}
}
}
}
Wenn Sie den Webspace-Pfad für eine Redirect- oder eine Email-Subdomain PATCHen, wird sie automatisch in eine Webspace-Subdomain umgewandelt.
Redirect-Ziel
Um die Ziel-URL einer Redirect-Subdomain zu ändern:
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"redirect": {
"target": "https://beispielkunde.info/"
}
}
}
}
Sollte die Subdomain bisher uninitialisiert sein (d.h in der Liste erscheint sie als Weiterleitung, jedoch ohne Weiterleitungsdaten), wird im gleichen Schritt die Weiterleitung as statisch eingerichtet.
Wenn Sie die Ziel-URL für eine Webspace- oder eine Email-Subdomain PATCHen, wird sie automatisch in eine statische Redirect-Subdomain umgewandelt.
Dynamische Redirects
Sie können eine Redirect-Subdomain dynamisch machen (oder nicht). Bitte beachten Sie, dass um eine Redirect-Subdomain dynamisch zu machen, die Ziel-URL mit einem /
enden muss.
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"redirect": {
"dynamic": true
}
}
}
}
Es ist nicht möglich dies für uninitialisierte Subdomains anzuwenden.
Automatische Weiterleitung zu HTTPS
Um das redirect_to_https
-Attribut zu manipulieren, benutzen Sie
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"redirect": {
"redirect_to_https": true
}
}
}
}
für Redirect-Subdomains bzw.
{
"data": {
"type": "subdomain",
"id": "42",
"attributes": {
"webspace": {
"redirect_to_https": true
}
}
}
}
für Webhosting-Subdomains.
Es ist nicht möglich dies für uninitialisierte Redirect-Subdomains anzuwenden.
Datenbanken
Derzeit unterstützen wir zwei Arten von Datenbanken: MySQL und MariaDB in verschiedenen Versionen.
GET /databases
Liefert eine Liste von Datenbanken für den aktuellen Kunden.
Mögliche Filter:
package_id
: Paketeserver
: Der Datenbankserver auf dem die Datenbank liegt (z.B.db22
).db_type
: Der Datenbanktyp. Derzeitmysql
odermariadb
.version
: Die Version der Datenbank (z.B.8.0
).
GET /databases/{id}
Liefert Details zur Datenbank mit der ID {id}
.
Anlegen
Datenbanken werden stets auf dem aktuellen Standardserver für die jeweilige Datenbankversion angelegt. Es ist nicht möglich die API zum Anlegen von Datenbanken auf Datenbankservern zu nutzen, die auf einem dedizierten Server laufen.
POST /databases
Derzeit können folgende Kombinationen von Datenbank und Version angelegt werden. Es werden die gleichen Datenbanken und Versionen wie im Kundenmenü unterstützt.
Jede Datenbank ist einem Paket zugeordnet.
Um einen MariaDB 10.5 Datenbank im Paket mit der ID 42 und der Beschreibung "Eine freiwillige Beschreibung." anzulegen, benutzen Sie folgenden POST-Body:
{
"data": {
"type": "database",
"attributes": {
"package_id": "42",
"db_type": "mariadb",
"version": "10.11",
"description": "Eine freiwillige Beschreibung."
}
}
}
Ein sicheres Passwort wird für Sie automatisch erstellt und mit der Bestätigung – zusammen mit dem Server, auf dem die Datenbank angelegt wurde und der Datenbank-ID – zurückgegeben.
Löschen
DELETE /databases/{id}
Löscht die Datenbank mit der ID {id}
.
E-Mail-Adressen
Es gibt zwei Sorten von E-Mail-Adressen:
mailbox
: Die E-Mails lagern in einem Postfach auf unseren Servern und werden mittels IMAP, POP3 oder Webmail abgerufen. Optional ist zusätzlich eine Weiterleitung möglich.forward
: Die E-Mails werden ausschließlich weitergeleitet.
Je nach Typ enthalten die Details Zusatzinformationen, wie zum Beispiel Postfach-Quotas.
GET /email-addresses
Liefert eine Liste aller E-Mail-Adressen für den aktuellen Kunden.
Mögliche Filter:
package_id
: Paketaddress
: vollständige E-Mail-Adressedomain
: Domainteil der Adresse; Subdomains werden nicht unterstützt.
GET /email-addresses/{id}
Liefert Details zur E-Mail-Adresse mit der ID {id}
.
Erstellen
POST /email-addresses
Erstellt eine neue E-Mail-Adresse anhand des POST-Bodys.
Mögliche Felder:
-
address
: Die Adresse die Sie anlegen möchten. Sie darf nicht existieren und die Domain muss Teil Ihres Kundenkontos sein. -
address_type
: Mussmailbox
oderforward
sein. -
description
: Optional, Default:null
. Beschreibung der Adresse die im Kundenmenü und in der API angezeigt wird. -
antispam
: Optional, Default:reject
. Die Spamschutzeinstellungen für die neue E-Mail-Adresse. Muss eines vonreject
,junk-folder
(nur Mailboxen),subject-rewrite
odernone
sein. Wir empfehlen dringend, diese Einstellung nicht zu ändern. -
forward_to
: Optional für Mailboxen, jedoch Pflicht für Weiterleitungen. Eine Liste von E-Mail-Adressen, an die jede E-Mail weitergeleitet wird. -
password
: Optional, nur erlaubt für Mailboxen. Erlaubt das Setzen eines eigenen Passworts beim Anlegen der Mailbox. Bitte beachten Sie die dokumentierten Anforderungen an Passwörter.Sollten Sie das Feld frei lassen (empfohlen), wird ein sicheres Passwort erstellt und mit der Bestätigung zurückgegeben.
Postfächer
Ein Beispiel für einen POST-Body, der ein Postfach mit der E-Mail-Adresse „postfach@beispielkunde.info“ anlegt, das Spam in einen speziellen Ordner sortiert:
{
"data": {
"type": "email-address",
"attributes": {
"address_type": "mailbox",
"description": "Eine freiwillige Beschreibung.",
"address": "postfach@beispielkunde.info",
"forward_to": [],
"antispam": "junk-folder"
}
}
}
Ein sicheres Passwort für das Postfach wird automatisch generiert und mit der Bestätigung zurückgegeben.
Weiterleitungen
Ein Beispiel für einen POST-Body, der eine E-Mail-Adresse „weiterleitung@beispielkunde.info“ anlegt, dessen E-Mails an „postfach1@beispielkunde.info” und „postfach2@beispielkunde.info” weitergeleitet werden:
{
"data": {
"type": "email-address",
"attributes": {
"address_type": "forward",
"description": "Eine freiwillige Beschreibung.",
"address": "weiterleitung@beispielkunde.info",
"forward_to": [
"postfach1@beispielkunde.info",
"postfach2@beispielkunde.info"
]
}
}
}
Manipulation
PATCH /email-addresses/{id}
Erlaubt die Manipulation von existierenden Adressen. Bitte beachten Sie, dass die ID in der URL und das id
-Feld im Body identisch sein müssen.
Postfachpasswörter
Folgender Body für PATCH /email-addresses/42
ändert das Passwort auf "lieber laenger, als kuerzer":
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"password": "lieber laenger, als kuerzer"
}
}
}
Bitte beachten Sie, dass zu Ihrer Sicherheit strikte Anforderungen an die Passwörter gestellt werden:
- Mindestens 16 Zeichen lang.
- Mindestens 10 davon müssen sich unterscheiden (groß/klein reicht nicht).
- Gültige Zeichen sind:
- alle Buchstaben ohne Umlaute (A–Z und a–z)
- alle Zahlen (0–9)
- alle Sonderzeichen aus der OWASP-Liste.
- Weder der Nutzername noch die Domain dürfen in irgendeiner Form im Passwort vorkommen.
- Die Wörter "Variomedia", "vrmd", "Securehost", "Password" und "Passwort" dürfen nicht im Passwort vorkommen.
- Das Beispielpasswort von oben ist nicht zulässig.
- Zeichenfolgen wie
qwert
oderasdf
dürfen nicht im Passwort vorkommen. - Zusätzlich wird überprüft, dass das Passwort nicht in einer der gängigen Listen von geleakten Passwörtern auftaucht.
Sollten Sie einfach nur ein neues, sicheres Passwort wünschen, benutzen Sie den folgenden Endpunkt:
POST /email-addresses/{id}/password
Das Postfach erhält ein neues, zufällig generiertes Passwort und es wird im Response-Body zurückgeliefert.
Application Passwords
Sie können mittels
POST /email-addresses/{id}/application-passwords
Sich ein neues Application Password zurückgeben lassen. Im Body müssen Sie die Attribute device
und application
setzen. Diese sind frei wählbar, dürfen jedoch nicht leer sein:
{
"data": {
"type": "application-password",
"attributes": {
"device": "Mobiltelefon",
"application": "Mail"
}
}
}
Application Passwords können mit ihrer ID gelöscht werden:
DELETE /email-addresses/{address-id}/application-passwords/{application-password-id}
Zusätzliche Weiterleitungen
Sowohl Postfächer, als auch Weiterleitungen erlauben es, zusätzliche Empfänger zu definieren (/data/attributes/forward_to
).
Als Komfortfunktion können Sie diese Weiterleitungen einzeln von Hand hinzufügen:
POST /email-addresses/{id}/forward-to/weiterleitungsziel@beispielkunde.info
und entfernen:
DELETE /email-addresses/{id}/forward-to/weiterleitungsziel@beispielkunde.info
Autoresponder
Ändern des Textes
Um den Autoresponder-Text für die Adresse mit der ID 42 zu ändern senden sie den folgenden Body an PATCH /email-addresses/42
:
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"autoresponder": {"text": "Ich bin im Urlaub."}
}
}
}
Aktivieren und deaktivieren
Das Aktivieren und Deaktivieren eines Autoresponders funktioniert analog zum Ändern des Textes:
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"autoresponder": {"active": true}
}
}
}
Automatische Aktivierung und Deaktivierung
Auf die gleicher Art können Sie ein Datum hinzufügen, an dem Ihr Autoresponder automatisch kurz nach Mitternacht deutscher Zeit aktiviert oder deaktiviert wird:
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"autoresponder": {"activates": "2020-03-05"}
}
}
}
beziehungsweise:
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"autoresponder": {"expires": "2020-03-06"}
}
}
}
Bitte verwenden Sie ausschließlich das ISO 8609-Format für das Datum, wie in den Beispielen oben demonstriert.
Um eine automatische (De-)aktivierung zu entfernen, benutzen Sie null
als Wert für activates
bzw. expires
.
Bitte beachten Sie, dass derzeit nur ein Attribut pro Request geändert werden kann. Entsprechend kann es sein, dass Sie insgesamt bis zu vier Requests brauchen, um Ihren Autoresponder zu konfigurieren.
Beschreibung
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"description": "Eine Beschreibung der E-Mailadresse."
}
}
}
Setzt die Beschreibung für eine E-Mailadresse. Wenn Sie die Beschreibung entfernen möchten, setzen Sie sie auf null
.
Spamschutz
Sie können PATCH
ebenfalls verwenden, um den Spamschutz zu ändern:
{
"data": {
"type": "email-address",
"id": "42",
"attributes": {
"antispam": "reject"
}
}
}
Die gültigen Werte entnehmen Sie bitte von oben.
Löschen
DELETE /email-addresses/{id}
Erlaubt es Ihnen ein Postfach oder eine Weiterleitung permanent zu löschen.
Verfügbarkeit von Domains
Mittels
GET /domain-availability/domain1.de,domain2.de,...
können Sie überprüfen, ob eine Domain zur Registrierung zur Verfügung steht.
Falls available
den Wert null
hat, bedeutet es, dass ein Fehler aufgetreten ist.
Bitte beachten Sie, dass die Geschwindigkeit und Zuverlässigkeit dieses Endpunktes von den eigentlichen Domain-Registries abhängt. Unterschiedliche TLDs dauern unterschiedlich lange und manche Registries neigen zu Ausfällen.
Limits
Derzeit können maximal 10 Domains gleichzeitig überprüft werden.