Alan Adı Fiyatlama ve Ayarları

1.7k görüntülenme Markdown

Alan adı satışının genel kurallarını belirleyen yedi uç: kurtarma, eklenti ücretleri, otomatik fiyatlama ve premium.

Genel Bakış

Bu uçlar tek bir uzantıya değil, alan adı satışının genel kurallarına bakar: süresi dolan bir alan adı ne kadar süreyle ve ne ücretle kurtarılabilir, DNS yönetimi ya da kayıt gizliliği ne kadar, fiyatlar otomatik mi belirleniyor, premium alan adları satılıyor mu.

Bir uzantının kendi fiyatı ve özellikleri ayrı bir yerdedir; buradaki ayarlar onların üstünde çalışır. Tek istisna kurtarma ücretidir: uzantı adı verilirse yalnız o uzantıya yazılır.

Referans

WHOIS Sorgusu

get/api/v1/admin/products/domain/whois
Products/GetDomainWhois admin dışarıya çıkar

Bir alan adı için WHOIS sorgusu çalıştırır ve ham çıktıyı döndürür.

Sorgu parametreleri 1
domainstringzorunluSorgulanacak alan adı, uzantısıyla birlikte.
Dönen alanlar data — 3
domainstringSorgulanan alan adı.
availableboolAlan adı boşta mı.
outputstringTescil kuruluşundan gelen ham metin. Biçim kuruluştan kuruluşa değişir; ayrıştırmaya güvenmeyin.
Hatalar 4
domain_required422domain boş.
invalid_domain422Alan adı çözümlenemedi.
whois_failed422WHOIS verisi alınamadı. Uzak sunucu ulaşılamaz ya da hız sınırında olabilir.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -G 'https://panel.ornek.com/api/v1/admin/products/domain/whois' \
  -H "Authorization: Bearer $API_KEY" \
  -d domain=example.com
const url = new URL('https://panel.ornek.com/api/v1/admin/products/domain/whois');
url.searchParams.set('domain', 'example.com');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
$url = 'https://panel.ornek.com/api/v1/admin/products/domain/whois?' . http_build_query(['domain' => 'example.com']);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sorgu uzak sunucuya cikar: yavas olabilir, hiz sinirina takilabilir.
$response = Api::Products()->GetDomainWhois([], ['domain' => 'example.com']);

$free = $response['data']['available'] ?? false;

Gecikme ve Kurtarma Ücretleri

put/api/v1/admin/products/domain/grace-redemption
Products/SetDomainGraceRedemption admin genel ya da uzantıya özel

Süresi dolan alan adının kurtarılma süresini ve ücretini belirler.

Gövde 3
extensionstringUzantı. Boş bırakırsanız ayar tüm uzantılar için varsayılan olur.
graceobjectGecikme dönemi: süre ve para birimi başına ücret. Alan adı henüz serbest bırakılmadan geri alınabildiği dönem.
durationintSürenin gün sayısı.
feesobjectPara birimi kodundan ücret nesnesine eşleme.
feefloatÜcret tutarı.
statusboolÜcret uygulanıyor mu. Kapalıyken tutar saklanır ama alınmaz.
redemptionobjectKurtarma dönemi: süre ve para birimi başına ücret. Gecikme dönemi bittikten sonraki, genelde pahalı olan dönem.
durationintSürenin gün sayısı.
feesobjectPara birimi kodundan ücret nesnesine eşleme.
feefloatÜcret tutarı.
statusboolÜcret uygulanıyor mu. Kapalıyken tutar saklanır ama alınmaz.
Dönen alanlar data — 1
extensionstring | nullAyarın uygulandığı uzantı. Genel varsayılanda boş döner.
Hatalar 2
not_found404Verilen uzantı bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/products/domain/grace-redemption' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"grace":{"duration":30,"fees":{"USD":{"fee":0,"status":false}}},"redemption":{"duration":30,"fees":{"USD":{"fee":80,"status":true}}}}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/grace-redemption', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    grace: { duration: 30, fees: { USD: { fee: 0, status: false } } },
    redemption: { duration: 30, fees: { USD: { fee: 80, status: true } } },
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/grace-redemption');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'redemption' => [
            'duration' => 30,
            'fees'     => ['USD' => ['fee' => 80, 'status' => true]],
        ],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Uzanti vermek ayari YALNIZ o uzantiya yazar; genel varsayilan degismez.
Api::Products()->SetDomainGraceRedemption([
    'extension'  => 'com',
    'redemption' => [
        'duration' => 30,
        'fees'     => ['USD' => ['fee' => 80, 'status' => true]],
    ],
]);

Alan Adı Eklentisi Ücretleri

put/api/v1/admin/products/domain/addon-pricing
Products/SetDomainAddonPricing admin tüm uzantılar

DNS yönetimi, yönlendirme, kayıt gizliliği ve transfer kodu için ücret belirler.

Gövde 2
typestringzorunluÜcretlendirilecek özellik: dns_manage, forwarding, whois_privacy ya da epp_code.
feesobjectzorunluPara birimi kodundan ücret nesnesine eşleme.
feefloatÜcret tutarı.
statusboolÜcret uygulanıyor mu. Kapalıyken tutar saklanır ama alınmaz.
Dönen alanlar data — 1
typestringÜcreti yazılan özellik.
Hatalar 2
invalid_type422Özellik dört değerden biri değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/products/domain/addon-pricing' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"whois_privacy","fees":{"USD":{"fee":5,"status":true}}}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/addon-pricing', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'whois_privacy',
    fees: { USD: { fee: 5, status: true } },
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/addon-pricing');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type' => 'whois_privacy',
        'fees' => ['USD' => ['fee' => 5, 'status' => true]],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Ucret her uzanti icin ayni; ozelligin hangi uzantida ACIK oldugu TLD kaydinda durur.
