# Alan Adı Temelleri

https://dev.wisecp.com/tr/alan-adi-temelleri

Bir alan adının ad sunucularını, transfer kilidini, sahiplik bilgilerini ve geri alınmasını yöneten on uç.

## Genel Bakış

Bu on uç bir alan adının **temel** işlerini yürütür: nereye baktığı, taşınıp taşınamayacağı, kime ait göründüğü ve süresi dolduğunda geri alınıp alınamayacağı.

Hepsi tescil kuruluşuna **gerçek çağrı** yapar. Bu yüzden yavaş olabilirler, kuruluşun kendi kurallarına takılabilirler ve bir modül bir işlemi hiç desteklemeyebilir. Her uç aynı dört ön koşulu paylaşır: hizmet var olmalı, alan adı olmalı, bir tescil modülü bağlı olmalı ve o modül işlemi desteklemeli.

## Referans

### Ad Sunucularını Ayarlama

put/api/v1/admin/services/{id}/domain/nameservers

`Services/SetDomainNameservers` admin tescile gider

Alan adının hangi ad sunucularına bakacağını yazar.

Gövde 4

ns1stringzorunluBirincil ad sunucusu. Geçerli bir sunucu adı olmalı.

ns2stringzorunluİkincil ad sunucusu.

ns3stringÜçüncü ad sunucusu.

ns4stringDördüncü ad sunucusu.

Dönen alanlar data — 2

nameserversstring[]Yazılan ad sunucuları. Boş bırakılanlar listede olmaz.

idintHizmet kimliği.

Hatalar 7

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

ns_required422İlk iki ad sunucusundan biri boş.

ns_invalid422Ad sunucusu geçerli bir sunucu adı değil.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/520/domain/nameservers' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ns1":"ns1.example.com","ns2":"ns2.example.com"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/nameservers', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    ns1: 'ns1.example.com',
    ns2: 'ns2.example.com',
  }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/nameservers');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'ns1' => 'ns1.example.com',
        'ns2' => 'ns2.example.com',
    ]),
]);

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

```php
// Liste BUTUN yazilir: ns3 ve ns4 gondermezseniz varsa temizlenir.
$response = Api::Services()->SetDomainNameservers([
    'id'  => 520,
    'ns1' => 'ns1.example.com',
    'ns2' => 'ns2.example.com',
]);
```

### Transfer Kilidini Okuma

get/api/v1/admin/services/{id}/domain/transfer-lock

`Services/GetDomainTransferLock` admin

Alan adının başka bir tescil kuruluşuna taşınmaya karşı kilitli olup olmadığını döndürür.

Dönen alanlar data — 1

transfer_lockstringKilidin durumu. Değer tescil kuruluşundan ham gelir; kuruluştan kuruluşa değişebilir.

Hatalar 6

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl 'https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Okuma HAM deger dondurur, yazma 'enabled'/'disabled' dondurur: ikisi ayni sozlukten degil.
$response = Api::Services()->GetDomainTransferLock(['id' => 520]);
```

### Transfer Kilidini Değiştirme

put/api/v1/admin/services/{id}/domain/transfer-lock

`Services/SetDomainTransferLock` admin

Alan adının taşınmaya karşı kilidini açar ya da kapatır.

Gövde 1

statusstringzorunlu`enable` kilitler, `disable` kilidi açar.

Dönen alanlar data — 2

transfer_lockstringİşlem sonrası kilit durumu.

idintHizmet kimliği.

Hatalar 7

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

invalid_status422Durum `enable` ya da `disable` değil.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"enable"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ status: 'enable' }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/transfer-lock');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['status' => 'enable']),
]);

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

```php
// Kilit ACIKKEN alan adi tasinamaz: musteri baska kurulusa gececekse once kapatin.
Api::Services()->SetDomainTransferLock(['id' => 520, 'status' => 'disable']);
$code = Api::Services()->GetDomainAuthCode(['id' => 520]);
```

### Yetkilendirme Kodunu Alma

get/api/v1/admin/services/{id}/domain/auth-code

`Services/GetDomainAuthCode` admin e-postayla gidebilir

Alan adını başka bir tescil kuruluşuna taşımak için gereken kodu ister.

Dönen alanlar data — 2

auth_codestringYetkilendirme kodu. Yalnız modül kodu doğrudan veriyorsa döner.

sentboolKod tescil sahibinin adresine gönderildi. Bu durumda kodun kendisi yanıtta yer almaz.

Hatalar 6

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl 'https://panel.ornek.com/api/v1/admin/services/520/domain/auth-code' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/auth-code', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();

if (body.data.sent) {
  // kod e-postayla gitti, yanitta yok
}
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/auth-code');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Iki farkli yanit sekli vardir; kodun geldigini VARSAYMAYIN.
$response = Api::Services()->GetDomainAuthCode(['id' => 520])['data'];

$code = $response['auth_code'] ?? null;
$mailed = $response['sent'] ?? false;
```

