Client API İlk Çağrılar
Müşteri tarafına bağlanırken çağrılan beş uç: sağlık, anahtar ve adres listeleri.
Genel Bakış
Müşteri API'si, bir müşterinin kendi hesabını bir tümleştirmeden yönetmesi içindir. Yönetim API'sinden ayrı bir arayüzdür: ayrı adres, ayrı anahtar türü ve her çağrı tek bir müşteriyle sınırlı.
Bu makale ilk üç soruyu yanıtlar: API ayakta mı, anahtarım ne yapabiliyor ve adres alanlarını hangi değerlerle dolduracağım.
Adres zinciri tek yönlü çalışır: önce ülke kodu, sonra il numarası, sonra şehir numarası. Her adım bir öncekini ister ve herhangi biri boş dönebilir.
Referans
Sağlık Kontrolü
Müşteri tarafının ayakta olduğunu ve sunucu saatini döndürür.
curl 'https://panel.ornek.com/api/v1/client/ping'const res = await fetch('https://panel.ornek.com/api/v1/client/ping');
const { data } = await res.json();
if (! data.pong) reportOutage();$ch = curl_init('https://panel.ornek.com/api/v1/client/ping');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yonetim tarafinin ayni adli ucundan AYRIDIR; biri ayaktayken digeri kapali olabilir.
$up = Kernel::internal('client:System/Ping')['data']['pong'] ?? false;Anahtar Bilgisi
Anahtarın kimliğini, yetkilerini ve bağlı olduğu müşteriyi döndürür.
curl 'https://panel.ornek.com/api/v1/client/whoami' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/whoami', {
headers: { Authorization: `Bearer ${clientKey}` },
});
if (res.status === 403) return showWrongSurface();
const { data } = await res.json();
console.log(data.owner_id, data.permissions);$ch = curl_init('https://panel.ornek.com/api/v1/client/whoami');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// owner_id CAGRILARDA GECMEZ: musteri anahtardan cozulur, govdeye yazmak bir sey degistirmez.
$me = Kernel::internal('client:System/Whoami', ['owner_id' => $ownerId])['data'];Ülkeler
Profil ve adres uçlarının kabul ettiği ülke kodlarını döndürür.
curl 'https://panel.ornek.com/api/v1/client/reference/countries' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/reference/countries', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
renderCountryPicker(data);$ch = curl_init('https://panel.ornek.com/api/v1/client/reference/countries');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Musteri tarafi ULKE KODUYLA konusur; yonetim tarafindaki ulke NUMARASI burada gecmez.
$rows = Kernel::internal('client:Reference/GetCountries', ['owner_id' => $uid])['data'];
$codes = array_column($rows, 'code');Bir Ülkenin İlleri
Bir ülkenin illerini adres alanlarında kullanılan numaralarla döndürür.
curl 'https://panel.ornek.com/api/v1/client/reference/countries/TR/states' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/reference/countries/${code}/states`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (! data.length) useFreeTextState();$ch = curl_init('https://panel.ornek.com/api/v1/client/reference/countries/' . $code . '/states');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// BOS liste normaldir: o ulkede il kaydi yoksa adres alanina serbest metin gonderilir.
$states = Kernel::internal('client:Reference/GetStates', ['owner_id' => $uid, 'code' => $code])['data'];
$free = ! $states;Bir İlin Şehirleri
Bir ilin şehirlerini adres alanlarında kullanılan numaralarla döndürür.
curl 'https://panel.ornek.com/api/v1/client/reference/states/34/cities' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch(`https://panel.ornek.com/api/v1/client/reference/states/${stateId}/cities`, {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();$ch = curl_init('https://panel.ornek.com/api/v1/client/reference/states/' . $stateId . '/cities');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Sehir listesi bos gelse bile adreste SEHIR ZORUNLUDUR: serbest metin yazilir, bos birakilamaz.
$cities = Kernel::internal('client:Reference/GetCities', ['owner_id' => $uid, 'id' => $stateId])['data'];Tuzaklar
Müşteri tarafı yalnız müşteri anahtarı kabul eder; yönetim anahtarıyla çağırmak audience_mismatch verir. Hata kod olarak yetki değil yanlış taraf anlamına gelir; anahtarı değiştirmek yerine adresi düzeltmeye çalışmak zaman kaybıdır.
Bütün müşteri uçları anahtarın sahibiyle sınırlıdır. Gövdeye bir müşteri numarası yazmak hiçbir şeyi değiştirmez; başkasının kaydını istemek bulunamadı yanıtı verir. Birden çok müşteriye erişmek gerekiyorsa yönetim tarafını kullanın.
Müşteri tarafında ülke iki harfli kodla verilir; yönetim tarafındaki ülke numarası burada geçmez. İl ve şehir ise numara ister. Üç alanı aynı biçimde doldurmaya çalışmak sessiz bir doğrulama hatasına yol açar.
İl ya da şehir listesi boş dönebilir: platformda o ülke ya da il için veri yoktur. Bu durumda adres alanına serbest metin yazılır. Şehir alanı boş liste gelse bile zorunlu kalır; adres kaydı şehirsiz geçmez.
Sağlık ucu kimlik istemez, yani başarılı yanıtı anahtarınızın çalıştığı anlamına gelmez. Bir tümleştirmeyi bağlarken ikisini birlikte çağırın: sağlık ucu sunucuyu, anahtar bilgisi kimliği doğrular.
İ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.