ओपन-सोर्स PHP
Registrar API
NameSilo, GoDaddy, Namecheap और Dynadot पर डोमेन प्रबंधित करने के लिए एक ही PHP लाइब्रेरी — साथ ही ज़ोन, DNS और कैश के लिए एक Cloudflare अडैप्टर। उपलब्धता जाँच, पंजीकरण, नवीनीकरण, स्थानांतरण, DNS रिकॉर्ड और नेमसर्वर, सब कुछ एक ही सुसंगत इंटरफ़ेस के ज़रिए।
composer require josuamarcelc/registrar-api
अडैप्टर
समर्थित रजिस्ट्रार
ब्रांड स्ट्रिंग से अडैप्टर चुनें। सभी अडैप्टर समान मेथड सिग्नेचर साझा करते हैं, इसलिए आप अपना कोड दोबारा लिखे बिना रजिस्ट्रार बदल सकते हैं।
लाइव डेमो
डोमेन उपलब्धता जाँचें
सर्वर की ओर से NameSilo अडैप्टर के ज़रिए एक असली checkAvailability() कॉल चलाता है। अल्पविराम, स्पेस या नई पंक्ति से अलग करके अधिकतम 10 डोमेन दर्ज करें। हर 5 मिनट में 10 जाँच तक सीमित।
तुरंत शुरू करें
काम करने वाली कॉल के लिए तीन पंक्तियाँ
<?php
require __DIR__ . '/vendor/autoload.php';
use RegistrarAPI\RegistrarAPI;
$api = RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_NAMESILO_API_KEY'
]);
$result = $api->checkAvailability(['example.com', 'mybrand.io']);
print_r($result);
क्रेडेंशियल
प्रति-अडैप्टर कॉन्फ़िग
हर अडैप्टर एक कॉन्फ़िग ऐरे लेता है। नीचे वह न्यूनतम है जिसकी आपको आमतौर पर ज़रूरत होती है।
NameSilo
RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_KEY',
]); GoDaddy
RegistrarAPI::make('godaddy', [
'api_key' => 'KEY',
'api_secret' => 'SECRET',
// optional: 'base' => 'https://api.godaddy.com/v1'
]); Namecheap
RegistrarAPI::make('namecheap', [
'api_user' => 'USERNAME',
'api_key' => 'KEY',
'client_ip' => 'SERVER_PUBLIC_IP',
// optional: 'base' => 'https://api.namecheap.com/xml.response'
]); Dynadot
RegistrarAPI::make('dynadot', [
'api_key' => 'KEY',
]); मेथड
सामान्य ऑपरेशन
हर अडैप्टर समान मेथड सिग्नेचर लागू करता है। रिटर्न वैल्यू सामान्यीकृत एसोसिएटिव ऐरे होती हैं।
// Availability
$api->checkAvailability(['example.com']);
// Lifecycle
$api->registerDomain('example.com', [
'years' => 1,
'privacy' => true,
'auto_renew' => true,
'registrant' => [ /* contact fields */ ],
]);
$api->renewDomain('example.com', 1);
$api->transferDomain('example.com', ['auth_code' => 'EPP']);
$api->getDomain('example.com');
// DNS records
$api->getDNS('example.com');
$api->setDNS('example.com', [
['type'=>'A', 'host'=>'@', 'value'=>'203.0.113.10', 'ttl'=>600],
['type'=>'CNAME','host'=>'www', 'value'=>'@', 'ttl'=>600],
]);
$api->addDNS('example.com', ['type'=>'TXT','host'=>'@','value'=>'v=spf1 -all','ttl'=>300]);
$api->delDNS('example.com', ['type'=>'TXT','host'=>'@']);
// Nameservers
$api->setNameServers('example.com', ['ns1.host.com','ns2.host.com']);
// Escape hatch — call any raw endpoint the adapter doesn't wrap
$api->raw('domains/suggestions?query=mybrand&limit=5');
रिस्पॉन्स का स्वरूप
आपको क्या मिलता है
bool — सफलता की त्वरित जाँचcheckAvailability() द्वारा भरे गए बकेटgetDNS() द्वारा लौटाया गया {type,host,value,ttl,prio?} का ऐरेबोनस
Cloudflare अडैप्टर
वही लाइब्रेरी, वही स्वरूप, लेकिन ज़ोन, DNS रिकॉर्ड, कैश परज और मुफ़्त टॉगल (Always HTTPS, Auto HTTPS Rewrites, Brotli, Minify, Rocket Loader, Dev Mode) के लिए।
$cf = RegistrarAPI::make('cloudflare', ['api_token' => 'CF_TOKEN']);
$cf->createZone('example.com');
$cf->setDNS('example.com', [
['type'=>'A','host'=>'@','value'=>'198.51.100.10','ttl'=>300,'proxied'=>true],
]);
$cf->purgeEverything('example.com'); योगदान करें
एक ही फ़ाइल में नया रजिस्ट्रार जोड़ें
src/adapters/ में एक क्लास बनाएँ जो BaseAdapter को एक्सटेंड करती हो और अमूर्त मेथड लागू करें। Composer इसे स्वतः उठा लेगा।
namespace RegistrarAPI\Adapters;
use RegistrarAPI\Core\BaseAdapter;
class MyRegistrar extends BaseAdapter {
protected string $brand = 'myregistrar';
public function checkAvailability(array $domains): array { /* ... */ }
public function registerDomain(string $domain, array $opts): array { /* ... */ }
public function renewDomain(string $domain, int $years=1, array $opts=[]): array { /* ... */ }
public function transferDomain(string $domain, array $opts): array { /* ... */ }
public function getDomain(string $domain): array { /* ... */ }
public function getDNS(string $domain): array { /* ... */ }
public function setDNS(string $domain, array $records): array { /* ... */ }
public function addDNS(string $domain, array $record): array { /* ... */ }
public function delDNS(string $domain, array $selector): array { /* ... */ }
public function setNameServers(string $domain, array $nameservers): array { /* ... */ }
public function raw(string $op, array $params=[]): array { /* ... */ }
}