Package for simple and safe access to Subreg.cz API.
Install via Composer:
composer install redbitcz/subreg-api-phpIt requires PHP version 7.3 and supports PHP up to 7.4.
You can use Package with two ways:
- raw access: just call raw command and get raw response – the Package only handle Request authentication, Connection or Server errors and check basic Envelope od Response data.
- context access: full service access which is allow traversing over data, checks Request and Response data by strict Schema, access to all properties via strict-typed Getters.
For more information see documentation bellow.
For authentication to API use Credentials class:
$credentials = new \Redbitcz\SubregApi\Credentials('microsoft', 'password');If you are using Subreg administrator access to account, use '#' to join
username and administrator name:
$credentials = new \Redbitcz\SubregApi\Credentials('gates#microsoft', 'password');For more information about administrator access visit Subreg API Login documentation page.
Package is process all requests to Production Environment.
If you need try your App to test Environment, you can change URL Endpoint:
$credentials = new \Redbitcz\SubregApi\Credentials('microsoft', 'password', 'https://ote-soap.subreg.cz/cmd.php');Use Credentials object to create Client.
$client = new \Redbitcz\SubregApi\Client($credentials);Client has only method: $client->call() to send authenticated request to Subreg.cz API.
$client->call('Check_Domain', ['domain' => 'subreg.cz'])->getData();
/*
Returns the Array:
[
'name' => 'subreg.cz',
'avail' => 0,
'price' =>
[
'amount' => 165.0,
'amount_with_trustee' => 165.0,
'premium' => 0,
'currency' => 'CZK',
],
]
*/Client can failures on so many levels.
- Invalid request – when you trying submit invalid request, client throws
InvalidRequestException, - Connection problem – offline, invalid URL, server problem, etc., client throws
ConnectionException, - Server response error – API server is working, but can't finish your request, domain doesn't exists, etc., client
throws
ResponseErrorException, - Another problem with response – response is missing required fiels, etc., client throws
InvalidResponseException.
ResponseErrorException (and all descendants Exceptions) contains whole response, use:
$exception->getResponse();Response is being wrapped to Response envelope for better handling. Response always contains an array.
Returns all data from Response as received from API server.
Returns one item from Response array. If item doesn't exists, returns null.
It allows only access to first-level of response array (no recursive access into deep structured data).
Returns true when item exists in Response, false otherwise.
Returns one item from Response array. If item doesn't exists, throws InvalidResponseException.
Creating Client instance requires pre-create Credentials first.
$credentials = new \Redbitcz\SubregApi\Credentials('microsoft', 'password');
$client = new \Redbitcz\SubregApi\Client($credentials);It's can be simplified by Factory helper:
$client = \Redbitcz\SubregApi\Factory::createClient('microsoft', 'password');If you are using administrator access to account, use:
$client = \Redbitcz\SubregApi\Factory::createClientForAdministrator('microsoft', 'gates', 'password');$client = \Redbitcz\SubregApi\Factory::createClient('microsoft', 'password');
$response = $client->call('Info_Domain', ['domain' => 'subreg.cz']);
echo "Domain {$response->getItem('name')} is expiring at {$response->getItem('exDate')}.";
// Domain subreg.cz is expiring at 2023-04-22.At first create Context object instance. Use Factory helper for simple create it:
$context = \Redbitcz\SubregApi\Factory::createContext('microsoft', 'password');With Context object you can access to API resources comfortably by
fluent-like properties.
foreach ($context->domain()->list() as $domain) {
echo "Domain {$domain->getName()} is expiring at {$domain->getExpire()->format('Y-m-d')}.\n";
}
// Domain my-first-domain.cz is expiring at 2023-04-22.
// Domain my-second-domain.cz is expiring at 2020-01-01.
// Domain my-third-domain.cz is expiring at 2021-08-30.
// Domain my-fourth-domain.cz is expiring at 2022-01-15.
// Domain my-fifth-domain.cz is expiring at 2020-05-13.
// Domain my-sixth-domain.cz is expiring at 2020-05-13.NOTE: Context access is covering only few most-used of Subreg.cz API commands.
Package is still under development.
Bulk renew of expiring domains:
$expiringDomains = $context->domain()->list()->filter(['expire < ' => new DateTime('+ 1 month')]);
foreach ($expiringDomains as $domain) {
$order = $domain->renew(1); // 1 year
echo "Domain {$domain->getName()} is renewed by order ID: {$order->getId()}.\n";
}
// Domain my-second-domain.cz is renewed by order ID: 12345000.
// Domain my-fifth-domain.cz is renewed by order ID: 12345001.
// Domain my-sixth-domain.cz is renewed by order ID: 12345002.Remove deprecated SPF record from domains zones for 3th+ level domain:
foreach ($context->domain()->list() as $domain) {
foreach ($domain->dns()->list()->filter(['!isType' => 'SPF', '@getFqn() ~ ' => '/\w+\.\w+\.\w+$/']) as $dnsRecord) {
$dnsRecord->delete();
echo "Removed SPF record for {$dnsRecord->getFqn()}.\n";
}
}
// Removed SPF record for subdomain.my-first-domain.cz.
// Removed SPF record for cluster-1.region-eu.my-thitd-domain.cz.