Yanıt 200 200

```json
{
  "data": {
    "auth_code": "EXAMPLE-AUTH-CODE"
  }
}
```

```json
{
  "data": {
    "sent": true
  }
}
```

### Alan Adını Geri Alma

post/api/v1/admin/services/{id}/domain/restore

`Services/RestoreDomain` admin süreye bağlı

Süresi dolmuş bir alan adını geri alır. Yalnız kurtarma penceresi açıkken çalışır.

Gövde —

——Gövde gerekmez, boş gönderin. Alan adı, adresteki hizmet kimliğinden belirlenir.

Dönen alanlar data — 2

restoredboolGeri alma başarılı mı.

idintHizmet kimliği.

Hatalar 7

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

not_in_window422Alan adı kurtarma penceresinde değil. Pencere kapandıysa alan adı serbest bırakılmış olabilir.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/520/domain/restore' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/restore', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/restore');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Geri alma tescil kurulusuna UCRET oder; penceresi kapanmadan once cagirilir.
$response = Api::Services()->RestoreDomain(['id' => 520]);
```

### Transfer Durumunu Sorma

post/api/v1/admin/services/{id}/domain/check-transfer

`Services/CheckDomainTransfer` admin

Süren bir alan adı transferinin nerede olduğunu tescil kuruluşuna sorar.

Gövde —

——Gövde gerekmez, boş gönderin. Transfer, adresteki hizmet kimliğinden belirlenir.

Dönen alanlar data — 2

transfer_statusstringTransferin durumu. Hizmet bir transfer değilse hata değeri döner.

messagestring | nullTescil kuruluşundan gelen açıklama.

Hatalar 6

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/520/domain/check-transfer' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/check-transfer', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/check-transfer');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Hata durumu 200 icinde doner, HTTP hatasi olarak degil: durumu okumadan basarili saymayin.
$check = Api::Services()->CheckDomainTransfer(['id' => 520])['data'];

$stuck = $check['transfer_status'] === 'error';
```

### Tescil Durumunu Sorma

post/api/v1/admin/services/{id}/domain/check-registration

`Services/CheckDomainRegistration` admin

Tescil kuruluşunun kuyruğa aldığı bir tescilin tamamlanıp tamamlanmadığını sorar.

Bazı tescil kuruluşları yeni bir tescili kabul eder ve sonucu sonra bildirir. O zamana kadar hizmet `inprocess` kalır ve sayfasında "tescil devam ediyor" bandı görünür. `domain.registration` otomasyon görevi aynı kontrolü 15 dakikada bir, üç günden sonra günde bir yapar.

Gövde —

——Gövde gerekmez, boş gönderin. Tescil, adresteki hizmet kimliğinden belirlenir.

Dönen alanlar data — 3

registration_statusstring`active`, `pending` ya da `failed`. `active` olduğunda hizmet ve eklentileri etkinleşir, vade tarihi tescil kuruluşunun bitiş tarihinden alınır ve müşteriye bildirim gider. `failed` olduğunda bekleyen talep kapanır ve personele bildirim gider.

messagestring | nullBeklerken tescil kuruluşunun durum metni, reddedildiğinde ret sebebi.

service_statusstringKontrolden sonraki hizmet durumu. Etkinleşince `active`, beklerken `inprocess`.

Hatalar 7

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

is_transfer422Alan adı transfer olarak sipariş edilmiş. Yukarıdaki transfer sorgusunu kullanın.

not_supported422Tescil modülü tescil sonucunu bildiremiyor.

