Alan Adı Edinme
Alan adı kaydeden, transfer eden ve transfer denetimini yöneten dokuz uç.
Genel Bakış
Bir alan adı iki yoldan edinilir: sıfırdan kaydetmek ya da başka bir sağlayıcıdan taşımak. Bu dokuz uç iki yolu ve ikisini çevreleyen transfer denetimini kapsar.
Sipariş vermeden önce iki soru sorulur: uzantı ne kadar ve hangi sürelerle satılıyor, ve o ad şu anda boş mu. İkinci sorunun yanıtı anlıktır.
Transfer denetimi iki yönlüdür. Alan adınızı başkasına vermek için kilidi açar ve kodu istersiniz; buraya taşırken kilidi karşı tarafta açtırır ve kodu buraya yazarsınız.
Referans
Uzantı Fiyatlarını Okuma
Satıştaki uzantıları süreleri ve fiyatlarıyla döndürür.
curl 'https://panel.ornek.com/api/v1/client/domains/tlds?tld=com' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/domains/tlds?tld=com', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const years = Object.keys(data[0].register_years ?? {});$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/tlds?tld=com');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sure basina fiyat YALNIZ tek uzanti sorunca gelir: genel listede o tablo yoktur.
$one = Kernel::internal('client:Domains/GetTlds', ['owner_id' => $uid, 'tld' => 'com'])['data'][0];
$priced = array_keys($one['register_years'] ?? []);Alan Adının Boş Olup Olmadığını Sorma
Bir alan adının alınabilirliğini canlı sorar.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/check' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"domain":"example-shop.com"}'const res = await fetch('https://panel.ornek.com/api/v1/client/domains/check', {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ domain }),
});
const { data } = await res.json();
if (data.premium) showPremiumPrice(data.premium_price);$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/check');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['domain' => $name]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// BILINMIYOR yanitini BOS sanmayin: kayit kurulusuna ulasilamamis demektir, siparis yine dusebilir.
$r = Kernel::internal('client:Domains/CheckDomain',
['owner_id' => $uid, 'domain' => $name])['data'];
$safe = $r['status'] === 'available';Alan Adı Kaydetme
Yeni bir alan adı sipariş eder ve tahsil eder.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/register' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"terms":true,"domain":"example-shop.com","years":1,"payment":{"method":"balance"}}'const res = await fetch('https://panel.ornek.com/api/v1/client/domains/register', {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
terms: true,
domain,
years: 1,
whois_profile_id: profileId,
payment: { method: 'balance' },
}),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/register');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($order),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// OZEL FIYATLI ad ne gonderilirse gonderilsin BIR YIL kaydedilir ve onay bayragi ister.
$c = Kernel::internal('client:Domains/CheckDomain',
['owner_id' => $uid, 'domain' => $name])['data'];
Kernel::internal('client:Domains/RegisterDomain', ['owner_id' => $uid, 'terms' => true,
'domain' => $name, 'accept_premium' => $c['premium'],
'payment' => ['method' => 'balance']]);Alan Adı Transferi
Başka bir sağlayıcıdaki alan adını buraya taşır.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/transfer' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"terms":true,"domain":"example.com","auth_code":"EPP-CODE","payment":{"method":"balance"}}'const res = await fetch('https://panel.ornek.com/api/v1/client/domains/transfer', {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ terms: true, domain, auth_code: code, payment }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/transfer');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($order),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Transfer HER ZAMAN bir yildir ve odeme aninda bitmez: ilerlemeyi transfer durumu ucundan izleyin.
$o = Kernel::internal('client:Domains/TransferDomain', ['owner_id' => $uid] + $order)['data'];
$sid = $o['domain']['service_id'];Transfer Kilidini Okuma
Alan adının transfere kapalı olup olmadığını sağlayıcıdan okur.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/transfer-lock' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/transfer-lock`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (! data.live) warnStaleValue();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/transfer-lock');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// CANLI DEGIL isareti gelirse deger eski olabilir: kilit kararini buna bakarak verin.
$l = Kernel::internal('client:Domains/GetTransferLock',
['owner_id' => $uid, 'domain' => $domain])['data'];
$trusted = $l['live'];Transfer Kilidini Değiştirme
Alan adını transfere kapatır ya da açar.
curl -X PUT 'https://panel.ornek.com/api/v1/client/domains/example.com/transfer-lock' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"locked":false}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/transfer-lock`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ locked: false }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/transfer-lock');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['locked' => false]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kilidi ACMAK alan adini kacirilmaya acar: tasima bitince hemen geri kilitleyin.
Kernel::internal('client:Domains/UpdateTransferLock',
['owner_id' => $uid, 'domain' => $domain, 'locked' => false]);Transfer Kodunu İsteme
Transfer kodunu alan adı sahibinin e-postasına gönderir.
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/example.com/auth-code' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/auth-code`, {
method: 'POST',
headers: { Authorization: `Bearer ${clientKey}` },
});
if (res.ok) tellUserToCheckEmail();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/auth-code');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kod YANITTA DONMEZ: sahibinin e-postasina gider, bu bilincli bir guvenlik karariddir.
Kernel::internal('client:Domains/SendAuthCode', ['owner_id' => $uid, 'domain' => $domain]);Gelen Transfer Kodunu Kaydetme
Devam eden bir transfer için kodu günceller.
curl -X PUT 'https://panel.ornek.com/api/v1/client/domains/example.com/auth-code' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"code":"NEW-EPP-CODE"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/auth-code`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ code }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/auth-code');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['code' => $code]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bu uc KAYDEDER, transferi yeniden BASLATMAZ: kod degistiyse sagalyiciya yeni deneme gerekir.
Kernel::internal('client:Domains/SaveAuthCode',
['owner_id' => $uid, 'domain' => $domain, 'code' => $code]);Transferin Nerede Olduğunu Sorma
Devam eden bir transferin durumunu sağlayıcıdan okur.
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/transfer-status' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/transfer-status`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
showProgress(data.transfer.state, data.transfer.message);$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/transfer-status');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Her cagri saglaayiciya CANLI gider: bir izleme isinde sik sik cagirmayin, saatlik yeter.
$t = Kernel::internal('client:Domains/GetTransferStatus',
['owner_id' => $uid, 'domain' => $domain])['data'];
$done = $t['transfer']['state'] === 'completed';Tuzaklar
Uygunluk sorgusu üç yanıt verir ve bilinmiyor bunlardan biridir: kayıt kuruluşuna ulaşılamamıştır. Bu yanıtı boş sayıp sipariş vermek kayıt aşamasında başarısızlığa yol açar. Yalnız açık bir boş yanıtı güvenli sayın.
Sicilin ayrıca fiyatlandırdığı bir adda süre alanı yok sayılır ve kayıt bir yıl olur. Ayrıca bu adlarda özel fiyatı kabul eden işaret zorunludur, yoksa sipariş reddedilir. Fiyatı uygunluk sorgusunun yanıtından okuyun.
Transfer kilidi alan adınızın izinsiz taşınmasını engeller. Kilidi açtığınızda o koruma kalkar ve açık kaldığı sürece geçerli olmaz. Taşıma işi bittiğinde kilidi hemen geri kapatın; kimse bunu sizin için yapmaz.
Kod isteme ucu yalnız gönderildi der; kodun kendisi alan adı sahibinin e-postasına gider. Bu bilinçli bir güvenlik kararıdır: bir API anahtarı ele geçse bile alan adı tek çağrıyla taşınamaz. Kodu arayüzde göstermeye çalışmayın.
Kilit okuma ucu bir canlı işareti taşır. Sağlayıcıda okuyucu yoksa ya da okuma düşerse son bilinen değer döner ve bu değer gerçeği yansıtmayabilir. Kilit durumuna göre karar veren bir akışta bu işareti mutlaka denetleyin.
Transfer siparişi ödendiğinde iş başlar: alan adı karşı tarafta onay bekler ve bu günler sürebilir. Süre her koşulda bir yıldır. İlerlemeyi transfer durumu ucundan izleyin, ama her çağrı sağlayıcıya gittiği için sık sormayın.
Bazı tescil kuruluşları yeni adı kuyruğa alır ve sonra yanıtlar. O zamana kadar alan adı inprocess görünür; kuruluş onaylayınca active olur. Panel bunu 15 dakikada bir kendiliğinden sorar; durumu alan adı okuma ucundan izleyin.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.