# Sahip Olunan Alan Adları

https://dev.wisecp.com/tr/sahip-olunan-alan-adlari

Sahip olunan alan adını okuyan, ayarlayan, yenileyen ve ek hizmet açan beş uç.

## Genel Bakış

Alan adı da bir hizmettir, ama **kendi uçları** vardır: hizmet uçlarında bulunamadı yanıtı verir. Bu beş uç sahip olunan adı okur, ayarlar, yeniler ve ek hizmetlerini açar.

Adres alanında hem **alan adının kendisi** hem hizmet numarası kabul edilir; ikisi de aynı kaydı açar.

Detaydaki yetenek listesi hangi işlerin yapılabileceğini söyler. Sağlayıcıdan sağlayıcıya değişir, bu yüzden arayüzü **o listeden** kurmak gerekir.

## Referans

### Alan Adlarını Listeleme

get/api/v1/client/domains

`Domains/GetDomains` anahtarın sahibi

Hesabın alan adlarını döndürür.

Sorgu 5

pageintKaçıncı sayfa.

limitintSayfa başına satır. En çok 100.

statusstringDurum süzgeci. Rozet gruplarını alır.

tldstringYalnız bu uzantının alan adları.

searchstringAlan adında arar.

Dönen alanlar data[] — 11 + meta — 4

idintAlan adının hizmet numarası.

namestringTam alan adı.

tldstringUzantı. Çok parçalı uzantılarda noktalar korunur.

statusstringHam hizmet durumu.

auto_renewboolAlan adı bazlı otomatik yenileme.

lockedboolTransfer kilidinin son bilinen değeri. Canlı değeri kilit ucundan okunur.

whois_privacyboolKayıt gizliliğinin son bilinen değeri.

priceobjectDönemsel fiyat.

yearsintKayıt süresi.

registered_atstringKayıt tarihi.

due_datestringBitiş ve yenileme tarihi.

totalintToplam alan adı. Meta altında döner.

pageintBulunulan sayfa.

limitintSayfa boyutu.

next_pageintSonraki sayfa.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

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

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/client/domains?status=active', {
  headers: { Authorization: `Bearer ${clientKey}` },
});

const { data } = await res.json();
const expiring = data.filter((d) => d.due_date && d.due_date < horizon);
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/client/domains?status=active');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $clientKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Kilit ve gizlilik degerleri AYNADIR: guncel degil, son kaydedilen degerdir.
$rows = Kernel::internal('client:Domains/GetDomains', ['owner_id' => $uid])['data'];
// canlisi icin: client:Domains/GetTransferLock
```

### Alan Adını Okuma

get/api/v1/client/domains/{domain}

`Domains/GetDomain` yetenek sondası

Alan adını, sağlayıcının yeteneklerini ve yenileme seçeneklerini döndürür.

Dönen alanlar data — 17

idintAlan adının hizmet numarası.

namestringTam alan adı.

tldstringUzantı. Çok parçalı uzantılarda noktalar korunur.

statusstringHam hizmet durumu.

auto_renewboolAlan adı bazlı otomatik yenileme.

lockedboolTransfer kilidinin son bilinen değeri. Canlı değeri kilit ucundan okunur.

whois_privacyboolKayıt gizliliğinin son bilinen değeri.

priceobjectDönemsel fiyat.

yearsintKayıt süresi.

registered_atstringKayıt tarihi.

due_datestringBitiş ve yenileme tarihi.

order_idintAlan adını doğuran siparişin numarası.

auto_renew_lockedboolHesap geneli otomatik ödeme açık mı. Açıkken alan adı bazlı anahtar değiştirilemez.

billing_profile_idintAtanan fatura profili.

nameserversstring[]Kayıtlı ad sunucuları. Boş yuvalar düşer.

capabilitiesobjectSağlayıcının desteklediği işler. On bir alan: ad sunucusu, transfer kilidi, transfer kodu, alt ad sunucusu, kayıt okuma ve yazma, güvenlik imzası, e-posta ve adres yönlendirme, kayıt sahibi bilgileri ve gizlilik.

addonsobjectAlan adı ek hizmetlerinin durumu. Her biri durum, ücretsiz olup olmadığı, fiyat ve bekleyen fatura taşır.

renewalobjectYenileme seçenekleri. Uygunluk, abonelik engeli, sicil tavanı ve fiyatlı süre satırlarını taşır.

verificationstringKayıt sahibi doğrulamasının durumu. Belge yüklemek yalnız panelde yapılır.

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' \
  -H "Authorization: Bearer $CLIENT_KEY"
```

