Skip to main content
OAuth uygulaması, entegrasyonunuzun Flextell API’sine erişmek için kullandığı kimliktir (Client ID ve Client Secret). Bu sayfa, uygulamaları /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 isteklerde Authorization: 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.
secret düz metin olarak yalnızca bu yanıtta döner ve sonradan okunamaz. Güvenli bir yerde saklayın. Kaybederseniz POST /api/v1/oauth/clients/{id}/secret ile yenileyin.
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:
Kurallar:
  • URI’ler kırpılır ve boş girdiler atlanır. Her URI geçerli bir URL olmalıdır (http, https gibi bir şema ve host). localhost:3000 gibi tek etiketli host’lar kabul edilir.
  • myapp://callback gibi özel uygulama şemaları REST API’de 422 ile reddedilir.
  • scopes içine yalnızca etkin uygulama scope’ları yazılır. openid, profile, email ve phone listeye yazılmaz; her uygulama bunları zaten isteyebilir.
  • Geçerli scope’ları GET /api/v1/oauth/scopes ile alın. Yanıt, scope alanı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.