Hizmete Bağlı Ek Hizmetler
Bir hizmetin üzerine satılan ek hizmetleri ekleyen, düzenleyen ve durumunu değiştiren sekiz uç.
Genel Bakış
Ek hizmet, bir hizmetin üzerine satılan şeydir: fazladan disk, yedekleme, kayıt gizliliği. Kendi fiyatı, kendi döngüsü ve kendi durumu vardır; hizmetle birlikte yaşar ama ondan bağımsız askıya alınabilir ve iptal edilebilir.
İki kaynağı vardır. Katalog ek hizmetleri ürün tarafında tanımlanır ve kimlikle eklenir. Alan adı ek hizmetleri kataloğa girmez; DNS yönetimi, e-posta yönlendirme ve kayıt gizliliğinden ibarettir ve anahtarla eklenir.
Referans
Ek Hizmetleri Listeleme
Hizmete bağlı ek hizmetlerin tamamını döndürür.
waiting, inprocess, active, suspended ya da cancelled.curl 'https://panel.ornek.com/api/v1/admin/services/529/addons' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Services()->GetServiceAddons(['id' => 529]);Ek Hizmet Detayı
Tek bir ek hizmeti döndürür. Şema liste öğesiyle aynıdır.
waiting, inprocess, active, suspended ya da cancelled.curl 'https://panel.ornek.com/api/v1/admin/services/529/addons/44' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Adresteki kimlik KAYDIN kimligidir, katalogdaki tanimin degil.
$response = Api::Services()->GetServiceAddon(['id' => 529, 'addon_id' => 44]);Ek Hizmet Ekleme
Hizmete ek hizmet bağlar. Katalogdan ya da alan adına özgü olabilir.
dns-manage, forwarding ya da whois-privacy. Yalnız alan adı hizmetlerinde ve addon_id yerine.waiting, inprocess ya da active. Varsayılan waiting. Bekleyen ek hizmet yenilenmez; mevcut hizmetlere faturasız ek hizmet bağlarken active gönderin.unpaid ya da paid. Varsayılan unpaid.curl -X POST 'https://panel.ornek.com/api/v1/admin/services/529/addons' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"addon_id":9,"option_id":3,"quantity":1,"cycle":"monthly","generate_invoice":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
addon_id: 9,
option_id: 3,
quantity: 1,
cycle: 'monthly',
generate_invoice: true,
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'addon_id' => 9,
'option_id' => 3,
'quantity' => 1,
'cycle' => 'monthly',
'generate_invoice' => true,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Alan adi hizmetinde addon_id DEGIL addon_key gonderilir.
$service = Api::Services()->GetService(['id' => 529])['data'];
$body = $service['type'] === 'domain'
? ['addon_key' => 'whois-privacy']
: ['addon_id' => 9, 'option_id' => 3];
Api::Services()->CreateServiceAddon(['id' => 529] + $body);Ek Hizmeti Güncelleme
Ek hizmetin fiyatını, adetini, döngüsünü ve tarihlerini değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/services/529/addons/44' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"amount":15,"quantity":2}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ amount: 15, quantity: 2 }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['amount' => 15, 'quantity' => 2]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Hizmetin donem bitisini otelemek ayni gundeki ek hizmetleri de kaydirir; bu uc TEK ek hizmeti tasir.
$response = Api::Services()->UpdateServiceAddon([
'id' => 529,
'addon_id' => 44,
'end_date' => '2026-09-01 00:00:00',
]);Ek Hizmeti Silme
Ek hizmet kaydını siler.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/services/529/addons/44' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44', {
method: 'DELETE',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Silmek modulde bir sey KAPATMAZ; saglayici tarafi icin once iptal ucunu cagirin.
Api::Services()->CancelServiceAddon([
'id' => 529,
'addon_id' => 44,
'apply_on_module' => true,
]);
Api::Services()->DeleteServiceAddon(['id' => 529, 'addon_id' => 44]);Ek Hizmeti Askıya Alma
Ek hizmeti durdurur. Hizmetin kendisine dokunmaz.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/529/addons/44/suspend' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"reason":"Awaiting payment","notify":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44/suspend', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ reason: 'Awaiting payment', notify: true }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44/suspend');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['reason' => 'Awaiting payment']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$response = Api::Services()->SuspendServiceAddon([
'id' => 529,
'addon_id' => 44,
'reason' => 'Awaiting payment',
]);
// Durum degisti ama module inmediyse ozellik CALISMAYA devam eder.
$reached = $response['data']['applied_on_module'] ?? false;Ek Hizmet Askısını Kaldırma
Askıdaki ek hizmeti yeniden çalıştırır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/529/addons/44/unsuspend' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44/unsuspend', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44/unsuspend');
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);$response = Api::Services()->UnsuspendServiceAddon(['id' => 529, 'addon_id' => 44]);Ek Hizmeti İptal Etme
Ek hizmeti iptal eder ve isterseniz sağlayıcıdaki karşılığını kapatır.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/529/addons/44/cancel' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"apply_on_module":true,"notify":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/529/addons/44/cancel', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ apply_on_module: true, notify: true }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/529/addons/44/cancel');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['apply_on_module' => true]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Iptalde bayrak VARSAYILAN OLARAK KAPALI: vermezseniz ozellik sunucuda acik kalir.
$response = Api::Services()->CancelServiceAddon([
'id' => 529,
'addon_id' => 44,
'apply_on_module' => true,
]);Tuzaklar
Katalog ek hizmeti addon_id ile, alan adı ek hizmeti addon_key ile eklenir; ikisi birbirinin yerine geçmez. Alan adı hizmetine kimlik göndermek addon_not_found, başka bir hizmete anahtar göndermek addon_id_required döndürür. Ekleme yapmadan önce hizmetin tipine bakın.
Askıya alma ve açma uçlarında sağlayıcıya uygulama varsayılan olarak hizmetin modülüne bakar; iptal ucunda ise kapalıdır. Seçeneği vermeden iptal ettiğinizde kayıt kapanır ama özellik sunucuda açık kalmaya devam eder. Bu asimetri kolayca gözden kaçar.
Silme ucu yalnız kaydı kaldırır ve sağlayıcıya hiç dokunmaz; modül seçeneğini bile almaz. Ek hizmetin sunucudaki karşılığı da kapanacaksa önce iptal ucunu o seçenekle çağırın, sonra silin.
Alt uçlardaki kimlik, hizmete eklenmiş kaydın kimliğidir; katalogdaki tanımın kimliği değil. İkisi listede yan yana döner: id kayda, addon_id tanıma aittir. Ekleme yaparken tanımın kimliğini, sonraki her işlemde kaydın kimliğini kullanırsınız.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.