InterNetX / php-domainrobot-sdk

A composer package for easy integration of the Domainrobot API powered by InterNetX GmbH.
MIT License
19 stars 12 forks source link

Feature requests #36

Closed stefan-sandberg closed 1 year ago

stefan-sandberg commented 1 year ago

Hi, we are implementing the InternetX API together with the SDK and we are missing some functionality in the SDK.

Core Functionality:

Good to have:

Additional question: *When you initiate a domain transfer in your portal there is an option to keep the existing nameservers if possible, I haven't been able to find a way to set that up through the API/SDK, do you have more info on that?

Thanks for a great SDK and API. //Stefan

adelholtz commented 1 year ago

Hi Stefan,

about Core functionality: We will implement the DomainBulkService and the resourceRecordsAdd/resourceRecordsRem Options as soon as possible, and give you feedback in this thread when the additionale features/options are live.

About the Zone info missing in the domain object. We will have to check that and give you an answer at a later time.

about the functionCodes: We will look into some possibilities that could make it easier to handle and work with. Your suggestions will be taken into consideration as well.

Then about the keep nameservers option. I am not sure about that one myself. So i will have to talk to the API Team and check with them. I will get back to you once i have an answer.

Hope those answers are a bit helpful for now. We will comment this thread about further developments to your features requests. Have a nice day.

Benjamin

adelholtz commented 1 year ago

About the keep nameservers option: If you don't provide NameServers for a domain transfer, the transfer process will try to use the already existing nameservers declared for this domain. So you don't need to provide a specific flag or option for this.

Ephenodrom commented 1 year ago

@stefan-sandberg Adding and removing certain records without pasting all records for a zone can be achieved via :

PATCH /zone/$name/$nameserver

You have to use the ZoneBasePatchRequest model as the body. Within this model you can use the resourceRecordsAdd and resourceRecordsRem to remove and add certain records to the zone.

@adelholtz If this is not yet possible via the SDK, we have to add it. Maybe also in the other SDKs as well.

stefan-sandberg commented 1 year ago

Hi!

I have to say, the speed and feedback at InternetX is incredible. I have been in contact with your development team before regarding the API and the speed of service is the best i´ve seen.

@Ephenodrom Thank you, I did see it it on the Zone Bulk Route (ZoneBasePatchRequest) in the SDK, maybe I misunderstood that they were available on the Zone Update in the API as well.

I checked the PatchRequest it takes a parameter of "Origin", not sure what this should be for Internetx Nameservers, can this be left out in the request? When changing a record for a specific InternetX nameserver, is it safe to assume that the record will be replicated to all nameservers even if only one is specified in the request?

Regards Stefan

Ephenodrom commented 1 year ago

@stefan-sandberg As far as I can see, the patch function is currently not available for a single update. Therefore you should wait until it is implemented. The bulk version is for updating multiple zones at once. The "origin" is the name of the zone. So if you have a zone for "domain.de" and using the nameserver "c.ns14.net", the path for the single update would look like :

PATCH /zone/domain.de/c.ns14.net
ChripIX commented 1 year ago

Hi Stefan, the /bulk/domain route now supports create also.

Regarding the zone property on the domain object. With the domain/info task we don't provide Information about the zone and are not planning to do so. One reason is that in rare cases there can be multiple zones on one domain.

If you want information about an specific zone please use the zone info task:

GET /zone/{name}/{systemNameServer}

Greetings, Chris

ChripIX commented 1 year ago

Hi Stefan, Task

PATCH /zone/{name}/{systemNameServer}

was added to the SDK.

To achieve your goal you should do something like this:

        $zoneBasePatchRequest = new ZoneBasePatchRequest();
        $zoneBasePatchRequest->setOrigin($request->name);
        $zoneBasePatchRequest->setVirtualNameServer($request->systemNameServer);

        if ( isset($request->resourcerecordsadd) ) {

            $resourceRecordsAdd = [];

            foreach ( $request->resourcerecordsadd as $resourceRecord ) {
                $resourceRecordsAdd[] = new ResourceRecord([
                    "name" => $resourceRecord['name'],
                    "type" => $resourceRecord['type'],
                    "value" => $resourceRecord['value']
                ]);
            }

            $zoneBasePatchRequest->setResourceRecordsAdd($resourceRecordsAdd);
        }

        if ( isset($request->resourcerecordsrem) ) {

            $resourceRecordsRem = [];

            foreach ( $request->resourcerecordsrem as $resourceRecord ) {
                $resourceRecordsRem[] = new ResourceRecord([
                    "name" => $resourceRecord['name'],
                    "type" => $resourceRecord['type'],
                    "value" => $resourceRecord['value']
                ]);
            }

            $zoneBasePatchRequest->setResourceRecordsRem($resourceRecordsRem);
        }

        $updatedZone = $domainrobot->zone->patch($zoneBasePatchRequest);

Greetings, Chris

stefan-sandberg commented 1 year ago

Super, many thanks for all the help.