# Alan Adı Edinme

https://dev.wisecp.com/tr/alan-adi-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ık**tı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

get/api/v1/client/domains/tlds

`Domains/GetTlds` cüzdan para birimi

Satıştaki uzantıları süreleri ve fiyatlarıyla döndürür.

Sorgu 1

tldstringTek bir uzantı. Listeyi daraltır ve süre başına fiyat tablosunu ekler.

Dönen alanlar data[] — 7

tldstringUzantı.

min_yearsintEn kısa kayıt süresi.

max_yearsintEn uzun kayıt süresi.

registerobjectBir yıllık kayıt fiyatı. Kampanya varsa indirim öncesi fiyat da gelir.

transferobjectBir yıllık transfer fiyatı. Uzantı transfere fiyatlanmamışsa boş gelir.

renewalobjectBir yıllık yenileme fiyatı.

register_yearsobjectSüre başına kayıt fiyatları. Yalnız tek uzantı sorulduğunda gelir; girişi olmayan süre satılmıyor demektir.

Hatalar 3

not_found404Sorulan uzantı satılmıyor.

domains_not_offered422Operatör alan adı satışı yapmıyor.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/client/domains/tlds?tld=com' \
  -H "Authorization: Bearer $CLIENT_KEY"
```

```javascript
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 ?? {});
```

```php
$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);
```

```php
// 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

post/api/v1/client/domains/check

`Domains/CheckDomain` kayıt kuruluşuna sorar

Bir alan adının alınabilirliğini canlı sorar.

Gövde 1

domainstringreqSorulacak tam alan adı.

Dönen alanlar data — 5

domainstringAyrıştırılmış alan adı.

statusstringSonuç: boş, dolu ya da bilinmiyor.

premiumboolSicil bu adı ayrıca fiyatlıyor mu.

premium_priceobjectÖzel fiyatlı adın müşteri fiyatı. Kâr marjı uygulanmış hâlde ve cüzdan para biriminde gelir.

registerobjectUzantının bir yıllık kayıt fiyatı. Yalnız boş ve özel fiyatlı olmayan adlarda gelir.

Hatalar 6

domains_not_offered422Operatör alan adı satışı yapmıyor.

domain_required422Alan adı gönderilmemiş.

domain_invalid422Geçerli bir alan adı değil.

tld_not_offered422Uzantı satılmıyor.

domain_check_throttled422Paylaşılan sorgu havuzu dolmuş. Kısa süre sonra yeniden deneyin.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
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"}'
```

```javascript
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);
```

```php
$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);
```

```php
// 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

post/api/v1/client/domains/register

`Domains/RegisterDomain` bakiye ya da kayıtlı kart

Yeni bir alan adı sipariş eder ve tahsil eder.

Gövde 12

termsboolreqŞartların kabulü. Doğru gönderilmelidir.

domainstringreqTam alan adı.

yearsintKayıt süresi. Uzantının penceresi içinde olmalı; özel fiyatlı adlar ne gönderilirse gönderilsin bir yıl kaydedilir.

accept_premiumboolÖzel fiyatlı adın fiyatını kabul. Böyle bir adda zorunludur.

addonsstring[]Birlikte alınacak ek hizmetler. Alan adı yönetimi, kayıt gizliliği ve yönlendirme; yalnız uzantı sunuyorsa.

nameserversstring[]Ad sunucuları. İkiden dörde; verilmezse hesabın varsayılanları uygulanır.

whois_profile_idintKayıtlı kayıt sahibi profili. Dört rolü birden doldurur.

contactsobjectRol bazında kişiler. Her rol ya kayıtlı bir profil numarası ya da satır içi bir kişi taşır ve o rol için profili ezer.

couponsstring[]Kupon kodları.

billing_profile_idintFatura profilinin numarası.

notesstringSipariş notu.

paymentobjectÖdeme kaynağı. Hesap bakiyesi ya da kayıtlı kart.

Dönen alanlar 201 — data — 7

order_idintSiparişin numarası.

numberstringSipariş numarası.

actionstringYapılan iş: kayıt ya da transfer.

domainobjectOluşan alan adı hizmeti. Hizmet numarası, ad, durum ve süre taşır.

totalobjectSipariş toplamı.

paymentobjectTahsilatın sonucu. Yol, durum, çekilen kart ve hata gerekçesini taşır.

