Hizmet Uçları
Müşteri hizmetlerini listeleyen, okuyan, düzenleyen ve silen dört uç.
Genel Bakış
Hizmet, bir müşterinin satın aldığı ve süren şeydir: barındırma hesabı, alan adı, sunucu, yazılım lisansı. Bu dört uç hizmetin kendisini okur, düzenler ve siler.
Yanıtlar ham gelir: durumlar ve döngüler kod olarak, tarihler standart biçimde, tutarlar sembolsüz sayı olarak. İnsan okuyacak etiketler reference uçlarından alınır.
Detaydaki capabilities bloğu, bu hizmete hangi işlemin uygulanabileceğini söyler. Değerler modülden türetilir, yani sabit değildir.
Referans
Hizmetleri Listeleme
Müşteri hizmetlerini süzgeçlerle döndürür.
waiting, inprocess, active, suspended, expired, cancelled ya da completed.domain, hosting, server, software, sms, ssl ya da special. Özel gruplarda tipe kimlik eklenir.curl -G 'https://panel.ornek.com/api/v1/admin/services' \
-H "Authorization: Bearer $API_KEY" \
-d status=active \
-d type=hostingconst url = new URL('https://panel.ornek.com/api/v1/admin/services');
url.searchParams.set('status', 'active');
url.searchParams.set('type', 'hosting');
const res = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();$url = 'https://panel.ornek.com/api/v1/admin/services?' . http_build_query(['status' => 'active', 'type' => 'hosting']);
$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);// Sayfalama alanlari KOK seviyededir, 'meta' altinda degil.
$page = 1;
$all = [];
do {
$response = Api::Services()->GetServices([], [
'status' => 'active',
'page' => $page,
'limit' => 100,
]);
$all = array_merge($all, $response['data']);
$page = $response['next_page'];
} while ($page > 0);{
"data": [
{
"id": 510,
"name": "Mail Hosting",
"type": "hosting",
"type_id": 0,
"product_id": 15,
"domain": "example.com",
"status": "active",
"amount": 10.0,
"currency_id": 1,
"cycle": "monthly",
"qty": 1,
"module": "Mailcow",
"client": {
"id": 50,
"full_name": "John Doe",
"company_name": "",
"email": "[email protected]"
},
"created_at": "2026-06-18 12:00:00",
"due_at": "2026-07-18 12:00:00",
"renewal_at": "2026-07-18 12:00:00"
}
],
"total": 42,
"page": 1,
"limit": 25,
"next_page": 2
}Hizmet Detayı
Bir hizmetin tüm ayrıntısını, ilişkilerini ve neler yapılabileceğini döndürür.
none.curl 'https://panel.ornek.com/api/v1/admin/services/506' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
// Islemi denemeden once yetenegi okuyun.
if (body.data.capabilities.can_reinstall) {
// ...
}$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);$service = Api::Services()->GetService(['id' => 506])['data'];
// Yetenekler modulden turetilir: modulsuz hizmette cogu kapalidir.
if ($service['capabilities']['can_suspend'] ?? false) {
Api::Services()->SuspendService(['id' => 506]);
}Hizmeti Güncelleme
Hizmetin veri alanlarını değiştirir. Durum geçişleri buradan yapılmaz.
percent ya da amount.curl -X PATCH 'https://panel.ornek.com/api/v1/admin/services/506' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"name":"Mail Hosting Pro","amount":29.9,"qty":2,"auto_pay":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Mail Hosting Pro',
amount: 29.9,
qty: 2,
auto_pay: true,
}),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Mail Hosting Pro',
'amount' => 29.9,
'qty' => 2,
]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Donem bitisini oteleyen bir guncelleme, ayni gune denk gelen ek hizmetleri de kaydirir.
$response = Api::Services()->UpdateService([
'id' => 506,
'due_at' => '2026-08-18 12:00:00',
]);Hizmeti Silme
Hizmet kaydını siler. İsterseniz sağlayıcıdaki hesabı da aynı istekte kapatır.
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/services/510' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"apply_on_module":true}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/510', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ apply_on_module: true }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/510');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
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);// Bayragi vermezseniz sunucudaki hesap AYAKTA kalir ve kaynak tuketmeye devam eder.
$response = Api::Services()->DeleteService([
'id' => 510,
'apply_on_module' => true,
]);Tuzaklar
Silme ucu varsayılan olarak yalnız kaydı siler; sağlayıcıdaki hesap ayakta kalır ve kaynak tüketmeye devam eder. Hesabın da kapanması için isteğe o bayrağı koymanız gerekir. Kayıt gittikten sonra bunu API üzerinden yapmanın yolu kalmaz.
Güncelleme ucu status alanı kabul etmez: askıya alma, iptal ve yeniden aktifleştirme kendi uçlarındadır. Bunun sebebi bu geçişlerin modüle iş yaptırmasıdır; düz bir alan yazımı sunucuda hiçbir şeyi değiştirmezdi.
Hizmet listesi total, page, limit ve next_page alanlarını kök seviyede döndürür. Diğer birçok listede bunlar meta altındadır; ortak bir sayfalama yardımcısı yazıyorsanız bu farkı gözetin.
Dönem bitişini değiştirmek, aynı güne denk gelen ek hizmetlerin bitişini de birlikte taşır. Bu genelde istenen davranıştır ama sessizdir: yalnız hizmetin tarihini değiştirdiğinizi sanırken faturalanacak başka kalemler de kaymış olur.
İ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.