not_pending422Bu alan adı için bekleyen tescil yok.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/520/domain/check-registration' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/check-registration', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/check-registration');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Reddedilen tescil 200 icinde doner: yalnizca HTTP koduna degil registration_status alanina bakin.
$check = Api::Services()->CheckDomainRegistration(['id' => 520])['data'];

$refused = $check['registration_status'] === 'failed';
```

### WHOIS İletişimlerini Okuma

get/api/v1/admin/services/{id}/domain/whois

`Services/GetDomainWhois` admin dört iletişim

Alan adının tescil kuruluşundaki iletişim bilgilerini çeker.

Dönen alanlar data — 4

registrantobject 14 alanTescil sahibinin iletişimi. Alan adının hukuken kime ait olduğunu bu belirler.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

administrativeobject 14 alanİdari iletişim.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

technicalobject 14 alanTeknik iletişim.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

billingobject 14 alanFaturalama iletişimi.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

Hatalar 6

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl 'https://panel.ornek.com/api/v1/admin/services/520/domain/whois' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/whois', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/whois');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
// Okuma tescil kurulusuna gider ve yerel kopyayi da tazeler: yavas olabilir.
$whois = Api::Services()->GetDomainWhois(['id' => 520])['data'];
$owner = $whois['registrant'];
```

Yanıt 200

```json
{
  "data": {
    "registrant": {
      "first_name": "John",
      "last_name": "Doe",
      "company": "",
      "email": "john@example.com",
      "phone": "5550100",
      "phone_cc": "+1",
      "fax": "",
      "fax_cc": "",
      "address_line1": "123 Market Street",
      "address_line2": "",
      "city": "San Francisco",
      "state": "California",
      "zipcode": "94105",
      "country": "US"
    },
    "administrative": { "first_name": "John", "last_name": "Doe", "email": "john@example.com" },
    "technical": { "first_name": "John", "last_name": "Doe", "email": "john@example.com" },
    "billing": { "first_name": "John", "last_name": "Doe", "email": "john@example.com" }
  }
}
```

### WHOIS İletişimlerini Yazma

put/api/v1/admin/services/{id}/domain/whois

`Services/SetDomainWhois` admin sahiplik etkilenir

İletişim bilgilerini tescil kuruluşuna yazar.

Gövde 4

registrantobject 14 alanTescil sahibinin iletişimi. Alan adının hukuken kime ait olduğunu bu belirler.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

administrativeobject 14 alanİdari iletişim.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

technicalobject 14 alanTeknik iletişim.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

billingobject 14 alanFaturalama iletişimi.

first_namestringAd.

last_namestringSoyad.

companystringFirma adı.

emailstringE-posta adresi.

phonestringTelefon numarası.

phone_ccstringTelefonun ülke kodu.

faxstringFaks numarası.

fax_ccstringFaksın ülke kodu.

address_line1stringAdresin ilk satırı.

address_line2stringAdresin ikinci satırı.

citystringŞehir.

statestringEyalet ya da bölge.

zipcodestringPosta kodu.

countrystringÜlke. İki harfli ISO kodu.

Dönen alanlar data — 1

savedboolKaydetme başarılı mı.

Hatalar 6

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/520/domain/whois' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"registrant":{"first_name":"John","last_name":"Doe","email":"john@example.com","phone":"5550100","phone_cc":"+1","address_line1":"123 Market Street","city":"San Francisco","state":"California","zipcode":"94105","country":"US"}}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/whois', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    registrant: {
      first_name: 'John',
      last_name: 'Doe',
      email: 'john@example.com',
      phone: '5550100',
      phone_cc: '+1',
      address_line1: '123 Market Street',
      city: 'San Francisco',
      state: 'California',
      zipcode: '94105',
      country: 'US',
    },
  }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/whois');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'registrant' => [
            'first_name'    => 'John',
            'last_name'     => 'Doe',
            'email'         => 'john@example.com',
            'address_line1' => '123 Market Street',
            'city'          => 'San Francisco',
            'country'       => 'US',
        ],
    ]),
]);

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

```php
// Once okuyup uzerine yazin: eksik gonderilen alanlar tescilde bosalabilir.
$whois = Api::Services()->GetDomainWhois(['id' => 520])['data'];

$whois['registrant']['email'] = 'new@example.com';

Api::Services()->SetDomainWhois(['id' => 520] + $whois);
```

