Sahip Olunan Hizmetler
Sahip olunan hizmeti okuyan, ayarlayan, yenileyen ve iptalini isteyen on bir uç.
Genel Bakış
Hizmet, müşterinin sahip olduğu şeydir: bir barındırma paketi, bir sunucu, bir yazılım lisansı. Bu on bir uç o kaydı okur, ayarlarını değiştirir, yeniler ve iptalini ister.
Yenileme iki adımdır: bu uçlar fatura keser, ödeme fatura uçlarında yapılır. Otomatik yenileme ise hesap düzeyinde ve hizmet düzeyinde iki ayrı anahtarla yönetilir.
Bazı ürünler kullanıma göre de ücretlenir. Ölçümler açılıp kapatılabilir, ama ödenmemiş bir kullanım faturası yeniden açmayı kilitler.
Referans
Hizmetleri Listeleme
Hesabın sahip olduğu hizmetleri döndürür.
curl 'https://panel.ornek.com/api/v1/client/services?status=active' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/services?status=active', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const soon = data.filter((s) => s.due_date && s.due_date < horizon);$ch = curl_init('https://panel.ornek.com/api/v1/client/services?status=active');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Suzgec ROZET GRUBU alir, ham durum degil: bekleyen iki ham durumu birden kapsar.
$rows = Kernel::internal('client:Services/GetServices',
['owner_id' => $uid, 'status' => 'pending'])['data'];Hizmeti Okuma
Hizmetin ayarlarını, erişim bilgilerini ve yenileme durumunu döndürür.
nameservers, hizmetin kendi ad sunucusu yoksa atandığı sunucunun NS1–NS4 değerlerini verir.curl 'https://panel.ornek.com/api/v1/client/services/622' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (data.renewal.available) showRenewButton(data.renewal.cycles);$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// ALAN ADI hizmetleri bu uctan OKUNMAZ: onlarin kendi uclari vardir, burada bulunamadi doner.
$s = Kernel::internal('client:Services/GetService', ['owner_id' => $uid, 'id' => $id])['data'];
$panel = $s['managed'];Hizmet Tercihlerini Değiştirme
Otomatik yenilemeyi ve fatura profilini değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/client/services/622' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"auto_renew":true,"billing_profile_id":3}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ auto_renew: true }),
});
if (res.status === 422) explainLock(await res.json());$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id);
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);// Hesap geneli otomatik odeme acikken hizmet anahtari KILITLIDIR; once cuzdan ayarina bakin.
$s = Kernel::internal('client:Services/GetService', ['owner_id' => $uid, 'id' => $id])['data'];
if (! $s['auto_renew_locked'])
Kernel::internal('client:Services/UpdateService',
['owner_id' => $uid, 'id' => $id, 'auto_renew' => true]);Yenileme Faturası Kesme
Hizmet için bir yenileme faturası keser.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/renew' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"cycle":"annually"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/renew`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ cycle }),
});
const { data } = await res.json();
if (data.existing) note('An invoice was already open.');$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/renew');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['cycle' => $cycle]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Fatura KESER, odeme YAPMAZ: donen numarayi fatura odeme ucuna vermeniz gerekir.
$inv = Kernel::internal('client:Services/RenewService',
['owner_id' => $uid, 'id' => $id])['data'];
Kernel::internal('client:Invoices/PayInvoice',
['owner_id' => $uid, 'id' => $inv['invoice_id'], 'payment' => ['method' => 'balance']]);İptal Talebi Açma
Hizmetin iptali için bir talep açar.
curl -X POST 'https://panel.ornek.com/api/v1/client/services/622/cancellation' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"urgency":"period-ending","reason":"not-needed"}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/cancellation`, {
method: 'POST',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ urgency: 'period-ending', reason, note }),
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/cancellation');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['urgency' => 'period-ending', 'reason' => $why]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// HEMEN secmek hizmeti o an kapatir: donem sonu secenegi kalan sureyi kullandirir.
Kernel::internal('client:Services/CreateCancellation',
['owner_id' => $uid, 'id' => $id, 'urgency' => 'period-ending', 'reason' => 'not-needed']);İptal Talebini Geri Çekme
Açık bir iptal talebini geri çeker.
curl -X DELETE 'https://panel.ornek.com/api/v1/client/services/622/cancellation' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/cancellation`, {
method: 'DELETE',
headers: { Authorization: `Bearer ${clientKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/cancellation');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Talep ONAYLANDIYSA geri cekmek hizmeti kurtarmayabilir; durumu detaydan okuyun.
$s = Kernel::internal('client:Services/GetService', ['owner_id' => $uid, 'id' => $id])['data'];
$pending = ($s['cancellation']['status'] ?? '') === 'pending';Hizmet Eklentilerini Okuma
Hizmete bağlı ek hizmetleri döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/addons' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/addons`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const waiting = data.filter((a) => a.unpaid_invoice_id > 0);$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/addons');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Bekleyen ek hizmet FATURASI odenene kadar etkinlesmez; numarayi buradan alip odeyin.
$rows = Kernel::internal('client:Services/GetServiceAddons',
['owner_id' => $uid, 'id' => $id])['data'];
$due = array_filter(array_column($rows, 'unpaid_invoice_id'));Hizmetin Faturalarını Okuma
Bu hizmeti faturalayan belgeleri döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/invoices' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/invoices`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const open = data.filter((i) => i.state !== 'paid');$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/invoices');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// SAYFALAMA YOKTUR, yalniz bir ust sinir vardir: uzun gecmis icin fatura listesini kullanin.
$rows = Kernel::internal('client:Services/GetServiceInvoices',
['owner_id' => $uid, 'id' => $id, 'limit' => 100])['data'];Ölçümleri Okuma
Kullanıma göre ücretlenen ölçümleri ve tahmini bedeli döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/metrics' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/metrics`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const bill = data.metrics.reduce((s, m) => s + (m.estimated_charge?.amount ?? 0), 0);$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/metrics');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kapali bir olcumun O ANA KADARKI kullanimi yine faturalanir: kapatmak gecmisi silmez.
$m = Kernel::internal('client:Services/GetServiceMetrics',
['owner_id' => $uid, 'id' => $id])['data'];
$blocked = $m['has_unpaid'];Ölçümü Açma ve Kapatma
Bir ölçümü açar ya da kapatır.
curl -X PATCH 'https://panel.ornek.com/api/v1/client/services/622/metrics/storage' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"enabled":true}'const res = await fetch(`https://panel.ornek.com/api/v1/client/services/${id}/metrics/${key}`, {
method: 'PATCH',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ enabled: true }),
});
if (res.status === 422) explainLock(await res.json());$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/metrics/' . $key);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['enabled' => true]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Kilidi acmanin tek yolu ENGELLEYEN FATURAYI odemektir; numarasi olcum kaydinda yazar.
$m = Kernel::internal('client:Services/GetServiceMetrics',
['owner_id' => $uid, 'id' => $id])['data'];
$blocker = array_column($m['metrics'], 'locked_by_invoice_id', 'key')[$key] ?? 0;Kullanım Fatura Geçmişi
Ölçümlerin dönem dönem faturalanmış kullanımını döndürür.
curl 'https://panel.ornek.com/api/v1/client/services/622/metrics/billing?metric=storage' \
-H "Authorization: Bearer $CLIENT_KEY"const url = new URL(`https://panel.ornek.com/api/v1/client/services/${id}/metrics/billing`);
url.searchParams.set('metric', key);
const res = await fetch(url, { headers: { Authorization: `Bearer ${clientKey}` } });
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/services/' . $id . '/metrics/billing');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// BEKLIYOR satiri henuz faturalanmamis donemdir: fatura numarasi sifirdir ve tutar degisebilir.
$rows = Kernel::internal('client:Services/GetServiceMetricBilling',
['owner_id' => $uid, 'id' => $id])['data'];
$open = array_filter($rows, fn ($r) => $r['state'] === 'pending');Tuzaklar
Yenileme ucu bir fatura üretir ve orada durur; hizmetin süresi ancak o fatura ödendiğinde uzar. Dönen yanıttaki bir alan, yeni bir belge kesilmediğini ve zaten açık olan bir faturanın döndüğünü söyler. Numarayı fatura ödeme ucuna verin.
Hesap geneli otomatik ödeme açıkken hizmet bazlı anahtar kilitlenir ve değiştirme çağrısı reddedilir. Detaydaki kilit alanı bunu önceden söyler. Kilidi açmanın yolu hizmet ayarı değil, cüzdan ayarıdır.
İptal talebinde aciliyet iki değerden birini alır. Hemen seçmek hizmeti o anda kapatır ve ödenmiş kalan süre geri gelmez; dönem sonu seçmek kalan süreyi kullandırır. Müşteriye bu farkı gösterin.
Bir ölçümü kapatmak o ana kadarki kullanımı faturalanmaktan kurtarmaz: dönem sonunda o kullanım yine belgeye girer. Ayrıca ödenmemiş bir kullanım faturası ölçümü yeniden açmayı kilitler ve kilit yalnız o fatura ödenerek açılır.
Alan adı kayıtları hizmet gibi görünse de bu uçlarda bulunamadı yanıtı verir; kendi uçları vardır. Bir hizmet listesinde alan adı arayan kod boş döner ve bunu hata sanabilir. Alan adları için alan adı makalelerine bakın.
Hizmetin faturalarını veren uç yalnız bir üst sınır alır; sayfalama yoktur. Uzun bir geçmiş için genel fatura listesini kullanın ve orada arayın. Aynı sınırlama ek hizmet listesinde de vardır.
İ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.