Hizmet Ayarları ve Sunucu

1.7k görüntülenme Markdown

Hizmetin erişim bilgilerini, limitlerini, sunucusunu ve bilgi bloklarını yöneten dört uç.

Genel Bakış

Bu dört uç hizmetin ayarlarına dokunur. Hizmet uçlarındaki güncelleme faturalama ve tarih alanlarını yönetir; buradakiler ise hizmete nasıl erişildiğini, hangi sunucuda durduğunu ve müşterinin sayfasında ne yazdığını belirler.

Yönetim formu hizmet tipine göre farklı davranır: erişim bilgileri ve limitler barındırma, sunucu ve özel ürünlerde işlenir, lisans alanları ise yalnız yazılım hizmetlerinde. Yanlış tipe gönderilen alan sessizce yok sayılır.

Referans

Yönetim Formunu Kaydetme

patch/api/v1/admin/services/{id}/management
Services/UpdateServiceManagement admin tipe göre değişir

Hizmetin erişim bilgilerini, kaynak limitlerini ve lisans alanlarını kaydeder.

Gövde 8
accessobjectHizmete giriş bilgileri. Yalnız gönderdiğiniz alanlar değişir; göndermedikleriniz olduğu gibi kalır.
domainstringHizmete bağlı alan adı.
hostnamestringSunucu adı.
ipstringHizmetin adresi.
usernamestringGiriş kullanıcı adı.
passwordstringGiriş şifresi. Şifreli saklanır ve geri okunamaz.
override_product_limitsboolÜrünün limitlerini bu hizmet için geçersiz kılar. Açmadan gönderdiğiniz limitler uygulanmaz.
limitsobjectKaynak limitleri. Alanlar hizmet tipine bağlıdır: barındırmada disk ve trafik, sunucuda işlemci, bellek, disk ve trafik.
modulestringHizmeti yürütecek modül. Yalnız özel ürünlerde.
licenseobjectLisans alanları. Yalnız yazılım hizmetlerinde işlenir. Göndermediğiniz alan adı, IP ya da anahtar olduğu gibi kalır; boş gönderilen alan adı ya da IP temizlenir.
domainstringLisansın bağlı olduğu alan adı.
ipstringLisansın bağlı olduğu adres.
codestringLisans anahtarı.
license_parametersobjectLisansa özgü ek alanlar.
creation_infoobjectModülün kurulum bilgisi. Mevcut değerlerle birleştirilir.
configobjectModül ayarları. Mevcut değerlerle birleştirilir.
configurationobjectModülün yapılandırması. Mevcut değerlerle birleştirilir.
Dönen alanlar data
dataobjectGüncel hizmet. Hizmet Uçları makalesindeki detay ucuyla aynı şekildedir.
——Parola yanıtta hiç dönmez. Gizli olmayan erişim bilgilerini options alanından doğrulayın.
Hatalar 2
not_found404Hizmet bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/services/506/management' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"access":{"username":"john"},"override_product_limits":true,"limits":{"disk_limit":50}}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/management', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    access: { username: 'john' },
    override_product_limits: true,
    limits: { disk_limit: 50 },
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/management');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'access'                  => ['username' => 'john'],
        'override_product_limits' => true,
        'limits'                  => ['disk_limit' => 50],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Limit gondermek yetmez: once override bayragini acin, yoksa urun limitleri gecerli kalir.
$response = Api::Services()->UpdateServiceManagement([
    'id'                      => 506,
    'override_product_limits' => true,
    'limits'                  => ['disk_limit' => 50, 'bandwidth_limit' => 500],
]);

Sunucu Değiştirme

put/api/v1/admin/services/{id}/server
Services/SetServiceServer admin veri taşınmaz

Hizmetin kaydını başka bir sunucuya bağlar ve modülü hedefe göre günceller.

Gövde 1
server_idintzorunluHedef sunucunun kimliği. Sıfır göndermek hizmeti sunucusuz bırakır ve modülü kaldırır.
Dönen alanlar data — 3
server_idintYeni sunucunun kimliği.
modulestringHedef sunucudan gelen modül. Sunucusuz bırakıldıysa none.
idintHizmet kimliği.
Hatalar 4
not_found404Hizmet bulunamadı.
same_server422Hizmet zaten o sunucuda.
server_not_found422Hedef sunucu yok.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/506/server' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"server_id":5}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/server', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ server_id: 5 }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/server');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['server_id' => 5]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bu uc yalniz KAYDI tasir; hesabi yeni sunucuda kurmak ayri bir istir.
$response = Api::Services()->SetServiceServer([
    'id'        => 506,
    'server_id' => 5,
]);

