Modül Ayarları ve Çağrıları

1.7k görüntülenme Markdown

Tek bir modülün ayarlarını, sınamasını, metotlarını ve kayıtlarını kapsayan altı uç.

Genel Bakış

Bu makale tek bir modülün içine uzanan uçları toplar: ayarlarını okumak ve yazmak, bağlantısını sınamak, kendi metotlarını çağırmak ve tuttuğu kayıtları görmek.

Ayar yazmanın iki yolu vardır ve aralarındaki fark önemlidir. Ayar ucu panelin kaydetme yolunu izler: modülün süzgeçleri, doğrulaması ve kancaları çalışır. Yapılandırma ucu ise dosyaya doğrudan yazar.

Sırlar sunucudan çıkmaz. Parola benzeri her değer maskeyle döner ve aynı maskeyi geri göndermek "bu alanı değiştirme" demektir.

Referans

Ham Yapılandırmayı Okuma

get/api/v1/admin/modules/{group}/{module}/config
Modules/GetModuleConfig admin

Modülün diskteki ayarlarını olduğu gibi döndürür.

Dönen alanlar data — 4
groupstringGrubun anahtarı.
keystringModülün anahtarı.
statusboolModül açık mı.
settingsobjectHam ayarlar. Sır benzeri anahtarların değeri maskelenir.
Hatalar 3
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/modules/mail/Mailjet/config' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/config`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data } = await res.json();
const masked = Object.entries(data.settings).filter(([, v]) => v === '**********');
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key . '/config');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sirlar MASKELI gelir: bu cikti bir yedek DEGILDIR, baska kuruluma tasirsaniz anahtarlar gitmez.
$cfg = Api::Modules()->GetModuleConfig(['group' => $group, 'module' => $key])['data'];

Ham Yapılandırmayı Yazma

put/api/v1/admin/modules/{group}/{module}/config
Modules/SaveModuleConfig admin doğrulama yok

Gönderdiğiniz anahtarları modülün ayar dosyasına birleştirir.

Gövde 2
settingsobjectBirleştirilecek anahtarlar. Maske değerini geri göndermek sırrı korur.
statusintModül durumu. Ürün ve dolandırıcılık gruplarında yazılır. Kapalı, kullanımdan kaldırılmış bir modülü açmak module_deprecated ile reddedilir.
Dönen alanlar data — 4
dataobjectYeniden okunan yapılandırma. Okuma ucuyla aynı şekildedir.
Hatalar 5
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
settings_required422Ne ayar ne durum gönderildi.
module_deprecated422Kapalı, kullanımdan kaldırılmış bir ürün ya da dolandırıcılık modülü açılmak istendi. Birlikte gönderilen ayarlar dahil hiçbir şey yazılmaz; açık olan böyle bir modül açık kalır ve kalıcı olarak kapatılabilir.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/modules/mail/Mailjet/config' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"settings":{"from_name":"Support"}}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/config`, {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ settings: { from_name: 'Support' } }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key . '/config');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['settings' => ['from_name' => 'Support']]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Bu uc dosyaya DOGRUDAN yazar: modulun kendi dogrulamasi ve kancalari CALISMAZ.
// Gunluk kullanimda ayar ucunu secin; bu uc kurtarma ve gecis icindir.
Api::Modules()->SaveModuleConfig([
    'group' => $group, 'module' => $key, 'settings' => ['from_name' => 'Support'],
]);

Ayarları Kaydetme

put/api/v1/admin/modules/{group}/{module}/settings
Modules/UpdateModuleSettings admin modül doğrular

Ayarları modülün kendi doğrulamasından geçirerek kaydeder.

