Skip to main content
Randevu kaynağı, kliniğin rezervasyon kayıtlarını yönetir: bir hasta, bir doktor, bir başlangıç zamanı ve randevunun tedavi/seans planı. Bu sayfa tek tek randevu işlemlerini anlatır. Takvim akışı ve uygun saatler için Randevu uygunluğu ve takvim, doktor zaman aralığını toplu taşımak için Toplu randevu taşıma, hatırlatmalar için Randevu hatırlatmaları sayfasına bakın. Tüm istekler 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çin parent_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: null veya "" yok sayılır; mevcut zaman korunur.
  • customer_id yalnızca alt randevusu olmayan ana randevuda değişir. parent_appointment_id ve is_control_appointment oluşturulduktan sonra değiştirilemez.
  • treatments[] tedavi kümesini değiştirir. treatment_session_plans listelenen 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_ids ve assistant_id anahtarını gönderirseniz tüm küme değişir; boş liste veya null hepsini kaldırır.
  • channel_id: null otomatik kanal seçimine döner.
  • Güncelleme mesajı (send_message boşsa send_on_update ayarı) yalnızca tarih/saat, doktor veya tedavi kümesi değiştiyse ve randevu cancelled/rejected değilse gönderilir.
  • Bir toplu taşıma önerisi beklerken scheduled_at değ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 silme kuralları için Silme yaşam döngüsü sayfasına bakın.

Genel hatalar

Diğer ortak kodlar için Hata kodları sayfasına bakın.