Api::Products()->SetDomainAddonPricing([
    'type' => 'whois_privacy',
    'fees' => ['USD' => ['fee' => 5, 'status' => true]],
]);

Otomatik Fiyatlama Durumu

get/api/v1/admin/products/domain/auto-pricing
Products/GetDomainAutoPricing admin

Otomatik fiyatlamanın açık olup olmadığını ve kâr marjını döndürür.

Dönen alanlar data — 2
statusboolOtomatik fiyatlama açık mı.
profit_ratefloatMaliyetin üzerine eklenen kâr marjı, yüzde olarak.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Products()->GetDomainAutoPricing();

Otomatik Fiyatlamayı Ayarlama

put/api/v1/admin/products/domain/auto-pricing
Products/SetDomainAutoPricing admin iki dal

Otomatik fiyatlamayı açıp kapatır ya da kâr marjını değiştirip fiyatları yeniden hesaplar.

Gövde 3
updatestringzorunluHangi dalın çalışacağı: status ya da pricing.
statusboolOtomatik fiyatlamayı açar ya da kapatır. Yalnız status dalında.
ratefloatKâr marjı, yüzde olarak. Yalnız pricing dalında; yazıldığı anda otomatik fiyatlı uzantılar yeniden fiyatlanır.
Dönen alanlar data — 2
dataobjectGüncel otomatik fiyatlama ayarları. Getirme ucuyla aynı şekildedir.
Hatalar 3
invalid_update422update iki değerden biri değil.
update_failed422Ayar kaydedilemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"update":"pricing","rate":20}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ update: 'pricing', rate: 20 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/auto-pricing');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['update' => 'pricing', 'rate' => 20]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Marj yazmak TUM otomatik fiyatli uzantilari o anda yeniden fiyatlar.
Api::Products()->SetDomainAutoPricing([
    'update' => 'pricing',
    'rate'   => 20,
]);

Premium Alan Adı Ayarları

get/api/v1/admin/products/domain/premium
Products/GetDomainPremium admin

Premium alan adı satışının açık olup olmadığını ve fiyat katmanlarını döndürür.

Dönen alanlar data — 2
statusboolPremium alan adı satışı açık mı.
pricingobject[]Fiyat katmanları.
amountfloatKatmanın başladığı tutar.
markupfloatO katmana uygulanan kâr yüzdesi.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/products/domain/premium' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/premium', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/premium');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Products()->GetDomainPremium();

Premium Ayarlarını Yazma

put/api/v1/admin/products/domain/premium
Products/SetDomainPremium admin iki dal

Premium satışını açıp kapatır ya da fiyat katmanlarını yazar.

Gövde 3
updatestringzorunluHangi dalın çalışacağı: status ya da pricing.
statusboolPremium satışını açar ya da kapatır. Yalnız status dalında.
feesobject[]Fiyat katmanları. Yalnız pricing dalında; liste bütün olarak yazılır.
amountfloatKatmanın başladığı tutar.
markupfloatO katmana uygulanan kâr yüzdesi.
Dönen alanlar data — 2
dataobjectGüncel premium ayarları. Getirme ucuyla aynı şekildedir.
Hatalar 2
invalid_update422update iki değerden biri değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/products/domain/premium' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"update":"pricing","fees":[{"amount":100,"markup":10},{"amount":1000,"markup":5}]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/products/domain/premium', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    update: 'pricing',
    fees: [
      { amount: 100, markup: 10 },
      { amount: 1000, markup: 5 },
    ],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/products/domain/premium');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'update' => 'pricing',
        'fees'   => [
            ['amount' => 100,  'markup' => 10],
            ['amount' => 1000, 'markup' => 5],
        ],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Katman listesi butun olarak yazilir: eksik katman silinir.
Api::Products()->SetDomainPremium([
    'update' => 'pricing',
    'fees'   => [
        ['amount' => 100,  'markup' => 10],
        ['amount' => 1000, 'markup' => 5],
    ],
]);

Tuzaklar

Marj yazmak fiyatları o anda değiştirir

Kâr marjını yazmak yalnız bir ayarı kaydetmez: otomatik fiyatlaması açık olan tüm uzantılar aynı anda yeniden fiyatlanır. Değişiklik vitrine hemen yansır, cron beklemez. Marjı denemek için küçük bir adım atın ve sonucu uzantı detayından okuyun.

İki uç tek bir dal seçer

Otomatik fiyatlama ve premium uçları update alanına göre tek bir dal çalıştırır. Yanlış dalda gönderilen alan sessizce yok sayılır: durum dalında marj göndermek marjı değiştirmez ve hata da vermez. Sonucu her zaman okuma ucundan doğrulayın.

Ücret ile sunum ayrı yerlerdedir

Eklenti ücreti burada, tüm uzantılar için ortak yazılır. Bir uzantının o özelliği sunup sunmadığı ise kendi kaydındadır. Ücret koyduğunuz bir özellik hiçbir uzantıda açık değilse kimse ödemez; ikisini birlikte kontrol edin.

WHOIS sorgusu dışarı çıkar

Sorgu uzak bir sunucuya gider: yavaş olabilir, hız sınırına takılabilir ve dönen metnin biçimi kuruluştan kuruluşa değişir. Toplu kontrol yazıyorsanız zaman aşımı koyun ve ham çıktıyı ayrıştırmak yerine available alanını kullanın.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.