Anahtarın Hesabı
Anahtarın sahibi olan hesabın profilini, tercihlerini ve güvenlik durumunu veren beş uç.
Genel Bakış
Müşteri API'sinde hesap her zaman anahtardan çözülür. Bir müşteri numarası parametresi yoktur; bu beş uç anahtarın sahibinin kendi kaydını okur ve yazar.
Profilde ne değiştirilebileceğine operatör karar verir. Okuma ucu bu kararı birlikte döndürür: hangi alanlar açık, hangileri boş bırakılamaz.
Hesap güvenliği bilinçli olarak dışarıda tutulur. Parola, e-posta değişimi, iki adımlı giriş kurulumu ve oturum kapatma panelde kalır; API yalnız durumlarını gösterir.
Referans
Profili Okuma
Anahtarın sahibi olan müşterinin profilini döndürür.
curl 'https://panel.ornek.com/api/v1/client/me' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/me', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data, meta } = await res.json();
renderForm(data, meta.editable, meta.required);$ch = curl_init('https://panel.ornek.com/api/v1/client/me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Formu meta.editable'dan kurun: operatorun kapattigi alani gondermek 422 verir, sessizce gecmez.
$r = Kernel::internal('client:Account/GetMe', ['owner_id' => $uid]);
$form = array_intersect_key($r['data'], array_flip($r['meta']['editable']));Profili Güncelleme
Gönderdiğiniz profil alanlarını değiştirir.
curl -X PATCH 'https://panel.ornek.com/api/v1/client/me' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"timezone":"Europe/Istanbul","date_format":"d/m/Y"}'const res = await fetch('https://panel.ornek.com/api/v1/client/me', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ timezone: 'Europe/Istanbul' }),
});
const { meta } = await res.json();
console.log(meta.changed);$ch = curl_init('https://panel.ornek.com/api/v1/client/me');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['timezone' => 'Europe/Istanbul']),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// E-POSTA ve PAROLA bu uctan degismez: ikisi de dogrulama akisi ister, panelde kalir.
$r = Kernel::internal('client:Account/UpdateMe', ['owner_id' => $uid, 'timezone' => $tz]);
$written = $r['meta']['changed'];Bildirim Tercihlerini Okuma
Hesabın hangi bildirimleri hangi kanaldan aldığını döndürür.
curl 'https://panel.ornek.com/api/v1/client/me/notifications' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/me/notifications', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
const editable = data.categories.filter((c) => ! c.locked);$ch = curl_init('https://panel.ornek.com/api/v1/client/me/notifications');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Yazmadan ONCE okuyun: yazma TAM DEGISTIRMEDIR, gonderilmeyen kategori iki kanalda da kapanir.
$cur = Kernel::internal('client:Account/GetNotifications', ['owner_id' => $uid])['data'];Bildirim Tercihlerini Yazma
Bildirim tercihlerinin tamamını yeniden yazar.
curl -X PUT 'https://panel.ornek.com/api/v1/client/me/notifications' \
-H "Authorization: Bearer $CLIENT_KEY" \
-H 'Content-Type: application/json' \
-d '{"invoices":{"email":true,"sms":false},"support":{"email":true,"sms":true}}'const cur = await fetch('https://panel.ornek.com/api/v1/client/me/notifications', {
headers: { Authorization: `Bearer ${clientKey}` },
}).then((r) => r.json());
const body = {};
for (const c of cur.data.categories)
if (! c.locked) body[c.category] = { email: c.email, sms: c.sms };
body.marketing = { email: false, sms: false };
await fetch('https://panel.ornek.com/api/v1/client/me/notifications', {
method: 'PUT',
headers: {
Authorization: `Bearer ${clientKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});$ch = curl_init('https://panel.ornek.com/api/v1/client/me/notifications');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $clientKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($prefs),
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// Gondermediginiz kategori KAPANIR: tek bir tercihi degistirmek icin bile tam seti gonderin.
$cur = Kernel::internal('client:Account/GetNotifications', ['owner_id' => $uid])['data'];
$body = [];
foreach ($cur['categories'] as $c)
if (! $c['locked']) $body[$c['category']] = ['email' => $c['email'], 'sms' => $c['sms']];
$body['marketing'] = ['email' => false, 'sms' => false];
Kernel::internal('client:Account/UpdateNotifications', ['owner_id' => $uid] + $body);Güvenlik Özetini Okuma
Doğrulama durumunu, iki adımlı girişi ve son oturumları döndürür.
curl 'https://panel.ornek.com/api/v1/client/me/security' \
-H "Authorization: Bearer $CLIENT_KEY"const res = await fetch('https://panel.ornek.com/api/v1/client/me/security', {
headers: { Authorization: `Bearer ${clientKey}` },
});
const { data } = await res.json();
if (! data.two_factor.enabled) nudgeToEnable();$ch = curl_init('https://panel.ornek.com/api/v1/client/me/security');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $clientKey],
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);// SALT OKUMADIR: oturum kapatma, parola ve iki adimli giris kurulumu API'de YOK, panelde kalir.
$sec = Kernel::internal('client:Account/GetSecurity', ['owner_id' => $uid])['data'];
$stale = array_filter($sec['sessions'], fn ($s) => $s['country_code'] !== $home);Tuzaklar
Bildirim yazma ucu gövdeyi tercihlerin tamamı olarak okur: göndermediğiniz bir kategori hem e-posta hem kısa mesaj kanalında kapanır. Tek bir kategoriyi değiştirmek için önce mevcut listeyi okuyup üzerine yazın. Genel kategori kilitlidir ve gönderilse de değişmez.
Operatörün düzenlemeye kapattığı bir alanı göndermek 422 ile reddedilir. Bir formu sabit alan listesiyle kurmak, o alanlardan biri kapatıldığında bütün kaydı düşürür. Alan listesini her zaman okuma ucunun döndürdüğü düzenlenebilir listeden kurun.
Profildeki para birimi alanı tutarların nasıl gösterileceğini söyler; cüzdanın kendi para birimi ise bakiye nesnesinin içinde ayrı gelir. İkisi farklı olabilir ve bakiyeyi görüntü birimiyle yorumlamak yanlış tutar üretir. Bakiyeyi kendi biriminde okuyun.
Görsel alanı adres kabul etmez: sunucu sizin verdiğiniz bir adresi asla çekmez, çünkü giden istek sunucunun gerçek adresini açığa çıkarırdı. Görseli kodlanmış içerik olarak gönderin; boş göndermek görseli kaldırır.
Numara değiştiğinde doğrulanmışlık işareti silinir ve yeni numara doğrulanana kadar telefona bağlı akışlar çalışmaz. Aynısı e-posta için de geçerlidir, ama e-posta bu uçtan hiç değiştirilemez. Numarayı değiştirdikten sonra müşteriyi doğrulamaya yönlendirin.
Güvenlik özeti oturumları listeler ama kapatamaz; oturum belirteçleri de hiç dönmez. Parola değişimi, iki adımlı giriş kurulumu ve kimlik doğrulama belgeleri de aynı sebeple panelde tutulur: hepsi kesintisiz bir insan etkileşimi ister.
İ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.