```javascript
const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}`, {
  headers: { Authorization: `Bearer ${clientKey}` },
});

const { data } = await res.json();
if (data.capabilities.dns_records) showDnsTab();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $clientKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Arayuzu YETENEKLERDEN kurun: her saglayici her isi yapmaz, kapali bir yuzey 422 ile doner.
$d = Kernel::internal('client:Domains/GetDomain',
    ['owner_id' => $uid, 'domain' => $domain])['data'];

$tabs = array_keys(array_filter($d['capabilities']));
```

### Alan Adı Tercihlerini Değiştirme

patch/api/v1/client/domains/{domain}

`Domains/UpdateDomain` iki alan

Otomatik yenilemeyi ve fatura profilini değiştirir.

Gövde 2

auto_renewboolAlan adı bazlı otomatik yenileme. Yalnız etkin alan adlarında ve gerçek bir mantıksal değerle.

billing_profile_idintFatura profilinin numarası. Sıfır hesabın varsayılanına döner.

Dönen alanlar data — 17

dataobjectGüncel alan adı. Okuma ucuyla aynı şekildedir.

Hatalar 7

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

nothing_to_update422Gövdede güncellenebilir alan yok.

auto_renew_invalid422Değer mantıksal değil.

not_actionable422Alan adı etkin değilken otomatik yenileme gönderilmiş.

autorenew_locked422Hesap geneli otomatik ödeme açık.

no_auto_pay_source422Tahsil edilebilecek bir kaynak yok.

billing_profile_rejected422Bir kanca profil atamasını reddetti.

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

```bash
curl -X PATCH 'https://panel.ornek.com/api/v1/client/domains/example.com' \
  -H "Authorization: Bearer $CLIENT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"auto_renew":true}'
```

```javascript
const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${clientKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ auto_renew: true }),
});

if (res.status === 422) explainLock(await res.json());
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $clientKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['auto_renew' => true]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Otomatik yenileme kapaliyken alan adi SESSIZCE suresi dolar: uyari kurmak size kalir.
Kernel::internal('client:Domains/UpdateDomain',
    ['owner_id' => $uid, 'domain' => $domain, 'auto_renew' => true]);
```

### Yenileme Faturası Kesme

post/api/v1/client/domains/{domain}/renew

`Domains/RenewDomain` fatura üretir

Alan adı için istenen yıl sayısı kadar yenileme faturası keser.

Gövde 1

yearsintreqYenileme süresi. Detaydaki fiyatlı süre satırlarından biri olmalıdır.

Dönen alanlar data — 8

invoice_idintFaturanın numarası.

numberstringGörünen numara.

statusstringHam fatura durumu.

statestringMüşteriye gösterilen durum.

totalobjectVergili toplam.

created_atstringKesim tarihi.

paid_atstringÖdenme tarihi.

due_datestringVade tarihi.

Hatalar 4

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

not_renewable422Alan adı yenilenebilir durumda değil ya da bir abonelik tahsil ediyor.

years_invalid422Süre sunulan yenileme süreleri arasında değil.

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/example.com/renew' \
  -H "Authorization: Bearer $CLIENT_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"years":2}'
```

```javascript
const d = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}`, {
  headers: { Authorization: `Bearer ${clientKey}` },
}).then((r) => r.json());

const terms = d.data.renewal.terms;

await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/renew`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${clientKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ years: terms[0].years }),
});
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/renew');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $clientKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['years' => 2]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Sunulan sureler SICIL TAVANIYLA sinirlidir: on yillik bir ad iki yil daha uzatilamayabilir.
$d = Kernel::internal('client:Domains/GetDomain',
    ['owner_id' => $uid, 'domain' => $domain])['data'];

$years = array_column($d['renewal']['terms'], 'years');
```

### Alan Adı Ek Hizmeti Alma

post/api/v1/client/domains/{domain}/addons/{key}

`Domains/BuyDomainAddon` oranlı ilk dönem

Alan adı yönetimi, gizlilik ya da yönlendirme ek hizmetini satın alır.

Gövde —

