Eklenti Modülleri

8 görüntülenme Markdown

Kurulu eklenti modüllerini listeleyen, ayarlayan, deneyen ve kaldıran yedi uç.

Genel Bakış

Eklenti modülleri kurulumu genişleten parçalardır: muhasebe entegrasyonu, sohbet, çeviri. Bu yedi uç onları listeler, ayarlar, dener, kendi metotlarını çalıştırır ve kaldırır.

Her modül farklı şeyler destekler. Detay ucundaki yetenek listesi neyin mümkün olduğunu söyler: ayarı var mı, bağlantı denemesi sunuyor mu, hangi metotları çağrılabilir. Metot adını tahmin etmek yerine bu listeden okuyun.

Referans

Eklentileri Listeleme

get/api/v1/admin/tools/addons
Tools/GetAddons admin

Kurulu eklenti modüllerini döndürür.

Sorgu parametreleri 3
statusstringDuruma göre süzer: etkin ya da kapalı.
searchstringModüllerde arar.
include_premiumintResmî mağazadan alınabilecek modülleri de getirir. Onlar kurulu listede değil, meta altında ayrı döner.
Dönen alanlar data[] — 9
keystringModülün anahtarı. Adreste bu kullanılır; tire, nokta ve boşluk alt çizgiye çevrilir.
namestringModülün adı.
descriptionstringNe işe yaradığı.
authorstringYazarı.
versionstringSürümü.
statusboolEtkin mi.
premiumboolÜcretli bir modül mü.
logostringLogosunun adresi.
installedboolKurulu mu.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -G 'https://panel.ornek.com/api/v1/admin/tools/addons' \
  -H "Authorization: Bearer $API_KEY" \
  -d status=enabled
const url = new URL('https://panel.ornek.com/api/v1/admin/tools/addons');
url.searchParams.set('status', 'enabled');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
$url = 'https://panel.ornek.com/api/v1/admin/tools/addons?' . http_build_query(['status' => 'enabled']);

$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);
// Magaza modulleri KURULU listede degil, meta altinda ayri gelir.
$response = Api::Tools()->GetAddons([], ['include_premium' => 1]);

$installed = $response['data'];
$buyable   = $response['meta']['premium'] ?? [];

Eklenti Detayı

get/api/v1/admin/tools/addons/{module}
Tools/GetAddon admin şifreler maskeli

Bir eklentinin ayarlarını, form tanımını ve neler yapabildiğini döndürür.

Dönen alanlar data — 14
keystringModülün anahtarı. Adreste bu kullanılır; tire, nokta ve boşluk alt çizgiye çevrilir.
namestringModülün adı.
descriptionstringNe işe yaradığı.
authorstringYazarı.
versionstringSürümü.
statusboolEtkin mi.
premiumboolÜcretli bir modül mü.
logostringLogosunun adresi.
installedboolKurulu mu.
opening_typestringModülün panelde nasıl açıldığı.
access_psstring[]Modüle erişebilecek yetki grupları.
settingsobjectModülün kayıtlı ayarları.
fieldsobjectAyar formunun tanımı. Şifre tipindeki alanların değerleri maskelenir.
capabilitiesobjectModülün destekledikleri.
has_settingsboolAyarları var mı.
has_testboolBağlantı denemesini destekliyor mu.
has_uninstallboolKaldırılabilir mi.
has_admin_areaboolPanelde kendi sayfası var mı.
has_client_areaboolMüşteri alanında görünüyor mu.
methodsstring[]Çağrılabilir metotlarının adları. Metot çalıştırma ucu yalnız bu listedekileri kabul eder.
Hatalar 3
module_required422Modül anahtarı verilmedi.
not_found404Modül bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Cagirilabilir metotlarin listesi BURADAN gelir; metot adini tahmin etmeyin.
$module = Api::Tools()->GetAddon(['module' => 'Parasut'])['data'];

$methods = $module['capabilities']['methods'];

Durumu Değiştirme

put/api/v1/admin/tools/addons/{module}/status
Tools/UpdateAddonStatus admin

Eklentiyi etkinleştirir ya da devre dışı bırakır.

Gövde 1
statusintzorunlu1 etkinleştirir, 0 devre dışı bırakır.
Dönen alanlar data
dataobjectDeğişiklik sonrası eklenti özeti. Listedeki öğeyle aynı şekildedir.
Hatalar 4
status_required422Durum verilmedi.
not_supported422Modül durum değişimini desteklemiyor.
status_change_failed422Durum değiştirilemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/status' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"status":1}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/status', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ status: 1 }),
});

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

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Etkinlestirmek modulun kendi kurulum adimlarini calistirir: tablo acabilir, kanca kaydedebilir.
Api::Tools()->UpdateAddonStatus(['module' => 'Parasut', 'status' => 1]);

Ayarları Kaydetme

put/api/v1/admin/tools/addons/{module}/settings
Tools/UpdateAddonSettings admin maske geri gönderilmez

Modülün ayarlarını yazar ve isterseniz durumunu da aynı istekte değiştirir.

Gövde 3
fieldsobjectAyar formunun değerleri. Alan adları detaydaki form tanımından gelir.
access_psstring[]Modüle erişebilecek yetki grupları.
statusintModülün durumu. Gönderirseniz ayarlarla birlikte değiştirilir.
Dönen alanlar data — 4
keystringModülün anahtarı.
statusboolİşlem sonrası durum.
access_psstring[]Kaydedilen yetki listesi.
settingsobjectKaydedilen ayarlar.
Hatalar 5
not_supported422Modülün ayarı yok.
settings_invalid422Ayarlar kabul edilmedi.
settings_failed422Ayarlar kaydedilemedi.
status_change_failed422Durum değiştirilemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"fields":{"api_key":"xxxx"},"status":1}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    fields: { api_key: secret },
    status: 1,
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'fields' => ['api_key' => $secret],
        'status' => 1,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Detaydan okudugunuz sifre alanlari MASKELIDIR: oldugu gibi geri gonderirseniz maskeyi kaydedersiniz.