invoiceobjectSipariş faturasının özeti.

Hatalar 10

not_found404Kayıt sahibi profili, fatura profili ya da kart bu hesaba ait değil.

domains_not_offered422Operatör alan adı satışı yapmıyor.

terms_required422Şartlar kabul edilmemiş.

verification_required422Hesap doğrulaması bekliyor.

tld_not_offered422Uzantı satılmıyor.

years_invalid422Süre uzantının penceresi dışında.

addon_not_offered422Ek hizmet bu uzantıda sunulmuyor ya da anahtar tanınmıyor.

nameservers_invalid422Ad sunucusu sayısı ya da biçimi geçersiz.

contact_field_required422Satır içi kişide zorunlu bir alan eksik. Şirket dışında her alan zorunludur.

insufficient_balance422Cüzdan toplamı karşılamıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
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"}}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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

post/api/v1/client/domains/transfer

`Domains/TransferDomain` kod gerekebilir

Başka bir sağlayıcıdaki alan adını buraya taşır.

Gövde 11

termsboolreqŞartların kabulü. Doğru gönderilmelidir.

domainstringreqTam alan adı.

auth_codestringMevcut sağlayıcıdan alınan transfer kodu. Uzantı işaretliyse zorunludur ve her durumda hizmete yazılır.

addonsstring[]Birlikte alınacak ek hizmetler. Alan adı yönetimi, kayıt gizliliği ve yönlendirme; yalnız uzantı sunuyorsa.

nameserversstring[]Ad sunucuları. İkiden dörde; verilmezse hesabın varsayılanları uygulanır.

whois_profile_idintKayıtlı kayıt sahibi profili. Dört rolü birden doldurur.

contactsobjectRol bazında kişiler. Her rol ya kayıtlı bir profil numarası ya da satır içi bir kişi taşır ve o rol için profili ezer.

couponsstring[]Kupon kodları.

billing_profile_idintFatura profilinin numarası.

notesstringSipariş notu.

paymentobjectÖdeme kaynağı. Hesap bakiyesi ya da kayıtlı kart.

Dönen alanlar 201 — data — 7

order_idintSiparişin numarası.

numberstringSipariş numarası.

actionstringYapılan iş: kayıt ya da transfer.

domainobjectOluşan alan adı hizmeti. Hizmet numarası, ad, durum ve süre taşır.

totalobjectSipariş toplamı.

paymentobjectTahsilatın sonucu. Yol, durum, çekilen kart ve hata gerekçesini taşır.

invoiceobjectSipariş faturasının özeti.

Hatalar 8

domains_not_offered422Operatör alan adı satışı yapmıyor.

terms_required422Şartlar kabul edilmemiş.

transfer_not_offered422Uzantı transfere fiyatlanmamış.

auth_code_required422Uzantı transfer kodu istiyor ve kod gönderilmemiş.

domain_not_registered422Canlı sorgu adı boş buldu. Kayıtlı olmayan bir ad transfer edilemez.

domain_transfer_locked422Canlı sorgu transfer kilidi gösteriyor. Kilidi mevcut sağlayıcıda açın.

checkout_blocked422Bir kanca siparişi reddetti.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
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"}}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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

get/api/v1/client/domains/{domain}/transfer-lock

`Domains/GetTransferLock` canlı okur

Alan adının transfere kapalı olup olmadığını sağlayıcıdan okur.

Dönen alanlar data — 2

lockedboolKilit açık mı.

liveboolDeğer sağlayıcıdan mı geldi. Yanlışsa son bilinen kayıt gösteriliyordur.

Hatalar 2

not_found404Alan adı bulunamadı, size ait değil ya da erişimi kısıtlanmış.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/transfer-lock' \
  -H "Authorization: Bearer $CLIENT_KEY"
```

```javascript
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();
```

```php
$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);
```

```php
// 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

put/api/v1/client/domains/{domain}/transfer-lock

`Domains/UpdateTransferLock` sağlayıcıya yazar

Alan adını transfere kapatır ya da açar.

Gövde 1

lockedboolreqYeni kilit durumu. Gerçek bir mantıksal değer olmalıdır; metin ve sayı reddedilir.

Dönen alanlar data — 1

lockedboolSağlayıcının onayladığı yeni durum.

Hatalar 6

not_found404Alan adı bulunamadı, size ait değil ya da erişimi kısıtlanmış.

