GET ile yapılır, gövde almaz ve şunları ister:
Authorization: Bearer <access_token>başlığı vestatistics:readscope’u. Scope eksikse yanıt403 FORBIDDENolur.X-Tenant: <tenant_id>başlığı (Klinikler ve X-Tenant).
Endpoint özeti
Taban adres:https://app.flextell.ai/api/v1.
Hepsi
statistics:read scope’unu ister. Her toplam kliniğin tamamını kapsadığı için ViewAll... izinleri aranır. Yalnızca kendi kayıtlarını gören View:Customer, View:Appointment ve View:Sale izinleri bu endpoint’lerde yetmez. treatments bir tedavi izni değil, ViewAllAppointments:Appointment ister.
summary ve grup endpoint’leri {"success": true, "data": {...}, "meta": {"timezone": "..."}} zarfıyla döner. İki liste endpoint’i standart sayfalı liste yapısını kullanır (Sayfalama).
Dönem parametreleri
summary ve liste endpoint’leri dönem almaz. summary her zaman bugünü ve son 30 günü kullanır. Altı grup endpoint’i (customers, leads, appointments, revenue, treatments, chat) şu parametreleri alır:
custom dönemin uzunluğu en çok 731 gün olabilir. Kural ihlali 422 VALIDATION_FAILED döner; 731 gün hatası to alanında İngilizce The custom period may not span more than 731 days. metniyle gelir. period custom değilse from ve to yok sayılır, ama biçimleri yine doğrulanır.
Günler klinik saat dilimine göre hesaplanır (varsayılan Europe/Istanbul, Ayarlar → Genel Ayarlar içindeki Varsayılan Saat Dilimi). Yanıttaki period.timezone kullanılan dilimi gösterir.
Her dönemin bir de karşılaştırma dönemi vardır. Önceki değer ve change_percent bu dönemden hesaplanır.
Özet bölümleri ve izinler
GET /statistics/summary hiçbir zaman izin nedeniyle 403 dönmez. Çağıran kullanıcının izni olan bölümleri metrics içine koyar; izni olmayan bölüm yanıtta yer almaz (sıfırlanmış değil, eksik). Hiçbir izin yoksa 200 döner ve metrics boş dizi [] olur. currency her durumda gelir.
Gruplar
Grup endpoint’leridata.period (çözümlenmiş dönem), data.metrics ve data.computed_at döner. Tek değerli göstergeler {current, previous, change_percent} biçimindedir. Para tutarları kliniğin ana para biriminde verilir; revenue yanıtı data.currency alanını da taşır.
Hastalar, lead’ler ve randevular
Aktif, pasif, potansiyel ve
active_leads değerleri “şu an” durumunu anlatır. period ile değişmez, previous ve change_percent alanları null olur. Günlük seriler dönemin her gününü içerir, kayıt olmayan günler 0 ile gelir.
Ciro, tedavi ve sohbet
top_* listelerinde count da {current, previous, change_percent} biçimindedir. Sıralama count.current azalan, eşitlikte kimliğe göre artandır.
Liste endpoint’leri
Bu iki endpoint dönem almaz ve sayfalı kayıt listesi döner.low-stock-products satırları: product_id, product_name, stock_balance, critical_stock_level, base_unit_code_id, base_unit_name. Liste stoğu en az olandan başlar. Kritik Stok Seviyesi tanımlanmamış ürünler hiç listelenmez.
birthdays satırları: customer_id, first_name, last_name, date_of_birth, phone_number, email. Liste ada göre sıralıdır. Doğum tarihi olmayan hastalar listeye girmez.
Gösterge tanımları
Tutarlar, her satışın veya hareketin kendi
exchange_rate değeriyle kliniğin ana para birimine çevrilir (Ayarlar → Genel Ayarlar → Para Birimi, varsayılan TRY). Kur boşsa 1 alınır. Tutarlar iki, yüzdeler tek ondalıkla yuvarlanır.
Ciro tanımı bu endpoint’lere özgüdür. Başka ekran ve raporlardaki ciro rakamları farklı bir tanıma dayanabilir; iki sayıyı birebir karşılaştırmayın.
Önbellek ve sınırlar
Önbellek
Grup yanıtları klinik bazında önbelleğe alınır.data.computed_at, yanıtın hesaplandığı andır; isteği yaptığınız an değildir ve birkaç dakika eski olabilir. İlgili hasta, lead, randevu, tedavi, satış, tahsilat veya sohbet kaydı değiştiğinde önbellek hemen geçersiz olur. Yalnızca zamanın akmasından doğan değişiklikler (örneğin bir randevunun geçmişe düşmesi) süre dolunca görünür.
summary 5 dakika, liste endpoint’leri ise önbelleğe alınmaz. Sık yenileme gerekmiyorsa computed_at değerine bakıp gereksiz istekten kaçının.
İstek sınırı
İstatistik endpoint’lerinde sınır, varsayılan olarak klinik ve kullanıcı başına dakikada 60 istektir. Genel API sınırı ayrıca geçerlidir (Oran sınırları). Sınır aşılınca429 TOO_MANY_REQUESTS döner; mesaj İngilizcedir (Too many requests.). Retry-After, X-RateLimit-Limit ve X-RateLimit-Remaining başlıklarını okuyun.
Hatalar
402 ve 428 kilitleri için Erişim kilitleri, diğer kodlar için Hata kodları sayfasına bakın. İzinlerin görünürlüğü nasıl etkilediği İzinler ve görünürlük sayfasında anlatılır.