$module = Api::Tools()->GetAddon(['module' => 'Parasut'])['data'];
$fields = $module['settings'];

unset($fields['api_key']);      // dokunulmayacaksa hic gonderme
$fields['webhook_url'] = $url;

Api::Tools()->UpdateAddonSettings(['module' => 'Parasut', 'fields' => $fields]);

Bağlantıyı Deneme

post/api/v1/admin/tools/addons/{module}/test-connection
Tools/TestAddonConnection admin

Modülün kayıtlı ayarlarıyla karşı servise ulaşıp ulaşmadığını dener.

Gövde
Gövde gerekmez, boş gönderin. Kimlik bilgileri istekten değil modülün kayıtlı ayarlarından gelir.
Dönen alanlar data — 2
keystringModülün anahtarı.
connectedboolBağlantı kuruldu mu.
Hatalar 3
test_not_supported422Modül denemeyi desteklemiyor.
test_failed422Bağlantı kurulamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/test-connection' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/test-connection', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/test-connection');
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);
// Deneme KAYITLI ayarlari kullanir: once kaydedin, sonra deneyin.
Api::Tools()->UpdateAddonSettings(['module' => 'Parasut', 'fields' => $fields]);
$test = Api::Tools()->TestAddonConnection(['module' => 'Parasut']);

Modül Metodu Çalıştırma

post/api/v1/admin/tools/addons/{module}/methods/{method}
Tools/RunAddonMethod admin izin listesine bağlı

Eklentinin kendi metotlarından birini çalıştırır.

Adres parçaları 2
modulestringModülün anahtarı.
methodstringMetodun adı. Detaydaki çağrılabilir metot listesinden gelir ve önek olmadan yazılır.
Gövde
Gövde gerekmez, boş gönderin. Modül metodu argümansız çağrılır; gönderdiğiniz hiçbir alan ona ulaşmaz.
Dönen alanlar data — 3
keystringModülün anahtarı.
methodstringÇalıştırılan metot.
resultmixedMetodun dönüş değeri. Şekli tamamen modüle bağlıdır.
Hatalar 4
method_required422Metot adı verilmedi.
method_not_found422Modülde böyle bir metot yok.
method_failed422Metot başarısız oldu ya da boş döndü.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/methods/sync' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/methods/sync', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut/methods/sync');
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);
// Bos donus BASARISIZLIK sayilir: metot bir sey dondurmuyorsa 'method_failed' alirsiniz.
$module  = Api::Tools()->GetAddon(['module' => 'Parasut'])['data'];

if (in_array('sync', $module['capabilities']['methods'], true)) {
    Api::Tools()->RunAddonMethod(['module' => 'Parasut', 'method' => 'sync']);
}

Eklentiyi Silme

delete/api/v1/admin/tools/addons/{module}
Tools/DeleteAddon admin dizin silinir

Modülü kaldırır ve dosyalarını diskten siler.

Dönen alanlar data — 2
deletedboolSilme başarılı mı.
keystringSilinen modülün anahtarı.
Hatalar 5
not_found404Modül bulunamadı.
blocked_by_gate422Bir kanca kaldırmayı veto etti.
uninstall_failed422Modülün kendi kaldırma adımı başarısız oldu.
removal_failed422Dosyalar silinemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/tools/addons/Parasut' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tools/addons/Parasut');
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);
// Bu uc modulun DIZININI de siler: geri donmek icin modulu yeniden yuklemeniz gerekir.
// Gecici olarak durdurmak istiyorsaniz durumu kapatin, silmeyin.
Api::Tools()->UpdateAddonStatus(['module' => 'Parasut', 'status' => 0]);

Tuzaklar

Maskelenmiş şifreyi geri göndermeyin

Detay ucu şifre tipindeki alanları maskeli döndürür. Ayarları okuyup olduğu gibi geri yazarsanız gerçek şifrenin yerine maskeyi kaydedersiniz ve modül karşı servise bağlanamaz. Değişmeyecek şifre alanlarını gövdeden tamamen çıkarın.

Silmek dizini de kaldırır

Silme ucu modülü yalnız kapatmaz: kendi kaldırma adımını çalıştırır ve dosyalarını diskten siler. Geri dönmek modülü yeniden yüklemeyi gerektirir. Bir modülü geçici olarak durdurmak istiyorsanız durumunu kapatın.

Deneme kayıtlı ayarları kullanır

Bağlantı denemesi gövde almaz; modülün zaten kayıtlı ayarlarıyla çalışır. Yeni bir anahtarı denemek istiyorsanız önce kaydetmeniz gerekir, yani deneme başarısız olursa yanlış ayar çoktan yazılmış olur.

Boş dönüş başarısızlık sayılır

Modül metodu çalıştırma ucu, metot bir şey döndürmediğinde method_failed verir. Yani gerçekten çalışmış ama sonuç üretmemiş bir metot da hata gibi görünür; modülün ne döndürdüğünü bilmeden bu kodu kesin başarısızlık saymayın.

Mağaza modülleri kurulu listede değildir

Satın alınabilir modülleri istediğinizde onlar ana listeye karışmaz; ayrı bir alanda döner. Ana listedeki her satır kuruludur, o yüzden "kurulu mu" alanına bakarak ayırmaya çalışmayı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.