### Kayıt Gizliliğini Değiştirme

put/api/v1/admin/services/{id}/domain/whois-privacy

`Services/SetDomainWhoisPrivacy` admin

İletişim bilgilerinin genel sorgularda gizlenmesini açar ya da kapatır.

Gövde 1

statusstringzorunlu`enable` gizler, `disable` gizlemeyi kaldırır.

Dönen alanlar data — 1

whois_privacystringİşlem sonrası gizlilik durumu. Ya `enabled` ya da `disabled`.

Hatalar 7

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı değil.

not_supported422Modül bu işlemi desteklemiyor.

invalid_status422Durum `enable` ya da `disable` değil.

module_error422Tescil kuruluşu isteği reddetti; mesaj gerekçesini taşır.

module_failed500Tescil kuruluşuna ulaşılamadı ya da işlem gerekçesiz başarısız oldu.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/520/domain/whois-privacy' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":"enable"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/whois-privacy', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ status: 'enable' }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/whois-privacy');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['status' => 'enable']),
]);

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

```php
// Gizlilik cogu uzantida UCRETLI bir eklentidir: acmak fatura dogurabilir.
$response = Api::Services()->SetDomainWhoisPrivacy([
    'id'     => 520,
    'status' => 'enable',
]);
```

## Tuzaklar

> **Yetkilendirme kodunun iki yanıt şekli var**
> 
> Bazı tescil kuruluşları kodu doğrudan verir, bazıları tescil sahibinin adresine e-postayla gönderir. İkinci durumda yanıtta yalnız gönderildiği bilgisi bulunur, **kodun kendisi yoktur**. Kodun geldiğini varsayan bir istemci burada boş değer okur.

> **Ad sunucusu listesi bütün yazılır**
> 
> Gönderdiğiniz set yeni gerçektir: üçüncü ve dördüncü sunucuyu göndermezseniz varsa **temizlenirler**. Yalnız birincil sunucuyu değiştirmek istiyorsanız bile diğerlerini birlikte göndermeniz gerekir.

> **Tescil sahibini değiştirmek sahipliği değiştirir**
> 
> WHOIS yazma ucu iletişim bilgisi güncellemekten fazlasıdır: tescil sahibi alanı alan adının **hukuken kime ait olduğunu** belirler. Çoğu uzantıda bu değişiklik bir onay süreci başlatır ve alan adını bir süre transfere kapatır. Ayrıca eksik gönderilen alanlar tescilde boşalabilir; önce okuyup üzerine yazın.

> **Geri alma penceresi kapanır**
> 
> Süresi dolan bir alan adı önce geri alınabilir bir dönemden geçer, sonra serbest bırakılır. Pencere kapandıktan sonra bu uç `not_in_window` döndürür ve yapılacak bir şey kalmaz. Geri alma ayrıca tescil kuruluşuna genelde yüksek bir ücret ödetir.

> **Transfer kontrolü hatayı 200 içinde döndürür**
> 
> Hizmet bir transfer değilse ya da transfer takılmışsa bunu HTTP hatası olarak değil, yanıttaki durum alanında öğrenirsiniz. Yalnız durum koduna bakan bir istemci başarısız transferi başarılı sayar.

> **Her modül kuyruğa alınan tescili bildirmez**
> 
> Tescil sorgusu `registration_sync()` sunan bir modül ister; diğerleri `not_supported` döner. Bu modüllerde ad tescil kuruluşunda kayıtlı olunca hizmeti kendiniz etkinleştirin. Ret sonrasında hizmeti etkinleştirmek yeni bir tescil gönderir.

## İlgili Makaleler

- [DNS Yönetimi](https://dev.wisecp.com/tr/dns-yonetimi)
- [Servis Sağlayıcı Modülü Yazma](https://dev.wisecp.com/tr/servis-saglayici-modulu-yazma)
- [Alan Adı Edinme Kancaları](https://dev.wisecp.com/tr/alan-adi-edinme-kancalari)
- [E-posta ve URL Yönlendirme](https://dev.wisecp.com/tr/eposta-ve-url-yonlendirme)
- [Alan Adı Uzantıları](https://dev.wisecp.com/tr/alan-adi-uzantilari)