$module = $response['data']['module'];
Yanıt
{
  "data": {
    "server_id": 5,
    "module": "Mailcow",
    "id": 506
  }
}
{
  "error": {
    "code": "same_server",
    "message": "Service is already on this server."
  }
}

Bilgi Bloklarını Yazma

put/api/v1/admin/services/{id}/blocks
Services/SetServiceBlocks admin liste bütün yazılır

Müşteriye hizmet sayfasında gösterilen serbest metin bloklarını yazar.

Gövde 1
blocksarrayzorunluBlok listesi. Her blok bir başlık ve bir açıklama taşır. İkisi de boş olan bloklar atlanır; açıklama alanı için ikinci bir ad da kabul edilir.
Dönen alanlar data — 2
blocksarrayKaydedilen bloklar.
idintHizmet kimliği.
Hatalar 3
not_found404Hizmet bulunamadı.
invalid_blocks422blocks bir dizi değil.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/services/506/blocks' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"blocks":[{"title":"Connection","description":"Connect over SSH on port 22."}]}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/blocks', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    blocks: [
      { title: 'Connection', description: 'Connect over SSH on port 22.' },
    ],
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/blocks');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'blocks' => [
            ['title' => 'Connection', 'description' => 'Connect over SSH on port 22.'],
        ],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Blok EKLEMEK icin mevcut listeyi de gonderin: gonderdiginiz liste yeni gercektir.
$service = Api::Services()->GetService(['id' => 506])['data'];
$blocks  = $service['options']['blocks'] ?? [];

$blocks[] = ['title' => 'Backups', 'description' => 'Nightly, kept for 7 days.'];

Api::Services()->SetServiceBlocks(['id' => 506, 'blocks' => $blocks]);

Durum Mesajını Temizleme

post/api/v1/admin/services/{id}/clear-status-message
Services/ClearServiceStatusMessage admin

Modülün bıraktığı kalıcı durum mesajını siler.

Gövde —
——Gövde gerekmez, boş gönderin. Hizmeti adresteki kimlik belirler; durum mesajının tamamı her zaman temizlenir.
Dönen alanlar data — 2
clearedboolTemizleme başarılı mı.
idintHizmet kimliği.
Hatalar 2
not_found404Hizmet bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/services/506/clear-status-message' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/services/506/clear-status-message', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/services/506/clear-status-message');
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);
// Mesaji silmek sebebini gidermez: modul ayni hatayi yeniden yazabilir.
$response = Api::Services()->ClearServiceStatusMessage(['id' => 506]);

Tuzaklar

Sunucu değiştirmek veriyi taşımaz

Bu uç yalnız kaydı yeni sunucuya bağlar ve modülü hedefe göre değiştirir. Hesap eski sunucuda olduğu gibi durur, yenisinde ise hiç kurulmaz. Gerçek taşıma ayrı bir iştir; bu çağrı ondan sonra kaydı hizalamak içindir.

Limitler seçenek açılmadan geçmez

Kaynak limitlerini göndermek tek başına yetmez: override_product_limits açık değilse ürünün limitleri geçerli kalır ve gönderdiğiniz değerler uygulanmaz. Hata da alınmaz, o yüzden yazdıktan sonra hizmet detayından okuyup doğrulayın.

Blok listesi bütün olarak yazılır

Gönderdiğiniz liste yeni gerçektir: içinde olmayan bloklar silinir. Tek bir blok eklemek için önce mevcut listeyi okuyun, üzerine ekleyin ve tamamını geri gönderin. Başlığı ve açıklaması birlikte boş olan bloklar sessizce atlanır.

Mesajı silmek sebebini gidermez

Durum mesajı modülün bıraktığı bir izdir. Temizlemek yalnız metni kaldırır; aynı hata sürüyorsa modül bir sonraki işleminde mesajı yeniden yazar. Mesajı gizlemeden önce neden yazıldığına bakı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.