# DNS Yönetimi

https://dev.wisecp.com/tr/dns-yonetimi

Bir alan adının DNS kayıtlarını, alt ad sunucularını ve DNSSEC imzalarını yöneten on bir uç.

## Genel Bakış

Bu on bir uç alan adının **ad çözümlemesini** yönetir: hangi adın nereye çıktığı, alan adının kendi ad sunucuları ve imza doğrulaması.

Üç ayrı iş bir arada durur. **Alt ad sunucuları** alan adının kendi sunucularını tanımlar. **DNS kayıtları** hangi adın nereye gittiğini yazar. **DNSSEC** bu cevapların imzalı olmasını sağlar.

Hiçbirinde yerel kopya tutulmaz: her okuma tescil kuruluşuna gider ve her yazma anında yayına yansır.

## Referans

### Alt Ad Sunucularını Listeleme

get/api/v1/admin/services/{id}/domain/child-nameservers

`Services/GetDomainChildNameservers` admin

Alan adının kendi altında tanımlanmış ad sunucularını döndürür.

Dönen alanlar data[] — 2

nsstringAlt ad sunucusunun adı.

ipstringBağlı olduğu adres.

Hatalar 5

not_found404Hizmet bulunamadı.

not_domain422Hizmet bir alan adı değil.

no_module422Tescil modülü bağlı 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 'https://panel.ornek.com/api/v1/admin/services/520/domain/child-nameservers' \
  -H "Authorization: Bearer $API_KEY"
```

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

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

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

```php
// Modul listelemeyi desteklemiyorsa YEREL kopya doner; tescildeki gercekle ayrisabilir.
$response = Api::Services()->GetDomainChildNameservers(['id' => 520]);
```

### Alt Ad Sunucusu Ekleme

post/api/v1/admin/services/{id}/domain/child-nameservers

`Services/AddDomainChildNameserver` admin 201

Alan adının altında yeni bir ad sunucusu tanımlar.

Gövde 2

nsstringzorunluAd sunucusunun adı.

ipstringzorunluBağlanacağı adres. IPv4 ya da IPv6 olarak doğrulanır.

Dönen alanlar data — 2

nsstringEklenen alt ad sunucusunun adı. `201` ile döner.

ipstringBağlı olduğu adres.

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.

cns_fields_required422Ad ya da adres boş.

invalid_ip422Adres geçerli bir IP 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/admin/services/520/domain/child-nameservers' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ns":"ns1.example.com","ip":"203.0.113.10"}'
```

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

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

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

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

```php
// Alt ad sunucusu tanimlamak onu KULLANMAYA baslamaz; ayrica ad sunucusu olarak atayin.
Api::Services()->AddDomainChildNameserver([
    'id' => 520,
    'ns' => 'ns1.example.com',
    'ip' => '203.0.113.10',
]);

Api::Services()->SetDomainNameservers([
    'id'  => 520,
    'ns1' => 'ns1.example.com',
    'ns2' => 'ns2.example.com',
]);
```

### Alt Ad Sunucusunu Güncelleme

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

`Services/UpdateDomainChildNameserver` admin eski değerle bulunur

Var olan bir alt ad sunucusunu bulup yeni değerlerle değiştirir.

Gövde 4

old_nsstringzorunluDeğiştirilecek kaydın mevcut adı.

old_ipstringMevcut adres. Aynı adı taşıyan birden çok kayıt varsa ayırt eder.

new_nsstringzorunluYeni ad.

new_ipstringzorunluYeni adres.

Dönen alanlar data — 2

nsstringDeğişiklik sonrası alt ad sunucusunun adı.

ipstringArtık bağlı olduğu adres.

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.

cns_fields_required422Zorunlu alanlardan biri boş.

