/api/v1/oauth/clients endpoint’leriyle yönetmeyi anlatır. Erişim token’ı alma akışı için Yetkilendirme kodu ve PKCE sayfasına bakın.
Uygulamalar kullanıcıya aittir, kliniğe ait değildir. Bir uygulamayı yalnızca onu oluşturan kullanıcı listeleyebilir ve yönetebilir. Aynı klinikteki iş arkadaşlarınız uygulamanızı göremez.
Endpoint özeti
Tüm isteklerdeAuthorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıkları zorunludur. X-Tenant olmadan istek 400 TENANT_HEADER_REQUIRED hatası verir ve izin yalnızca X-Tenant ile seçtiğiniz kliniğde kontrol edilir. Ayrıntı için Klinikler ve X-Tenant sayfasına bakın.
Kullanılabilir scope’ların tam listesi için Scope’lar sayfasına bakın.
Başka bir kullanıcıya ait uygulamalar, Flextell’in kendi uygulamaları ve kliniğe bağlı uygulamalar için
{id} istekleri 403 değil 404 RESOURCE_NOT_FOUND döndürür. Böylece bu uygulamaların var olup olmadığı sızdırılmaz. UUID olmayan bir {id} de 404 verir.Nesne modeli
Uygulama yanıtları (OAuthClientResource) şu alanları içerir:
secret alanı yalnızca oluşturma ve yenileme yanıtlarında (OAuthClientSecretResource) bulunur.
API ile oluşturulan uygulamalar her zaman gizli (confidential) istemcidir ve authorization_code ile refresh_token akışlarını kullanır. Kod değişimi, Client Secret’ı saklayabileceğiniz bir sunucuda yapılmalıdır.
Listeleme
GET /api/v1/oauth/clients sayfalanmış bir liste döndürür (genel kurallar için Sayfalama ve Filtreleme ve sıralama). Bu kaynağa özgü parametreler:
Oluşturma
POST /api/v1/oauth/clients isteği şu alanları alır:
- URI’ler kırpılır ve boş girdiler atlanır. Her URI geçerli bir URL olmalıdır (
http,httpsgibi bir şema ve host).localhost:3000gibi tek etiketli host’lar kabul edilir. myapp://callbackgibi özel uygulama şemaları REST API’de422ile reddedilir.scopesiçine yalnızca etkin uygulama scope’ları yazılır.openid,profile,emailvephonelisteye yazılmaz; her uygulama bunları zaten isteyebilir.- Geçerli scope’ları
GET /api/v1/oauth/scopesile alın. Yanıt,scopealanına göre sıralı{scope, description}listesidir.
PUT /api/v1/oauth/clients/{id} ile name, redirect_uris ve post_logout_redirect_uris alanlarını güncelleyebilirsiniz. Alanların hepsi isteğe bağlıdır. Gönderdiğiniz liste eskisinin yerine geçer; post_logout_redirect_uris için boş liste ([]) gönderebilirsiniz.
Scope güncelleme
PUT /api/v1/oauth/clients/{id}/scopes uygulamanın scope listesini tamamen değiştirir. scopes zorunludur ve en az bir eleman içermelidir. Mevcut listeye ekleme yapmak için eski scope’ları da gönderin.
curl
Yeni liste yeni yetkilendirmelere ve token yenilemelere hemen uygulanır. Listeden çıkardığınız bir scope için
/oauth/authorize isteği invalid_scope hatası verir. Yenileme sırasında bu scope’lar sessizce düşer. Daha önce verilmiş access token’lar süreleri dolana kadar eski scope’larıyla çalışır.İptal ve silme
Üç farklı işlem vardır. Etkileri farklıdır.POST /api/v1/oauth/clients/{id}/activate iptal edilmiş uygulamayı revoked: false durumuna getirir. Bu işlem uygulamanın access token’larını da yeniden etkin yapar.
POST /api/v1/oauth/clients/{id}/secret yeni bir 40 karakterlik secret üretir ve yanıtta bir kez gösterir. Eski secret token endpoint’inde çalışmaz; mevcut token’lar geçerli kalır.
GET /api/v1/oauth/clients/{id}/tokens uygulamayı yetkilendiren tüm kullanıcıların token’larını (yalnızca sizinkileri değil) en yeniden eskiye döndürür. Parametreler: per_page (1–100), page, revoked, created_at_from, created_at_to. Her kayıt şu alanları içerir: id, client_id, user_id, name, scopes, revoked, created_at, updated_at, expires_at.
Hatalar
Hatalar standart yanıt zarfıyla döner. Genel hata kodları için Hata kodları sayfasına bakın.
Örnek
OAUTH_SCOPE_INVALID yanıtı:
Yanıt (422)
Uygulama izinlerini rol editöründe OAuth Uygulamaları grubunda verirsiniz (ör.
Create:Client için Oluştur, Revoke:Client için Erişimi İptal Et). Genel izin modeli için İzinler ve görünürlük sayfasına bakın.