Gövde 7
settingsobjectModülün yapılandırma alanları. Maske değerini geri göndermek sırrı korur.
statusintModül durumu. Ödeme ve dolandırıcılık gruplarında geçerlidir. Etkin olmayan, kullanımdan kaldırılmış bir ödeme ya da dolandırıcılık modülünü açmak module_deprecated ile reddedilir.
commission_ratestringBu yöntemle ödeyene eklenen oran. Ödemeye özgü. Sıfır ya da daha büyük olur: negatif oran module_error ile reddedilir.
force_convert_tointTutarın çevrileceği para birimi numarası. Ödemeye özgü.
accepted_countriesarraySadece bu ülkelere açık. Ödemeye özgü.
unaccepted_countriesarrayBu ülkelere kapalı. Ödemeye özgü.
change_subscription_feeintAbonelik değişiminde ücret alınsın mı. Ödemeye özgü.
Dönen alanlar data — 12
dataobjectModülün taze detayı. Katalog makalesindeki okuma ucuyla aynı şekildedir.
Hatalar 6
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
module_error422Modül ayarları reddetti. Mesaj modülden gelir.
module_deprecated422Etkin olmayan, kullanımdan kaldırılmış bir ödeme ya da dolandırıcılık modülü açılmak istendi. Hiçbir şey yazılmaz; details.modules onu adlandırır. Zaten etkin olan böyle bir modül normal kaydedilir ve kapatılabilir.
not_supported422Posta ya da kısa mesaj modülü; hiçbir şeye dokunulmaz. Ayarlarını yukarıdaki ham config ucuyla kaydedin; mesaj adresi verir.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/modules/payment/Stripe/settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"settings":{"api_key":"sk_live_123"},"commission_rate":"2.5"}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/settings`, {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    settings: { api_key: 'sk_live_123' },
    commission_rate: '2.5',
  }),
});

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

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Panelin kaydetme yolunun aynisi: modul filtreleri, dogrulamasi ve kancalari CALISIR.
Api::Modules()->UpdateModuleSettings([
    'group' => 'payment', 'module' => 'Stripe',
    'settings' => ['api_key' => $liveKey], 'commission_rate' => '2.5',
]);

Bağlantıyı Sınama

post/api/v1/admin/modules/{group}/{module}/test-connection
Modules/TestModuleConnection admin

Modülün karşı servise ulaşıp ulaşmadığını dener.

Gövde 1
settingsobjectSınamada kullanılacak ayarlar. Gönderilmeyen alanlar kayıtlı yapılandırmadan gelir.
Dönen alanlar data — 3
groupstringGrubun anahtarı.
keystringModülün anahtarı.
connectedboolBağlantı kuruldu mu.
Hatalar 4
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
module_error422Sınama başarısız ya da modül sınamayı desteklemiyor.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/modules/payment/Stripe/test-connection' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"settings":{"api_key":"sk_test_123"}}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/test-connection`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ settings: { api_key: candidate } }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key . '/test-connection');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['settings' => ['api_key' => $candidate]]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sinama KAYDETMEZ: yeni anahtari once burada deneyin, gecerse ayar ucuyla yazin.
$out = Api::Modules()->TestModuleConnection([
    'group' => $group, 'module' => $key, 'settings' => ['api_key' => $candidate],
])['data'];

if ($out['connected']) Api::Modules()->UpdateModuleSettings([
    'group' => $group, 'module' => $key, 'settings' => ['api_key' => $candidate],
]);

Modül Metodu Çalıştırma

post/api/v1/admin/modules/{group}/{module}/methods/{method}
Modules/RunModuleMethod admin modüle özgü

Modülün kendi panel metodunu çağırır ve sonucunu döndürür.

Gövde —
*objectModüle özgü serbest gövde. Metoda olduğu gibi aktarılır.
Dönen alanlar data — 4
groupstringGrubun anahtarı.
keystringModülün anahtarı.
methodstringÇalıştırılan metot.
resultstringMetodun sonucu. Metin ya da nesne olabilir; panelde gösterilen işaretleme de gelebilir.
Hatalar 5
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
method_required422Metot adı boş.
method_error422Metot bulunamadı ya da hata döndürdü. Posta ya da kısa mesaj modülünün save çağrısı, aktif personelin giriş kodunu aldığı kanalı kapatacaksa geri alınır ve bu kodla o personeli sayarak döner. Etkin olmayan, kullanımdan kaldırılmış bir kısa mesaj modülü ya da kapalı, kullanımdan kaldırılmış bir dolandırıcılık modülü de bu yoldan açılamaz; hiçbir şey yazılmaz.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/modules/product/SampleProduct/methods/crud-list' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"page":1}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/${group}/${key}/methods/${method}`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ page: 1 }),
});

const { data } = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/' . $group . '/' . $key . '/methods/' . $method);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['page' => 1]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sonuc PANELIN kendi ciktisi olabilir; bicimi modul belirler, API sozlesmesi degil.
$out = Api::Modules()->RunModuleMethod([
    'group' => $group, 'module' => $key, 'method' => $method, 'page' => 1,
])['data'];

