https://app.flextell.ai/api/v1 altındadır ve Authorization: Bearer <access_token> ile X-Tenant: <tenant_id> başlıklarını gerektirir.
Endpoint özeti
Randevu formu için doktor, oda, asistan, ürün ve tedavi seçenekleri
GET /appointments/options/* altındadır. Bu endpoint’ler Create:Appointment veya Update:Appointment izninden birini yeterli sayar; View:Doctor gibi ayrı izinler gerekmez. Randevu silme için ayrı bir scope yoktur, appointments:write kullanılır.
ViewAllAppointments:Appointment iznine sahip olmayan kullanıcı yalnızca kendi randevularını görür ve değiştirir: randevunun doktoru olduğu veya hastanın lead’inin kendisine atandığı kayıtlar. Asistan olarak eklenmek sahiplik sayılmaz. Görünmeyen veya başka kliniğe ait bir id için 403 değil, 404 RESOURCE_NOT_FOUND döner. Ayrıntı için İzinler ve görünürlük.Listeleme
GET /appointments genel sayfalama ve filtreleme ve sıralama kurallarını izler. Bu kaynağa özgü olanlar:
sort_by=upcoming yaklaşan randevuları en yakından başlayarak, ardından geçmiş randevuları en yeniden başlayarak sıralar. sort_order yok sayılır ve arama sıralamasının önüne geçer.
Nesne modeli
Yanıtlardaki tüm zaman damgaları klinik saat dilimiyle ve sapma değeriyle gelir (2026-10-20T14:30:00+03:00). Gönderdiğiniz zaman sapma içermiyorsa klinik saati olarak okunur.
Liste yanıtı
treatment_session_plans, linked_sessions, reminders, import_source ve customer_balance alanlarını içermez. GET /appointments/{id} ayrıca customer.notification_channels bloğunu döndürür. Detay yanıtında customer_balance, View:CustomerBalances izniniz yoksa null döner.
Durum akışı
Randevu durumları:pending (Bekliyor), approved (Onaylandı), cancelled (İptal Edildi), rejected (Reddedildi), completed (Tamamlandı), no_show (Gelmedi).
Zorunlu bir geçiş grafiği yoktur; PUT /appointments/{id} ile her duruma geçilebilir. Üç istisna vardır:
Eksik izin
403 döner. Durum değişiminin yan etkileri: iptalde ve reddedildiğinde takvim etkinliği ile randevu hatırlatmaları silinir; iptalden dönüşte yeniden oluşturulur. approved durumuna geçince bekleyen randevu hatırlatmaları otomatik onaylanır.
Oluşturma
POST /appointments yeni randevuyu 201 ile döndürür.
channel_id göndermezseniz sunucu kanalı seçer ve randevuya yazar: hastanın en son yazdığı kanal, hastanın varsayılan kanalı, kliniğin varsayılan bildirim kanalı, ardından ulaşılabilir herhangi bir kanal.
Manuel randevu geçmiş tarih,
max_future_days sonrası, kapalı gün, çalışma saati dışı, slot ızgarası dışı bir dakika, tatil veya doktorun başka randevusuyla çakışma nedeniyle reddedilmez. Bunlar istemcilerde yalnızca uyarıdır. Uygun saatleri Randevu uygunluğu ve takvim sayfasından alın.Seans randevusu
Mevcut bir tedavi planının seansını doldurmak içinparent_appointment_id ile parent_session_id birlikte gönderilir. Seans üst randevuya ait ve boş olmalı; hasta üst randevunun hastası olmalıdır. Seans randevusu doktoru, odayı, bildirim kanalını ve süreyi (siz göndermezseniz) üst randevudan alır. user_id doğrulanır ama kullanılmaz. Etiket, asistan, is_control_appointment ve cancellation_reason seans randevusuna uygulanmaz. products[] yalnızca parent_session_id ile gönderilir; seansın planlı ürünlerini değiştirir, [] temizler, göndermemek korur.
Güncelleme
PUT /appointments/{id} güncel randevuyu döndürür. Tüm alanlar isteğe bağlıdır; yalnızca gönderdiğiniz anahtarlar değişir.
scheduled_at: nullveya""yok sayılır; mevcut zaman korunur.customer_idyalnızca alt randevusu olmayan ana randevuda değişir.parent_appointment_idveis_control_appointmentoluşturulduktan sonra değiştirilemez.treatments[]tedavi kümesini değiştirir.treatment_session_planslistelenen tedavilerin seanslarını değiştirir; bir alt randevuyla alınmış seanslar bağlantısını ve tarihini korur. Göndermediğiniz planlara dokunulmaz.tags,assistant_idsveassistant_idanahtarını gönderirseniz tüm küme değişir; boş liste veyanullhepsini kaldırır.channel_id: nullotomatik kanal seçimine döner.- Güncelleme mesajı (
send_messageboşsasend_on_updateayarı) yalnızca tarih/saat, doktor veya tedavi kümesi değiştiyse ve randevucancelled/rejecteddeğilse gönderilir. - Bir toplu taşıma önerisi beklerken
scheduled_atdeğerini farklı bir dakikaya taşırsanız öneri iptal edilir. Aynı dakikayı başka biçimde göndermek öneriyi korur.
İptal ve iptali geri alma
POST /appointments/{id}/cancel yalnızca Cancel:Appointment ister; Update:Appointment gerekmez.
POST /appointments/{id}/revert-cancel yalnızca RevertCancel:Appointment ister.
İki endpoint de güncel randevuyu döndürür. İptalde
cancellation_reason gönderirseniz bir iptal takibi hatırlatması sıraya alınır; neden göndermezseniz alınmaz.
curl
Tamamlama ve satış kalemleri
POST /appointments/{id}/complete tek bir işlemde seanslarda kullanılan ürünleri kaydeder, durumu completed yapar ve istenirse satış oluşturur. Herhangi bir adım başarısız olursa hiçbir şey değişmez. Tamamlanınca sonraki seans için onay hatırlatmaları planlanır.
Listelenen seansın ürünleri
used: true satırlarla değiştirilir; listelemediğiniz seanslar ürünlerini korur. PUT ile status=completed göndermek de çalışır ama ürün kaydetmez. Tamamlanmış randevuda tekrar çağırırsanız ürünler yeniden kaydedilir.
sale_action davranışı:
curl
Satış kalemleri
GET /appointments/{id}/sale-items satış oluşturma ekranını doldurmak için kalem listesi üretir; kayıt yazmaz. Token’ın hem appointments:read hem sales:write scope’u olmalı; kullanıcıda View:Appointment ve Create:Sale izni bulunmalıdır. Kalemler önce randevunun tedavileri (bağlı seanslardan gelenler dahil, tekrarsız), ardından bağlı seanslardaki ürünlerdir; ürünler ürün bazında toplanır. Henüz randevusu alınmamış seansların ürünleri dahil edilmez.
Satışı oluşturmak için Satışlar sayfasına bakın.
Silme ve seans randevuları
DELETE /appointments/{id} randevuyu yumuşak siler; başarıda {"message": "Randevu başarıyla silindi"} döner. Alt randevular ve hem randevunun hem alt randevuların satışları birlikte silinir; hepsi Geri Dönüşüm Kutusu’ndan birlikte geri yüklenir. Randevu hatırlatmaları kalıcı olarak silinir ve geri gelmez. Randevuya bağlı seanslar silinir, seans ürünleri yumuşak silinir; doktorun harici takvimindeki etkinlik kaldırılır.
Silmeden önce GET /appointments/{id}/deletion-relations ile etkilenecek kayıtları görün. Yanıt {relation, label, count, deleted} satırlarından oluşur; relation değeri child_appointments veya sales olur. Boş dizi, başka kayıt silinmeyeceği anlamına gelir.
Randevunun alt randevusu varsa (silinmiş olanlar dahil) delete_child_appointments: true göndermelisiniz; aksi hâlde 422 döner ve hata id alanına yazılır. Bu alan yalnızca onay bayrağıdır; silme her durumda alt randevulara da uygulanır. Alt randevuları tek tek de silebilirsiniz.
curl
Genel hatalar
Diğer ortak kodlar için Hata kodları sayfasına bakın.