Re: KeyHelp API
Posted: Fri 27. Sep 2019, 14:58
Nicht wundern, ich bereite die Server doch erst am Montagmorgen vor. Bis dahin können sich aber trotzdem noch gern Test-Willige melden.
Das offizielle KeyHelp Forum der Keyweb AG / The official KeyHelp forum of Keyweb AG
https://community.keyhelp.de/
Code: Select all
"code": "400 Bad Request",
Code: Select all
"statuscode": 400,
Code: Select all
"statuscode": 200,
Code: Select all
/domains/detail/id [GET] ===> /domains/{id} [GET]
/domains/update/id [POST] ===> /domains/{id} [PUT]
/domains/delete/id [GET] ===> /domains/{id} [DELETE]
Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Zunächst einmal ein dickes Lob. DIe neue API ist der Hammer. Es macht damit Spaß zu arbeiten und endlich können DInge "direkt" realisiert werden welche vorher nur mit Gefrickel möglich waren. Ich freue mich schon darauf mit der API zu arbeiten, denn diese wird definitiv meinen Arbeitsalltag erleichtern. Außerdem macht sie den Weg frei für Third-Part-Software für KeyHelp. Es werden spannende Zeiten!
Tut mir sehr leid, dass ich dich gerade bei deinem wichtigsten Punkt noch um Geduld bitten muss. Alles was mit dem Skeleton Verzeichnis in Verbindung steht wird im kommenden Update nochmal massiv überarbeitet. Aus dem Grund habe ich es auch noch nicht in die API aufgenommen, da ich zwar schon erste Pläne habe, aber noch keine 100%igen Details geplant habe.
Habe die Schlüssellänge nun auf 128 (+1) Zeichen erweitert.
Der angezeigte Statuscode entspricht dem HTTP-Status-Code, den du zurück erhältst. Du könntest, statt dem Feld generell immer den HTTP-Code auswerten. Dann hättest du es einheitlich.Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Drittens, Rückgabewert "Aktion erfolgreich"
Kann man bei der erfolgreichen Verarbeitung auch (analog zu den Fehlern) einen Statuscode (idealerweise als INT) übermitteln?
Aktuell gibt es beispielsweise folgenden RückgabewertIch stelle mir eine globale Erweiterung der API vor.Code: Select all
"code": "400 Bad Request",
Als numerischer Wert.und im ErfolgsfallCode: Select all
"statuscode": 400,
Das würde das Auswerten des Rückgabewertes standardisieren.Code: Select all
"statuscode": 200,
Wie Enigma bereits sagte, würde so etwas den REST Prinzipien widersprechen.Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Viertens, API Namensraum
Am Beispiel "/domains".
Je nach verwendeter Methode reagiert "/domains/{id}" anders. Könnte man hier noch folgende Alias vergeben?Ich finde meine Endpointbezeichner "merkbarer" und selbsterklärend. Aber gut, das ist vielleicht einfach nur Geschmackssache.Code: Select all
/domains/detail/id [GET] ===> /domains/{id} [GET] /domains/update/id [POST] ===> /domains/{id} [PUT] /domains/delete/id [GET] ===> /domains/{id} [DELETE]
Hier würde ich gern noch eine Nacht drüber schlafen (Feedback zum Thema wäre willkommen):Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Fünftens, Client-Overview
Quasi eine Zusammenfassung der Werte von "/clients/{id}/domains" bis "/clients/{id}/ftp-users". Im Grunde wie der Punkt "resources" bei /server
Das kann oder sollte an /clients/{id} [GET] (oder neu /clients/detail/id [GET]) angehängt werden. "resources" trifft es auf den Punkt. Am besten inklusive aller Domainnamen (nicht nur die Anzahl).
Gewünschte Felder für "meta" hinzugefügt.Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Sechstens, Serverinfo
Kann man im Bereich "meta" noch IPV4 / IPV6 - Adresse hinzufügen?
Bei "operating_system" noch "eol" 1 oder 0 ergänzen? Das würde die Überwachung mehrer Server vereinfachen.
Ebenso ein "updates_in_queue". Quasi "Ausstehende Updates" für diesen Server.
"uptime" wäre auch noch ein wünschenswerter Wert.
Code: Select all
"meta": {
...
"ip_addresses": [
"62.141...",
"62.141..."
],
...
"uptime": {
"days": 80,
"hours": 3,
"minutes": 8,
"seconds": 33
},
...
]
Code: Select all
"operating_system": {
...
"end_of_life": false,
"updates": {
"update_count": 0,
"security_update_count": 0,
"reboot_required": true
}
}
Alexander wrote: ↑Mon 21. Oct 2019, 14:34Hier würde ich gern noch eine Nacht drüber schlafen (Feedback zum Thema wäre willkommen):Tobi wrote: ↑Sun 20. Oct 2019, 22:11 Fünftens, Client-Overview
Quasi eine Zusammenfassung der Werte von "/clients/{id}/domains" bis "/clients/{id}/ftp-users". Im Grunde wie der Punkt "resources" bei /server
Das kann oder sollte an /clients/{id} [GET] (oder neu /clients/detail/id [GET]) angehängt werden. "resources" trifft es auf den Punkt. Am besten inklusive aller Domainnamen (nicht nur die Anzahl).
Ich würde dann die Endpunkte "/clients/{id}/domains" bis "/clients/{id}/ftp-users" entfernen, und stattdessen einen Punkt "/clients/{id}/resources" hinzufügen, über den man wie durch Tobi beschrieben sämtliche Ressourcen zurückgegeben bekommt. Wenn man bestimmte Angaben nicht braucht, könnte man sie mittels GET Query-Parameter ausblenden, z.B. "?databases=0&ftp_users=0" (sie beim Endpunkt "/server/").
Jein.
Grundsätzlich kannst du alle Felder, die man beim Anlegen verwenden kann auch beim Updaten verwenden. Es gibt Ausnahmen, die funktionieren aber genau wie sie es innerhalb der KeyHelp-UI tun würden.Ich habe gerade keine Zeit zum Testen, daher frage ich einfach mal: Beim Anlegen einer Domain gibt es deutlich mehr Optionen als beim Updaten, z. B. php_version, is_disabled, delete_on, is_dns_disabled, is_email_domain sowie die HSTS-Einstellungen. Jedenfalls laut Doku... Ist die Doku da nur unvollständig oder kann ich diese prinzipiell nachträglich zu ändernden Optionen tatsächlich nicht per API anpassen?
Ah. Deswegen also DELETE /domains und nicht GET /domains/delete/id
Nein, das readOnly / writeOnly hat nur was mit der Dokumentation bzw. dem Dokumentationsstandard hier (https://app.swaggerhub.com/apis-docs/keyhelp/api) zu tun.Deswegen also DELETE /domains und nicht GET /domains/delete/id
Immer gernDas wird echt Klasse mit dem nächsten Update und ich finde es toll wie Alex auf Wünsche und Ideen reagiert!