invalid_ip422Yeni adres geçerli bir IP 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/child-nameservers' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"old_ns":"ns1.example.com","old_ip":"203.0.113.10","new_ns":"ns1.example.com","new_ip":"203.0.113.20"}'
```

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

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

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

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

```php
// Kayit KIMLIKLE degil eski degeriyle bulunur: eski adi dogru yazmazsaniz eslesme olmaz.
Api::Services()->UpdateDomainChildNameserver([
    'id'     => 520,
    'old_ns' => 'ns1.example.com',
    'old_ip' => '203.0.113.10',
    'new_ns' => 'ns1.example.com',
    'new_ip' => '203.0.113.20',
]);
```

### Alt Ad Sunucusunu Silme

delete/api/v1/admin/services/{id}/domain/child-nameservers

`Services/DeleteDomainChildNameserver` admin

Bir alt ad sunucusu tanımını kaldırır.

Gövde 2

nsstringzorunluSilinecek kaydın adı.

ipstringAdres. Bazı modüller eşleşme için ister.

Dönen alanlar data — 2

deletedboolSilme başarılı mı.

nsstringSilinen kaydın adı.

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 DELETE 'https://panel.ornek.com/api/v1/admin/services/520/domain/child-nameservers' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"ns":"ns1.example.com"}'
```

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

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

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

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

```php
// Kullanimda olan bir alt ad sunucusunu silmek alan adini erisilemez birakabilir.
Api::Services()->DeleteDomainChildNameserver(['id' => 520, 'ns' => 'ns1.example.com']);
```

### DNS Kayıtlarını Listeleme

get/api/v1/admin/services/{id}/domain/dns-records

`Services/GetDomainDnsRecords` admin doğrudan tescilden

Alan adının DNS kayıtlarını döndürür. Yerel bir kopya tutulmaz.

Dönen alanlar data[] — 6

identitystringModülün kayda verdiği kimlik. Her modülde aynı biçimde değildir.

typestringKayıt tipi.

namestringKaydın adı ya da alt alan adı.

valuestringKaydın değeri.

ttlintYaşam süresi, saniye olarak.

priorityintÖncelik. Posta kayıtlarında anlamlıdır.

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/dns-records' \
  -H "Authorization: Bearer $API_KEY"
```

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

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

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

```php
// Guncelleme ve silme icin gereken 'identity' BURADAN gelir; baska yerde uretilemez.
$records = Api::Services()->GetDomainDnsRecords(['id' => 520])['data'];

$www = current(array_filter($records, fn (array $r): bool => $r['name'] === 'www'));
```

Yanıt 200

```json
{
  "data": [
    {
      "identity": "1001",
      "type": "A",
      "name": "@",
      "value": "203.0.113.10",
      "ttl": 3600,
      "priority": 0
    }
  ]
}
```

### DNS Kaydı Ekleme

post/api/v1/admin/services/{id}/domain/dns-records

`Services/AddDomainDnsRecord` admin 201

Alan adına yeni bir DNS kaydı ekler.

Gövde 5

typestringzorunluKayıt tipi.

namestringzorunluKaydın adı ya da alt alan adı.

valuestringzorunluKaydın değeri.

ttlintYaşam süresi, saniye olarak.

priorityintÖncelik.

Dönen alanlar data — 2

addedboolKayıt eklendi. `201` ile döner.

——Eklenen kaydı döndüren bir modülde onun yerine o kayıt gelir. Gelen şekli okuyun, `added` alanına güvenmeyin.

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.

dns_fields_required422Zorunlu alanlardan biri boş.

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/dns-records' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"A","name":"www","value":"203.0.113.10","ttl":3600}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'A',
    name: 'www',
    value: '203.0.113.10',
    ttl: 3600,
  }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type'  => 'A',
        'name'  => 'www',
        'value' => '203.0.113.10',
        'ttl'   => 3600,
    ]),
]);

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

```php
// Yanit eklenen kaydi TASIMAYABILIR; kimligi ogrenmek icin listeyi yeniden okuyun.
Api::Services()->AddDomainDnsRecord([
    'id'    => 520,
    'type'  => 'A',
    'name'  => 'www',
    'value' => '203.0.113.10',
]);

