BETA-Phase Domainreselling-API gestartet

  • Ich möchte an dieser Stelle den Wunsch nach einer domainList-Methode verstärken. Grade, wenn man den Bestand synchron halten muss (z.B. in einer eigener Datenbank) und auch das DNS-Gelöt extern handelt, ist es sehr nützlich neue Clients mit einer Full-Sync-Funktion ausstatten zu können (die initial / regelmäßig zur Kontrolle bei Netcup abfragt, welche Domains derzeit registriert sind).


    Im Bereich der Dokumentation wäre eine Auflistung aller Error-Codes mit deren Bedeutung für die automatische Auswertung / Exception-Handling äußerst hilfreich.

  • Hallo [netcup] Johannes B. ,

    Hallo Hecke29,

    danke für Ihre Anmerkung.


    Sollte diese Funktion implementiert werden, welche Felder würden Sie wünschen?

    Domainname, Status, ... ?

    Domainname & Status sind gut und mEn ausreichend. Die restlichen Daten (wie die verwendeten Handles etc.) findet man dann ja bei Bedarf per infoDomain.


    Und wenn ich träumen darf und Sie die Daten "zur Hand" haben, würde ich auch gerne das Registrierungsdatum und/oder das nächste Verlängerungs-/Auslaufdatum im infoDomain-Response finden; bin mir aber aktuell nicht sicher was hier aktuell eh schon zurück kommt.


    Anm.d.Autors: Der Beitrag von Ringelnatz über diesem war zum Zeitpunkt des Verfassens noch nicht bekannt.


    Viele Grüße aus Hamburg

  • Kleines Problem: Wenn ich eine Domain updaten möchte, welche noch teilweise die Standardhandles gesetzt hat, erhalte ich den Fehler:

    Zitat

    SoapFault

    Validation Error. Value: "default handle" in field: contactentries does not match requirements of type: contactentriesvalue.

    Ist es gewollt, dass "default handle" über die API nicht genutzt werden kann?

    ------------

    Ich möchte noch einmal anmerken, dass das poll-System in meinen Augen nicht so sinnvoll gelöst ist. Hin und wieder löse ich in meiner (Test-)Software ein ackpoll() für alle Einträge in poll() aus. Da dies für jede Nachricht einzeln geschehen muss sind ca. 50% aller API-Calls ackpoll()s und ich verursache damit doppelt soviel API-Traffic wie nötig. Das wird sich mit zunehmender Anzahl an Resellern sicherlich serverseitig bemerkbar machen ...

  • Versuchen Sie mal mit try/catch den Soap Fehler zu fangen. Sehen Sie sich das Exception object an. Darin müssten Sie auch eine Fehlermeldung sehen.

    Habe mal noch eine Exception eingefangen (Domaintransfer obwohl Domain nicht bei genannten Nameservern hinterlegt ist):

    Zitat

    object(SoapFault)#437 (9) { ["message":protected]=> string(4) "5003" ["string":"Exception":private]=> string(0) "" ["code":protected]=> int(0) ["file":protected]=> string(85) "/app/Classes/DomainWebserviceSoapClient.php" ["line":protected]=> int(35) ["trace":"Exception":private]=> array(55) { [0]=> array(6) { ["file"]=> string(85) "/app/Classes/DomainWebserviceSoapClient.php" ["line"]=> int(35) ["function"]=> string(10) "__soapCall" ["class"]=> string(10) "SoapClient" ["type"]=> string(2) "->" ["args"]=> array(2) { [0]=> string(14) "transferDomain" [1]=> array(8) {

    Mehr als die Zahl 5003 kann ich der Exception nicht entlocken.

    PHP
    } catch(\SoapFault $e) {
       die(var_dump($e));
    }
  • PHP
    } catch(\SoapFault $e) {
       die(var_dump($e));
    }

    Darüber hinaus ist es zum Debuggen sehr sinnvoll folgendes zu wissen (sofern der Standard PHP-Soap-Client eingesetzt wird):

    Setzt man beim Instanziieren in den Optionen einen Eintrag mit key trace und value 1, so hat man Zugriff auf die "besonderen" Methoden __getLastRequest() und __getLastResponse(). Diese geben einem - passend zum Namen - den SOAP-Request oder Response als string aus. Sehr praktisch wie gesagt zum Debuggen, um zu schauen, was der Server genau antwortet :)

    Code
    $pseudoSoap = new SoapClient('example.org/my.wsdl', ['trace' => 1]);
    $pseudoSoap->__soapCall('myAction', []);
    $pseudoSoap->__getLastRequest();
    $pseudoSoap->__getLastResponse();
  • Ich hatte schon vermutet, dass es im Adventskalender auch einen Rabatt für .com-Domains geben wird und wollte der Transfer per API probieren.

    Mein Testprogramm prüft zunächst, ob die gewünschte Domain bereits registriert ist. Falls ja fragt es nach dem AuthCode. Beim Check einer .com-Domain über infoDomain() gibt das API als status nicht mehr "connect" wie bei .de sondern "registred" aus (by the way: das sollte eigentlich "registered" heißen oder?). Mein System hat daher versucht, die Domain per createDomain() anzulegen und hat dabei die Fehlermeldung "The registration of this domain failed. Because of the error:" erhalten. Auch im CCP-Log steht nichts genaueres. Hier sollte eine aussagekräftigere Fehlermeldung hin oder?

  • Noch etwas:

    Beim Transfer bestehender Domains über das API habe ich stets meine eigenen Nameserver angegeben. Bei ein paar Domains habe ich aus unterschiedlichen Gründen danach im CCP auf die netcup-eigenen Nameserver umgestellt. Nun ist mir letzte Nacht aufgefallen, dass für diese plötzlich wieder meine eigenen Nameserver bei der DENIC hinterlegt waren, weil die entsprechenden Seiten plötzlich nicht mehr erreichbar waren.

    Wie konnte das passieren?


    EDIT: Teilweise, stelle ich jetzt fest, wurden auch einfach die Nameserver des bisherigen Domainproviders überhaupt nicht verändert.

    • Offizieller Beitrag

    Hallo Ringelnatz,


    danke für Ihr Feedback.


    Am besten wenden Sie sich zu der Nameserver Thematik per Mail an unseren Support. Damit die einzelnen Schritte nachvollzogen werden können. Geben Sie hierbei bitte möglichst viele Detail-Informationen.

    Erst wenn unsere Prüfungen der Nameserver erfolgreich waren, und dann noch die Registry die Änderung akzeptiert, werden die Nameserver bei der Registry übernommen. Sowohl im CCP als auch auf der API sollten sie dabei direkt eine Rückmeldung erhalten.

  • Erst wenn unsere Prüfungen der Nameserver erfolgreich waren, und dann noch die Registry die Änderung akzeptiert, werden die Nameserver bei der Registry übernommen. Sowohl im CCP als auch auf der API sollten sie dabei direkt eine Rückmeldung erhalten.

    Es handelte sich um .de-Domains, insofern wurde ich ja in der Antwort des API-Calls über die erfolgreiche Registrierung informiert. Ich habe auch mal getestet was passiert, wenn ich die zu transferierende Domain nicht bei meinen Nameservern hinterlege; man erhält ja eine entsprechende Fehlermeldung. Die Rückmeldung im CCP lautet für die betroffenen Domains stets "Domain has been successful transferred."

    • Offizieller Beitrag

    Ringelnatz Es ist einfacher in einem solchen Fall über konkrete Domains und Ihre Aktionen zu sprechen um diese Schritt für Schritt nachzuvollziehen. Aus Datenschutzgründen lege ich Ihnen nahe, sich dazu per Mail an uns zu wenden, falls noch Fragen dazu offen sind.

    • Offizieller Beitrag

    Vielen Dank an alle Tester.


    Einige Ihrer Anmerkungen sind umgesetzt.

    • listallHandle liefert jetzt benannte Array Keys statt nummerierte.
    • Die clientrequestid wird jetzt früher im Ablauf verarbeitet und taucht daher eher im Logging auf.
    • Das Logging wurde allgemein verbessert. Leere Fehlermeldungen sollten nun auch nicht mehr auftreten.
    • Im angebotenen SOAP Client wurde die Fehlerbehandlung verbessert. Falls Sie die letzte Version verwenden, tauschen Sie die "_Call" Methode aus.
    • Funktion listallDomains hinzugefügt. Beschreibung der Methode
  • Funktion listallDomains hinzugefügt.

    Das ist prima, danke. :thumbup:

    Jetzt liefert das Feld "status" von listallDomains() ("inclusive domain"/"additional domain") andere Werte als von infoDomain() ("connected", "registred", ...).

    Ließe sich über eines der Felder feststellen, ob die Domain gerade registriert bzw. transferiert wird (vergleichbar mit dem "(wird registriert)" o.ä. im CCP)?

    • Offizieller Beitrag

    Liebe Beta-Tester unserer API,


    wir haben ihr Feedback ernst genommen und werden daher die API innerhalb der beta-Testphase anpassen.


    Die wesentliche Anpassung wird sein, dass Eingabe und Ausgabe bei SOAP jetzt als Objekt statt als Array erfolgen wird. Die dafür notwendigen Objekte sind in der WSDL beschrieben und im Beispiel Soap Client in PHP implementiert. Die Anpassungen auf Kundenseite sind überschaubar und bringen für Sie den entscheidenden Vorteil, dass auf Client Seite gleich mit Objekten weiter gearbeitet werden kann.


    Nach dem Release erfolgt bei solchen nicht abwärtskompatiblen Änderungen eine Versionierung, die mindestens für eine Übergangsphase den parallelen Betrieb ermöglicht.


    Es gibt jetzt ein einheitliches Response Objekt mit Infos wie

    • Meldungsnummer
    • kurze/lange Rückmeldung
    • Client Request Id
    • Server Request Id, etc.


    Zudem enthält der Response je nach Befehl die passenden Objekte jetzt einheitlich im Feld responsedata z.B.

    - Domainobjekt bei infoDomain

    - Handleobjekt bei infoHandlec.

    Im Feld Longmessage ist dann immer ausschließlich ein Rückmeldungstext zu finden.


    Sind mehr als ein Objekt in der Rückmeldung z.B. bei Poll oder listallDomains, sind die Objekte in einem Array im Feld responsedata zu finden.


    Bei Aktionen wie deleteHandle, ackpoll, logout, etc. wird kein Response Objekt benötigt. Informationen im einheitlichen Response Objekt über Erfolg oder Misserfolg reichen.


    Errors wie gehabt als SOAP Fault Objekte.


    Alle Objekte sind in der WSDL/XSD beschrieben.



    Für die Inbetriebnahme geben wir hiermit Wartungsarbeiten bekannt, während deren die API nicht erreichbar sein wird.

    Mittwoch, 03.01.2018, ab 10 Uhr

    Wir halten Sie hier über den Verlauf des Updates auf dem Laufenden.



    Anbei finden Sie die Dateien, wie sie nach dem Update aussehen werden.


    Beispiele in PHP*

    * ohne Gewähr.


    Anpassung Login

    SOAP:

    Code
    $client = new DomainWebserviceSoapClient();
    
    $resultlogin = $client->login($customernumber, $apikey, $apipassword, $clientrequestid);
    
    $apisessionid = $resultlogin->responsedata->apisessionid;

    Bei Rest sind für das Login keine Anpassungen notwendig.



    Anpassung Domain Jobs


    Die Nameserver und Kontakt Einträge sind in Zukunft als Objekt zu Übergeben.


    SOAP und REST:




    Ihre Fragen zur Anpassung sind hier stets Willkommen.

  • Ich habe jetzt auch mal begonnen, meine Testsoftware im Hinblick auf die API-Änderungen anzupassen. Die Vereinheitlichung von Bezeichnungen, Rückgabewerten etc. gefällt auf jeden Fall. Was mir aufgefallen ist:

    • Laut der SOAP interface description ist bei infoDomain() der letzte Parameter optional. Ich erhalte allerdings den Fehler "Type error: Too few arguments to function App\Classes\DomainWebserviceSoapClient::infoDomain(), 5 passed [...] and exactly 6 expected".
    • Bei infoDomain() fehlt jetzt offenbar die Info über Nameserver? Vorher kam ich über Keys wie "nameserver1_host" an die NS-Infos. Jetzt sehe ich lediglich ein "\"nameserverentry\":null" in responsedata.
    • Bei infoDomain() ist das Feld "state" nicht ganz konsequent: "registred" vs. "registered at netcup" (letzteres ist richtig)


    Auf https://ccp.netcup.net/run/webservice/servers/endpoint.php :

    • Bei createDomain, updateDomain usw. steht in der Beschreibung des Parameters nameservers "$nameserverentry1->ipv6n= [...]". Das "n" ist da wohl nicht richtig.
    • In der Beschreibung der Klasse/des Interfaces Nameserverentries ist bei den ersten drei NS "nillable = FALSE" angegeben. Das sollte nur für die ersten beiden der Fall sein oder?
  • Neu erstellte Beiträge unterliegen der Moderation und werden erst sichtbar, wenn sie durch einen Moderator geprüft und freigeschaltet wurden.

    Die letzte Antwort auf dieses Thema liegt mehr als 365 Tage zurück. Das Thema ist womöglich bereits veraltet. Bitte erstellen Sie ggf. ein neues Thema.

    • :)
    • :(
    • ;)
    • :P
    • ^^
    • :D
    • ;(
    • X(
    • :*
    • :|
    • 8o
    • =O
    • <X
    • ||
    • :/
    • :S
    • X/
    • 8)
    • ?(
    • :huh:
    • :rolleyes:
    • :love:
    • :pinch:
    • 8|
    • :cursing:
    • :wacko:
    • :thumbdown:
    • :thumbup:
    • :sleeping:
    • :whistling:
    • :evil:
    • :saint:
    • <3
    • :!:
    • :?:
    Maximale Anzahl an Dateianhängen: 10
    Maximale Dateigröße: 1 MB
    Erlaubte Dateiendungen: bmp, gif, jpeg, jpg, pdf, png, txt, zip