402 ve 428), hangi endpoint’lerin etkilenmediğini ve entegrasyonunuzun nasıl davranması gerektiğini anlatır.
Kilit klinik düzeyindedir. Token’ınız ve scope’larınız doğru olsa bile aynı istek, kliniğin durumuna göre 402 ya da 428 ile dönebilir.
Kilit türleri
Hata gövdesi her zaman standart hata zarfıdır:
success: false, error_code, message ve data. Zarfın ayrıntıları için Hatalar sayfasına bakın.
Abonelik süresi bittikten sonraki 14 günlük ek sürede ürün erişimi devam eder; bu dönemde kilit yoktur. Yalnızca fazla kullanım kapanır ve kotalar sert sınır olur. Kilit, ek süre de bitince başlar.
Hangi istek hangi kontrole takılır
Kontroller sırayla çalışır ve ilk başarısız olan yanıt döner:400TENANT_HEADER_REQUIREDveya404TENANT_NOT_FOUND402abonelik ya da gecikmiş ödeme kilidi428kurulum kilidi403scope veya izin hatası
428 değil 402 alırsınız. 402 çözülmeden 428 görünmez.
402 yanıtları
SUBSCRIPTION_REQUIRED
Kliniğin deneme süresi ya da aboneliği bittiğinde döner. Mesaj: Devam etmek için ücretli plan seçin veya aboneliğinizi yenileyin.
data alanı, GET /api/v1/billing/subscription yanıtıyla aynı abonelik özetidir. Böylece ek bir istek yapmadan durumu okursunuz.
string
Abonelik durumu. Bu kilitte değer
expired olur.string
Kliniğin planı.
string
Deneme bitişi, ödenmiş dönemin sonu ve ek sürenin sonu.
string
Sıradaki plan değişikliği varsa onun kodu.
pending_plan_starts_at ve pending_plan_paid alanları eşlik eder.renewal_period, renewal_notice_days, overage_allowed ve can_purchase_extras alanları bulunur.
ACCESS_RESTRICTED_BY_OVERDUE_PAYMENT
Yalnızca abonelik dönemine ait faturalarda ve yalnızca ön ödemeli abonelerde döner. Mesaj: Gecikmiş ödeme tamamlanana kadar erişim kısıtlanmıştır.
- Kilit, vade gününden ertesi gün başlar. Vadesi bugün olan fatura kilitlemez.
- Fatura ödendiği anda kilit kalkar.
- Abonelik başlamadan önceki borçlar, ek paket satın alımları ve deneme klinikleri bu kilide takılmaz.
data.proforma_invoice_id ile ilgili faturayı okuyabilirsiniz: GET /api/v1/billing/proforma-invoices/{id}.
402 SUBSCRIPTION_REQUIRED ile reddedilebilir. Bu yanıtta data alanı olmayabilir; dallanmayı error_code ve HTTP koduna göre yapın.
428 kurulum gerekli
Yeni bir klinik, zorunlu kurulum adımlarını bitirene kadar428 SETUP_REQUIRED ile korunur. Mesaj: Devam etmek için gerekli kurulum adımlarını tamamlayın.
data.next_step, sıradaki tamamlanmamış adımın kimliğidir.
Zorunlu adımlar:
room_assistant, invoice_integration ve bank_accounts adımları isteğe bağlıdır ve kilidi açmak için gerekmez.
Kimler etkilenir
- Kurulum sihirbazı devreye girdiğinde var olan klinikler tamamlanmış sayıldı. Yalnızca sonradan oluşturulan klinikler
428görür. POST /api/v1/account/tenantsile oluşturduğunuz her yeni klinik,GET /api/v1/account/tenantsyanıtındasetup_required: trueile gelir. Kliniğe istek atmadan önce bu alana bakın.- Kurulum bittikten sonra bir doktoru veya kanalı silmek
428’i geri getirmez; kilit ilerleme bayrağına bağlıdır.
Kilidi kaldırma
Kurulum,setup-wizard endpoint’leriyle ilerler. Bunların hepsi Manage:SetupWizard izni ister; okuma için setup_wizard:read, yazma için setup_wizard:write scope’u gerekir.
Kanal, doktor, tedavi ve tedavi grubu gibi kayıtları normal endpoint’lerle oluşturur, sonra ilgili adımı
complete ile onaylarsınız. Sihirbaz bu kayıtlar için ayrı bir endpoint sunmaz.
Kilitten etkilenmeyen endpoint’ler
Kilit,X-Tenant başlığı isteyen klinik endpoint’lerinde uygulanır. Aşağıdakiler kilit sırasında da çalışır.
Abonelik kilidinde (402) açık kalanlar
Aboneliği okumak, plan seçmek ve ödemek için gereken /api/v1/billing/* endpoint’leri açık kalır:
GET /billing/subscription,/billing/plans,/billing/overview,/billing/payment-providers,/billing/payments,/billing/settingsPOST /billing/subscription/quotevePOST /billing/subscription/purchaseGET /billing/proforma-invoicesve fatura altındaki{id},pdf,pay,discount-code,complete,cancel-purchaseişlemleriPUT /billing/settings
402 döner: current-usage, usage-history, quota-packages, seats, discount-codes ve subscription/plan-change.
Kurulum kilidinde (428) açık kalanlar
Kurulum sırasında şu yol önekleri (alt yollarıyla birlikte) /api/v1/ altında erişilebilir kalır:
setup-wizard, billing, tenant, account, notifications, general, settings, files, uploads, permissions, roles, users, invitations, occupations, channels, integrations, integration-connections, doctors, assistants, rooms, treatments, treatment-groups, form-templates, products, catalog-products, product-brands, product-categories, warehouses, invoices/accounts, invoices/series, bank-accounts, payment-methods, tickets, panel-tickets.
Bunun dışındaki her klinik endpoint’i kurulum bitene kadar 428 döner. Örneğin /appointments, /customers, /leads, /conversations, /invoices, /sales ve /tags bunlar arasındadır. billing önekli endpoint’ler hiçbir zaman 428 döndürmez.
Önerilen davranış
1
Yeniden denemeyin
402 ve 428 geçici hatalar değildir. Aynı isteği beklemek ya da tekrarlamak sonucu değiştirmez. Oran sınırlarındaki 429 gibi geri çekilme (backoff) uygulamayın; kilit kalkana kadar o klinik için istek göndermeyi durdurun.2
Kodu error_code ile ayırt edin
message metni dile göre değişir. Dallanmayı error_code ve HTTP durum koduna göre yapın.3
Kliniği askıya alın, diğerlerini sürdürün
Kilit klinik başınadır. Birden çok klinik yönetiyorsanız yalnızca kilitli kliniğin eşitleme ve zamanlanmış işlerini durdurun. İşleri kuyrukta kaybetmeyin; kilit kalktığında kaldığınız yerden devam edin.
4
Kullanıcıyı bilgilendirin
Kliniğin yöneticisine nedeni gösterin.
SUBSCRIPTION_REQUIRED için aboneliğin yenilenmesi gerektiğini, ACCESS_RESTRICTED_BY_OVERDUE_PAYMENT için gecikmiş faturayı (due_date), SETUP_REQUIRED için kurulumun tamamlanması gerektiğini söyleyin. Klinik tarafında yapılacaklar için Abonelik ve kurulum kilidi sayfasına yönlendirebilirsiniz.5
Durumu kilitten etkilenmeyen endpoint'lerle yoklayın
SUBSCRIPTION_REQUIRED sonrasında GET /api/v1/billing/subscription ile durumu sorgulayın; bu endpoint kilit sırasında da açıktır. Durum expired olmaktan çıktığında işleri yeniden başlatın. ACCESS_RESTRICTED_BY_OVERDUE_PAYMENT için abonelik durumu değişmez; data.proforma_invoice_id ile GET /api/v1/billing/proforma-invoices/{id} çağırıp faturanın ödendiğini doğrulayın. Başka bir fatura da gecikmişse yeniden 402 alabilirsiniz. Sık yoklamayın, makul aralıklarla sorgulayın.6
428 için kurulum akışını izleyin
data.next_step değerini okuyun, kurulumu o adımdan sürdürün ve GET /api/v1/setup-wizard ile ilerlemeyi doğrulayın. Kliniği siz oluşturmadıysanız kurulumu kullanıcıya bırakın; yalnızca Manage:SetupWizard iznine sahip kullanıcılar sihirbazı kullanabilir.İlgili sayfalar
Hatalar
Hata zarfı ve durum kodları.
Hata kodları
Tüm
error_code değerleri.Abonelik ve faturalama
Plan, abonelik ve fatura endpoint’leri.
Klinikler ve X-Tenant
Klinik seçimi ve
X-Tenant başlığı.