$records = Api::Services()->GetDomainDnsRecords(['id' => 520])['data'];
```

### DNS Kaydını Güncelleme

put/api/v1/admin/services/{id}/domain/dns-records

`Services/UpdateDomainDnsRecord` admin her modülde yok

Var olan bir DNS kaydını değiştirir. Modül güncellemeyi sunmuyorsa çalışmaz.

Gövde 6

typestringzorunluKayıt tipi.

namestringzorunluKaydın adı.

valuestringzorunluYeni değer.

identitystringListeden gelen kayıt kimliği. Doğru kaydı bulmanın en güvenli yolu budur.

ttlintYaşam süresi. Verilmezse kayıt mevcut değerini korur.

priorityintÖncelik. Verilmezse kayıt, türü değişmediği sürece mevcut önceliğini korur.

Dönen alanlar data — 2

updatedboolKayıt güncellendi.

——Güncellenen kaydı döndüren bir modülde onun yerine o kayıt gelir. Gelen şekli okuyun, `updated` alanına güvenmeyin.

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.

dns_fields_required422Zorunlu alanlardan biri boş.

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/dns-records' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"A","name":"www","value":"203.0.113.20","identity":"1001"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'A',
    name: 'www',
    value: '203.0.113.20',
    identity: '1001',
  }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type'     => 'A',
        'name'     => 'www',
        'value'    => '203.0.113.20',
        'identity' => '1001',
    ]),
]);

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

```php
// Modul guncellemeyi sunmuyorsa 'not_supported' doner; o zaman sil-ve-ekle yapin.
$response = Api::Services()->UpdateDomainDnsRecord([
    'id'       => 520,
    'type'     => 'A',
    'name'     => 'www',
    'value'    => '203.0.113.20',
    'identity' => '1001',
]);
```

### DNS Kaydını Silme

delete/api/v1/admin/services/{id}/domain/dns-records

`Services/DeleteDomainDnsRecord` admin yayına anında yansır

Bir DNS kaydını kaldırır.

Gövde 4

typestringzorunluKayıt tipi.

namestringKaydın adı. Eşleşmeyi daraltır.

valuestringKaydın değeri. Eşleşmeyi daraltır.

identitystringListeden gelen kayıt kimliği.

Dönen alanlar data

deletedboolKayıt silindi.

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.

dns_fields_required422Kayıt tipi boş.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"A","name":"www","identity":"1001"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ type: 'A', name: 'www', identity: '1001' }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/dns-records');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type'     => 'A',
        'name'     => 'www',
        'identity' => '1001',
    ]),
]);

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

```php
// Yalniz tip gondermek AYNI TIPTEKI baska kayitlari da eleyebilir; kimligi de verin.
Api::Services()->DeleteDomainDnsRecord([
    'id'       => 520,
    'type'     => 'A',
    'name'     => 'www',
    'identity' => '1001',
]);
```

### DNSSEC Kayıtlarını Listeleme

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

`Services/GetDomainDnssecRecords` admin

Alan adının DNSSEC imza kayıtlarını döndürür.

Dönen alanlar data[] — 5

identitystringModülün kayda verdiği kimlik.

digeststringÖzet değeri.

key_tagintAnahtar etiketi.

digest_typeintÖzet tipi. İzinli değerler modülün ayarlarından gelir.

algorithmintAlgoritma. İzinli değerler modülün ayarlarından gelir.

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

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

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

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

```php
$response = Api::Services()->GetDomainDnssecRecords(['id' => 520]);
```

### DNSSEC Kaydı Ekleme

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

`Services/AddDomainDnssecRecord` admin 201

Alan adına DNSSEC imza kaydı ekler.

Gövde 4

digeststringzorunluÖzet değeri.

key_tagintzorunluAnahtar etiketi. Sıfırdan büyük olmalı.

digest_typeintzorunluÖzet tipi. Modülün izinli listesinde olmalı.

algorithmintzorunluAlgoritma. Modülün izinli listesinde olmalı.

Dönen alanlar data — 2

addedboolKayıt eklendi. `201` ile döner.

——Eklenen kaydı döndüren bir modülde onun yerine o kayıt gelir. Gelen şekli okuyun, `added` alanına güvenmeyin.

Hatalar 8

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.

dnssec_fields_required422Zorunlu alanlardan biri boş.

invalid_digest_type422Özet tipi modülün ayarlarında tanımlı değil.

invalid_algorithm422Algoritma modülün ayarlarında tanımlı 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/admin/services/520/domain/dnssec' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"digest":"49FD46E6C4B45C55D4AC","key_tag":12345,"digest_type":2,"algorithm":13}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/520/domain/dnssec', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    digest: '49FD46E6C4B45C55D4AC',
    key_tag: 12345,
    digest_type: 2,
    algorithm: 13,
  }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/520/domain/dnssec');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'digest'      => '49FD46E6C4B45C55D4AC',
        'key_tag'     => 12345,
        'digest_type' => 2,
        'algorithm'   => 13,
    ]),
]);

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

```php
// Izinli ozet tipi ve algoritma MODULUN AYARINDAN gelir; standarttaki her deger kabul edilmez.
Api::Services()->AddDomainDnssecRecord([
    'id'          => 520,
    'digest'      => $digest,
    'key_tag'     => 12345,
    'digest_type' => 2,
    'algorithm'   => 13,
]);
```

### DNSSEC Kaydını Silme

delete/api/v1/admin/services/{id}/domain/dnssec

`Services/DeleteDomainDnssecRecord` admin doğrulama bozulabilir

Bir DNSSEC imza kaydını kaldırır.

Gövde 5

digeststringzorunluÖzet değeri.

key_tagintzorunluAnahtar etiketi.

digest_typeintÖzet tipi. Eşleşmeyi daraltır.

algorithmintAlgoritma. Eşleşmeyi daraltır.

identitystringListeden gelen kayıt kimliği.

Dönen alanlar data

deletedboolKayıt silindi.

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.

dnssec_fields_required422Özet ya da anahtar etiketi boş.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/services/520/domain/dnssec' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"digest":"49FD46E6C4B45C55D4AC","key_tag":12345}'
```

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

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

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

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