——Gövde gerekmez, boş gönderin. Alan adı ile ek hizmet anahtarı adresten gelir; süre sabittir, bir yıl ve alan adına hizalı.

Dönen alanlar data — 9

invoice_idintÖdenecek faturanın numarası.

numberstringGörünen numara.

statusstringHam fatura durumu.

statestringMüşteriye gösterilen durum.

totalobjectOranlanmış ilk dönem toplamı.

created_atstringKesim tarihi.

paid_atstring | nullÖdenme tarihi. Fatura ödenene dek null kalır.

due_datestringSon ödeme tarihi.

addonstringSipariş edilen ek hizmet.

Hatalar 10

not_found404Ek hizmet anahtarı üç değerden biri değil ya da alan adı bulunamadı.

not_actionable422Alan adı etkin değil.

addon_not_supported422Sağlayıcı bu arayüzü sunmuyor.

addon_not_offered422Operatör bu uzantıda bu ek hizmeti satmıyor.

addon_free422Ek hizmet bu uzantıda ücretsiz. Satın alınacak bir şey yoktur.

addon_active422Ek hizmet zaten etkin.

addon_pending422Ödenmemiş bir ek hizmet faturası zaten açık.

addon_rejected422Bir site politikası satın almayı veto etti. Gerekçeyi mesaj taşır.

addon_term_invalid422Oranlanacak süre kalmamış ya da tutar sıfıra düşüyor.

addon_failed500Fatura ya da kayıt oluşturulamadı.

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

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

```javascript
const res = await fetch(`https://panel.ornek.com/api/v1/client/domains/${domain}/addons/${key}`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${clientKey}` },
});

const { data } = await res.json();
goPay(data.invoice_id);
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/client/domains/' . $domain . '/addons/' . $key);
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
// Ek hizmet FATURA ODENENE kadar acilmaz: satin alma cagrisi yalniz belgeyi keser.
$inv = Kernel::internal('client:Domains/BuyDomainAddon',
    ['owner_id' => $uid, 'domain' => $domain, 'key' => 'whois-privacy'])['data'];

Kernel::internal('client:Invoices/PayInvoice',
    ['owner_id' => $uid, 'id' => $inv['invoice_id'], 'payment' => ['method' => 'balance']]);
```

## Tuzaklar

> **Yetenekler sağlayıcıya göre değişir**
> 
> Detaydaki yetenek listesi **on bir alan** taşır ve her sağlayıcı hepsini sunmaz. Kapalı bir arayüze çağrı yapmak açık bir hatayla döner. Sekmeleri ve butonları bu listeye göre çizin; sabit bir arayüz bir sağlayıcı değişiminde kırılır.

> **Kilit ve gizlilik değerleri aynadır**
> 
> Listede ve detayda görünen transfer kilidi ile gizlilik değerleri **son kaydedilen hâldir**, sağlayıcının o anki durumu değil. Gerçek değeri kilit ucundan canlı okuyun. Aynanın hiç yazılmadığı bir alan adında güvenli varsayım kilitli olmasıdır.

> **Ek hizmet fatura ödenmeden açılmaz**
> 
> Ek hizmet satın alma çağrısı yalnız bir **fatura keser**; ilgili arayüz o fatura ödenene kadar kapalı kalır. Bekleyen bir fatura varken ikinci bir satın alma reddedilir ve hangi faturanın engellediği yanıtta yazar. İlk dönem kalan süreye göre oranlanır.

> **Yenileme süreleri sicil tavanıyla sınırlıdır**
> 
> Detaydaki yenileme satırları yalnız operatörün fiyatladığı **ve** sicilin toplam süre tavanına sığan süreleri gösterir. Bitişi uzak bir alan adında listede tek bir yıl kalabilir, hatta hiç kalmayabilir. Süreyi listeden seçin, tahmin etmeyin.

> **Otomatik yenileme kapalıysa uyarı sizin işiniz**
> 
> Otomatik yenileme kapalı bir alan adı vade gününde **sessizce** süresi dolar ve kurtarma dönemine girer. API bunu ayrıca bildirmez. Bitiş tarihini listeden okuyup kendi hatırlatmanızı kurun.

## İlgili Makaleler

- [Ad Sunucuları ve Kayıtlar](https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar)
- [Alan Adı Kişileri ve Gizlilik](https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik)
- [Alan Adı Edinme](https://dev.wisecp.com/tr/alan-adi-edinme)
