Client API İlk Çağrılar

1.7k görüntülenme Markdown

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ü

get/api/v1/admin/client/ping
System/Ping kimlik gerekmez

Müşteri tarafının ayakta olduğunu ve sunucu saatini döndürür.

Dönen alanlar data — 3
pongboolAPI ayakta mı.
versionstringAPI sürümü.
timestringSunucunun saati. Sunucunun kendi saat diliminde gelir.
Hatalar —
——Bu uç herkese açık, hata döndürmez.
İstek
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

get/api/v1/admin/client/whoami
System/Whoami kapsam gerekmez

Anahtarın kimliğini, yetkilerini ve bağlı olduğu müşteriyi döndürür.

Dönen alanlar data — 6
idintAnahtarın numarası.
typestringAnahtarın türü. Bu tarafta her zaman müşteri anahtarıdır.
namestringAnahtara verilen ad.
permissionsstring[]Anahtarın taşıdığı kapsamlar.
last_accessstringSon kullanıldığı an.
owner_idintAnahtarın bağlı olduğu müşterinin numarası. Bütün çağrılar bu müşteriyle sınırlıdır.
Hatalar 4
missing_token401Anahtar gönderilmemiş ya da tanınmıyor.
key_revoked401Anahtar iptal edilmiş.
audience_mismatch403Müşteri tarafında yönetim anahtarı kullanılmış.
ip_not_allowed403İstek izin verilen adreslerin dışından geldi.
İstek
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

get/api/v1/admin/client/reference/countries
Reference/GetCountries kapsam gerekmez

Profil ve adres uçlarının kabul ettiği ülke kodlarını döndürür.

Dönen alanlar data[] — 2
codestringİki harfli ülke kodu. Profil ve adres uçları bu değeri ister, numarayı değil.
namestringÜlke adı. Sitenin dilinde gelir.
Hatalar 3
missing_token401Anahtar gönderilmemiş ya da tanınmıyor.
key_revoked401Anahtar iptal edilmiş.
audience_mismatch403Müşteri tarafında yönetim anahtarı kullanılmış.
İstek
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

get/api/v1/admin/client/reference/countries/{code}/states
Reference/GetStates kapsam gerekmez

Bir ülkenin illerini adres alanlarında kullanılan numaralarla döndürür.

Dönen alanlar data[] — 2
idintİlin numarası. Adres uçlarındaki il alanı ve şehir aramasının girdisi budur.
namestringİlin adı.
Hatalar 4
not_found404Böyle bir ülke kodu yok.
missing_token401Anahtar gönderilmemiş ya da tanınmıyor.
key_revoked401Anahtar iptal edilmiş.
audience_mismatch403Müşteri tarafında yönetim anahtarı kullanılmış.
İstek
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

get/api/v1/admin/client/reference/states/{id}/cities
Reference/GetCities kapsam gerekmez

Bir ilin şehirlerini adres alanlarında kullanılan numaralarla döndürür.

Dönen alanlar data[] — 2
idintŞehrin numarası. Adres uçlarındaki şehir alanı budur.
namestringŞehrin adı.
Hatalar 4
not_found404Böyle bir il yok.
missing_token401Anahtar gönderilmemiş ya da tanınmıyor.
key_revoked401Anahtar iptal edilmiş.
audience_mismatch403Müşteri tarafında yönetim anahtarı kullanılmış.
İstek
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

Yönetim anahtarı bu tarafta çalışmaz

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.

Müşteri anahtardan gelir, istekten değil

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.

Ülke kodla, il ve şehir numarayla konuşur

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.

Boş liste hata değil, serbest metin işaretidir

İ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 kontrolü anahtarı doğrulamaz

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.

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.