not_actionable422Alan adı etkin durumda değil.

locked_invalid422Değer mantıksal değil.

lock_not_supported422Sağlayıcı modülünde kilit yok.

lock_rejected422Bir kanca değişikliği reddetti.

lock_failed422Sağlayıcı değişikliği reddetti.

lock_failed500Sağlayıcıya ulaşılamadı, yanıt gelmedi ya da işlem gerekçe bildirilmeden düştü. Daha sonra yeniden deneyin.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
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}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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

post/api/v1/client/domains/{domain}/auth-code

`Domains/SendAuthCode` yanıtta kod yok

Transfer kodunu alan adı sahibinin e-postasına gönderir.

Gövde —

——Gövde gerekmez, boş gönderin. Alan adını adres belirler, adres de hesabın kayıtlı e-postasıdır; kodu başka bir yere gönderecek alan yok.

Dönen alanlar data — 1

sentboolGönderim çalıştı mı. Kodun kendisi yanıtta yer almaz.

Hatalar 5

not_found404Alan adı bulunamadı, size ait değil ya da erişimi kısıtlanmış.

not_actionable422Alan adı etkin durumda değil.

auth_code_not_supported422Sağlayıcı modülü kod vermiyor.

auth_code_rejected422Bir kanca isteği reddetti.

auth_code_failed422Sağlayıcı kodu veremedi.

auth_code_failed500Sağlayıcıya ulaşılamadı, yanıt gelmedi ya da işlem gerekçe bildirilmeden düştü. Daha sonra yeniden deneyin.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X POST 'https://panel.ornek.com/api/v1/client/domains/example.com/auth-code' \
  -H "Authorization: Bearer $CLIENT_KEY"
```

```javascript
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();
```

```php
$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);
```

```php
// 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

put/api/v1/client/domains/{domain}/auth-code

`Domains/SaveAuthCode` anahtarın sahibi

Devam eden bir transfer için kodu günceller.

Gövde 1

codestringreqYeni transfer kodu. İşaretleme ayıklanır ve boşluklar kırpılır.

Dönen alanlar data — 1

savedboolKaydetme çalıştı mı.

Hatalar 4

not_found404Alan adı bulunamadı, size ait değil ya da erişimi kısıtlanmış.

not_actionable422Alan adı süren bir gelen transfer değil.

code_required422Kod boş ya da temizlendikten sonra boş kalıyor.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
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"}'
```

```javascript
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();
```

```php
$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);
```

```php
// 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

get/api/v1/client/domains/{domain}/transfer-status

`Domains/GetTransferStatus` canlı sorar

Devam eden bir transferin durumunu sağlayıcıdan okur.

Dönen alanlar data — 4

service_idintAlan adının hizmet numarası.

domainstringAlan adı.

statusstringHizmetin ham durumu.

transferobject transferTransferin durumu.

statestringSürüyor mu bitti mi.

liveboolSağlayıcı canlı yanıtladı mı.

messagestringSağlayıcının ilerleme notu. Canlı okuma başarısızsa hata mesajını taşır.

expires_atstringTamamlanınca bildirilen bitiş tarihi.

last_checkedstringEn son ne zaman sorulduğu. Bu çağrı değeri günceller.

Hatalar 3

not_found404Alan adı bulunamadı, size ait değil ya da erişimi kısıtlanmış.

not_a_transfer422Alan adı transfer koduyla edinilmemiş.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/client/domains/example.com/transfer-status' \
  -H "Authorization: Bearer $CLIENT_KEY"
```

```javascript
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);
```

```php
$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);
```

```php
// 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

> **Bilinmiyor yanıtı boş demek değildir**
> 
> 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.

> **Özel fiyatlı ad bir yıl kaydedilir**
> 
> 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.

> **Kilidi açmak alan adını savunmasız bırakır**
> 
> 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.

> **Transfer kodu yanıtta dönmez**
> 
> 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 değeri her zaman canlı değildir**
> 
> 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 ödemeyle bitmez**
> 
> 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.

> **Tescil de sonradan tamamlanabilir**
> 
> 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

- [Sahip Olunan Alan Adları](https://dev.wisecp.com/tr/sahip-olunan-alan-adlari)
- [Alan Adı Kişileri ve Gizlilik](https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik)
- [Ad Sunucuları ve Kayıtlar](https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar)