$isMarkup = is_string($out['result']);

Dolandırıcılık Kayıtlarını Okuma

get/api/v1/admin/modules/{group}/{module}/records
Modules/GetFraudRecords admin dolandırıcılığa özgü

Bir dolandırıcılık modülünün işaretlediği kayıtları döndürür.

Sorgu 3
pageintKaçıncı sayfa.
limitintSayfa başına kayıt. En çok 100.
searchstringKayıtlarda arar.
Dönen alanlar data[] — 7 + meta — 4
idintKaydın numarası.
user_idintİşaretlenen müşterinin numarası.
user_full_namestringMüşterinin adı soyadı.
user_company_namestringMüşterinin şirket adı.
messagestringModülün yazdığı gerekçe.
ipstringİşlemin geldiği adres.
created_atstringKaydın düşüldüğü an.
countintDönen kayıt sayısı. Meta altında döner.
totalintToplam kayıt.
pageintBulunulan sayfa.
limitintSayfa boyutu.
Hatalar 4
unknown_group404Böyle bir modül grubu yok.
module_not_found404Modül bulunamadı.
not_supported422Dolandırıcılık dışı grup ya da kayıt tutmayan modül.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/modules/fraud/MaxMind/records?limit=50' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/modules/fraud/${key}/records`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data, meta } = await res.json();
const flagged = new Set(data.map((r) => r.user_id));
$ch = curl_init('https://panel.ornek.com/api/v1/admin/modules/fraud/' . $key . '/records');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Kayit tutmak modulun secimidir: yetenek listesinde gormeden cagirirsaniz 422 alirsiniz.
$m = Api::Modules()->GetModule(['group' => 'fraud', 'module' => $key])['data'];
if ($m['capabilities']['has_records'])
    $rows = Api::Modules()->GetFraudRecords(['group' => 'fraud', 'module' => $key])['data'];

Tuzaklar

Yapılandırma ucu modülün doğrulamasını atlar

Yapılandırma ucu ayarları doğrudan dosyaya yazar: modülün alan süzgeçleri, denetimleri ve kaydetme kancaları çalışmaz. Geçersiz bir değer hata vermeden yazılır ve ilk gerçek kullanımda patlar. Günlük iş için ayar ucunu seçin; yapılandırma ucu kurtarma ve geçiş içindir.

Maskelenmiş sır bir yedek değildir

Okuma uçları sır benzeri değerleri maskeyle döndürür, gerçek değeri hiç vermez. Bir modülün yapılandırmasını dışa aktarıp başka bir kuruluma taşırsanız anahtarlar taşınmaz; hedefte alanlar maskeyle dolar ve modül çalışmaz. Sırları ayrı taşıyın.

Sınama hiçbir şey kaydetmez

Bağlantı sınaması gönderdiğiniz ayarları o çağrıyla sınırlı kullanır; başarılı olsa bile hiçbir şey yazmaz. Yeni bir anahtarı sınayıp kaydetmeyi unutmak, çalıştığını gördüğünüz yapılandırmanın aslında hiç var olmadığı anlamına gelir. Sınamadan sonra ayar ucuyla yazın.

Metot sonucunun biçimi sözleşme değildir

Metot çalıştırma ucu modülün panel metodunu çağırır ve sonucu olduğu gibi verir. Bu sonuç bir nesne olabileceği gibi panelin göstereceği işaretleme de olabilir. Biçimi modül belirler ve sürümle değişebilir; ayrıştırmaya dayalı bir tümleştirme kurmayın. Kayıt listeleyen bir metot (registrar domains ya da tlds, fraud records) panelin tablo yanıtını verir: total ve body içinde işlenmiş satırlar; sayfalama ve arama gövdede ya da sorgu dizesinde gönderilen page, perPage ve search alanlarıyla çalışır.

Kayıtlar her dolandırıcılık modülünde bulunmaz

Kayıt ucu dolandırıcılık grubu dışında not_supported döner, ve o grupta bile her modül kayıt tutmaz. Çağırmadan önce modül detayındaki yetenek listesine bakın; orada görünmüyorsa uç boş değil hata döndürür.

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.