```php
// Son DS kaydini silmek alan adinin imza dogrulamasini kapatir; once yenisini ekleyin.
Api::Services()->AddDomainDnssecRecord(['id' => 520] + $newRecord);
Api::Services()->DeleteDomainDnssecRecord(['id' => 520] + $oldRecord);
```

## Tuzaklar

> **Kayıt kimliği yalnız listeden gelir**
> 
> Güncelleme ve silme uçlarındaki `identity`, listeleme ucunun döndürdüğü değerdir; siz üretemezsiniz ve biçimi modülden modüle değişir. Ekleme yanıtı eklenen kaydı **taşımayabilir**, o yüzden ekledikten sonra kimliği öğrenmek için listeyi yeniden okumanız gerekir.

> **Kimliksiz silme fazlasını süpürebilir**
> 
> Silme ucunda yalnız kayıt tipi zorunludur. Ad, değer ve kimlik vermeden gönderilen bir istek **aynı tipteki başka kayıtları** da eleyebilir, çünkü eşleşmeyi modül yapar. Silmeden önce hangi kaydı hedeflediğinizi kimlikle sabitleyin.

> **DNS güncellemesi her modülde yoktur**
> 
> Güncelleme ucu yalnız modül bunu sunuyorsa çalışır; sunmuyorsa `not_supported` döner. Böyle bir modülde tek yol kaydı silip yenisini eklemektir, bu da iki işlem arasında kısa bir kesinti demektir.

> **İzinli DNSSEC değerleri modülden gelir**
> 
> Özet tipi ve algoritma standarttaki her değeri kabul etmez: izinli küme modülün kendi ayarlarında tanımlıdır. Standarda uygun ama listede olmayan bir değer `invalid_algorithm` ile döner.

> **Yazmalar anında yayına çıkar**
> 
> Bu uçlarda taslak ya da onay adımı yoktur; yaptığınız değişiklik tescil kuruluşuna gider ve yayılmaya başlar. Kullanımdaki bir alt ad sunucusunu silmek alan adını erişilemez bırakabilir, son DNSSEC kaydını silmek imza doğrulamasını kapatır. Yanlış giden bir değişikliği geri almak, önbelleklerin süresi dolana kadar sürer.

## İlgili Makaleler

- [Alan Adı Temelleri](https://dev.wisecp.com/tr/alan-adi-temelleri)
- [E-posta ve URL Yönlendirme](https://dev.wisecp.com/tr/eposta-ve-url-yonlendirme)
