Hizmet Araçları
Hizmetin sağlayıcı panelindeki araçları çalıştıran, modül metodu çağıran ve giriş bağlantısı üreten beş uç.
Genel Bakış
Araçlar, hizmetin sağlayıcı panelindeki işleri API üzerinden yapmanızı sağlar: veritabanı açmak, e-posta hesabı eklemek, dosyalara bakmak. Panelin gördüğü verinin aynısını, HTML yerine ham hâlde alırsınız.
Araçlar yalnız barındırma ve sunucu hizmetlerinde vardır. Alan adı hizmetlerinin kendi uçları, özel ürünlerin ise araç sistemi yerine modül metodu yolu vardır — güç işlemleri, konsol bilgisi ve benzeri şeyler oradan çağrılır.
Referans
Araçları Listeleme
Hizmetin modülünün sunduğu araçları ve her birinin hangi işlemleri kabul ettiğini döndürür.
curl 'https://panel.ornek.com/api/v1/admin/services/506/tools' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/tools', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/tools');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Islemi denemeden once yetenegi okuyun: her modul her araci ayni olcude desteklemez.
$tools = Api::Services()->GetServiceTools(['id' => 506])['data'];
foreach ($tools as $tool) {
$canCreate = in_array('create', $tool['capabilities'], true);
}{
"data": [
{
"key": "databases",
"group": "databases",
"label": "Databases",
"icon": "bi bi-database",
"capabilities": ["list", "create", "delete"]
},
{
"key": "email-accounts",
"group": "email",
"label": "Email Accounts",
"icon": "bi bi-envelope",
"capabilities": ["list", "create", "edit", "delete"]
}
]
}{
"error": {
"code": "tools_not_supported",
"message": "This service type does not expose tools."
}
}Araç Verisini Okuma
Aracın sağlayıcıdan okuduğu veriyi ham hâliyle döndürür.
curl 'https://panel.ornek.com/api/v1/admin/services/506/tools/databases' \
-H "Authorization: Bearer $API_KEY"const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/tools/databases', {
headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/tools/databases');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $apiKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Panel HTML render eder, API HAM veri dondurur: sekil moduller arasinda degisir.
$response = Api::Services()->GetServiceToolData(
['id' => 506, 'tool' => 'databases'],
);{
"data": {
"databases": [
{
"name": "user_app",
"size": 50855321,
"tables": 42,
"users": ["user_admin"]
}
],
"users": ["user_admin"],
"prefix": "user_"
}
}Araç İşlemi Çalıştırma
Araç üzerinde bir işlem çalıştırır. Gövde alanlarını modülün kendi doğrulaması denetler. DNS kaydı düzenlemesi (dns-zone-editor/edit) yalnız gönderdiğinizi değiştirir: gönderilmeyen ad, TTL ya da öncelik kaydın mevcut değerini korur.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/506/tools/databases/create' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"name":"user_app"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/tools/databases/create', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ name: 'user_app' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/tools/databases/create');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'user_app']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Islem gercekten SUNUCUDA calisir: silme cagrilari geri alinamaz.
$response = Api::Services()->RunServiceToolAction(
['id' => 506, 'tool' => 'databases', 'action' => 'create'],
[],
['name' => 'user_app'],
);Modül Metodu Çağırma
Modülün izin verdiği bir metodu çağırır. Araç sistemi olmayan hizmet tiplerinin yolu budur.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/506/module-method' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"method":"vnc_info"}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/module-method', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ method: 'vnc_info' }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/module-method');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['method' => 'vnc_info']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sonuc uc ayri alanda gelebilir: donus degeri, basilan cikti ya da yonlendirme.
$response = Api::Services()->UseServiceModuleMethod([
'id' => 506,
'method' => 'vnc_info',
]);
$data = $response['data']['result']
?? $response['data']['output']
?? $response['data']['redirect_url'];{
"data": {
"method": "vnc_info",
"redirect_url": null,
"result": { "host": "203.0.113.10", "port": 5901 },
"output": null
}
}{
"error": {
"code": "invalid_method",
"message": "Module method is not callable."
}
}Panele Giriş Bağlantısı
Hizmetin paneline tek tıkla giriş bağlantısı üretir.
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/506/sso' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{"root":false}'const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/sso', {
method: 'POST',
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ root: false }),
});
const body = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/sso');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['root' => false]),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Uretilen adres oturum tasir: log'a yazmayin, paylasmayin, kisa surede kullanin.
$response = Api::Services()->GetServiceSso(['id' => 506]);
$url = $response['data']['url'];Tuzaklar
Bu uçlar bir kaydı güncellemez; sağlayıcıya bağlanıp işi orada yaptırır. Silme işlemleri müşterinin verisini gerçekten siler ve geri alınamaz. Bir işlemi denemeden önce araç listesindeki yeteneklere bakın; desteklenmeyen bir işlemi çağırmak reddedilir.
Araç verisi ham gelir ve şekli modülden modüle değişir: bir barındırma paneli veritabanlarını başka anahtarlarla döndürür, bir diğeri başka. Tek bir modüle bakarak yazılmış ayrıştırma kodu ikinci modülde çalışmaz. Şemayı sabit varsaymayın.
Metot adını serbestçe seçemezsiniz: yalnız modülün çağrılabilir olarak işaretlediği ya da bir karşılığı bulunan metotlar çalışır, kalanı invalid_method ile döner. Bu bir güvenlik sınırıdır; modülün her genel metodunu çağırabileceğinizi varsaymayın.
Sunucu üzerinde müşteriye kapatılmış araçlar API çağrılarında da kapalıdır. Panelde yönetici olarak gördüğünüz bir araç, aynı anahtarla API'den erişilemeyebilir; sebebi yetki değil, sunucudaki kısıtlama ayarıdır.
Üretilen adres tıklandığında oturum açar. Log'a yazmak, bir yere kaydetmek ya da paylaşmak o hesaba erişimi paylaşmak demektir; bağlantıyı geçici bir kimlik bilgisi gibi tutun. Yönetici girişi isteyen çağrı ise panelin kökünü açar, tek bir müşteri hesabını değil.
İ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.