Open-source PHP

Registrar API

Isang PHP library para pamahalaan ang mga domain sa NameSilo, GoDaddy, Namecheap, at Dynadot — kasama ang Cloudflare adapter para sa zones, DNS, at cache. Availability check, pagpaparehistro, pag-renew, paglilipat, DNS records, at nameservers, lahat sa pamamagitan ng iisang tugmang interface.

composer require josuamarcelc/registrar-api

Mga adapter

Mga suportadong registrar

Pumili ng adapter gamit ang brand string. Lahat ng adapter ay may parehong method signatures, kaya puwede kang lumipat ng registrar nang hindi muling isinusulat ang iyong code.

NameSilo'namesilo'
GoDaddy'godaddy'
Namecheap'namecheap'
Dynadot'dynadot'
CloudflareDNS / zones

Live Demo

Tingnan kung available ang domain

Nagpapatakbo ng totoong checkAvailability() na tawag sa pamamagitan ng NameSilo adapter, sa panig ng server. Maglagay ng hanggang 10 domain na pinaghihiwalay ng kuwit, espasyo, o bagong linya. Limitado sa 10 check kada 5 minuto.

Mabilis na simula

Tatlong linya para sa gumaganang tawag

<?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);

Mga kredensyal

Config kada adapter

Ang bawat adapter ay tumatanggap ng config array. Nasa ibaba ang pinakamababang kailangan mo kadalasan.

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',
]);

Mga method

Mga karaniwang operasyon

Ipinapatupad ng bawat adapter ang parehong method signatures. Ang mga return value ay normalized associative array.

// 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');

Hugis ng response

Ano ang matatanggap mo

okbool — mabilis na tsek kung tagumpay
raworihinal na na-parse na payload ng registrar (JSON o XML-bilang-array)
httpHTTP status code kapag available
errtransport-level na error string (kapag nabigo lang ang tawag)
available / unavailable / invalidmga bucket na pinupunan ng checkAvailability()
recordsarray ng {type,host,value,ttl,prio?} na ibinabalik ng getDNS()

Bonus

Cloudflare adapter

Parehong library, parehong hugis, pero para sa zones, DNS records, cache purge, at mga libreng toggle (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');

Mag-ambag

Magdagdag ng bagong registrar sa isang file

Gumawa ng class sa src/adapters/ na nag-e-extend sa BaseAdapter at ipatupad ang mga abstract method. Awtomatiko itong kukunin ng 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 { /* ... */ }
}