Senaryo
Bir randevu sayfası, “Ayşe Yılmaz” adlı hasta için 20 Ekim 2026’da doktor kimliği45 olan doktora 30 dakikalık bir muayene randevusu açmak istiyor. Akış beş istekten oluşur:
Tüm isteklerde Authorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıkları kullanılır. Bkz. Klinikler ve X-Tenant.
Token’ınız bu scope’ları taşımalıdır. Bkz. Scope’lar.
Hasta ve tedaviyi bulma
Önce hastayı arayın.search parametresi ad, soyad, e-posta ve kimlik numarasında alt dize arar; telefon numarasında da rakamları eşleştirir. Baştaki 0 atılarak da denenir, yani 0532 123 ifadesi 905321234567 ile eşleşir. Terimde en az 2 karakterlik bir sözcük ya da en az 3 rakam yoksa liste boş döner.
Yeni iş başlatan seçicilerde exclude_erased=1 kullanın. Verileri imha edilmiş hastalar varsayılan olarak listede yer alır ve bu hastalar için yazma işlemi 409 CUSTOMER_ERASED ile reddedilir.
data[].id değeri, randevudaki customer_id olur (örnekte 123). Hasta henüz yoksa POST /customers ile oluşturun; bkz. Hastalar. Hasta bir lead ise customer_id yerine lead_id gönderebilirsiniz; ikisini birlikte göndermeyin.
Sonra doktorun yaptığı tedavileri alın. Randevudaki her tedavi seçilen doktora atanmış olmalıdır.
data dizisinde {id, name, invoice_name, group} nesneleri verir. Örnekte seçilen tedavinin kimliği 7’dir. Doktorları listelemek için GET /appointments/options/doctors kullanın; bu uç nokta yalnızca aktif doktorları döner. Kimlik bir doktora ait değilse 404 (Doktor bulunamadı) alırsınız.
Uygun saatleri sorgulama
GET /appointments/available-slots doktorun o günkü önerilen başlangıç saatlerini verir. Üç parametre de zorunludur: date, user_id (doktor) ve duration_minutes (5–1440).
slots[].start_atveend_atHH:mmmetnidir. Randevununscheduled_atdeğerini,dateile saati birleştirip klinik saat dilimi sapmasını ekleyerek kurun:2026-10-20T09:15:00+03:00.- Öneriler kapanış saatine kadar uzanır ama çakışmalara göre elenmez. Doktorun o günkü bekleyen ve onaylı randevularını
appointments, tatil kapanışlarınıclosed_periodsalanından okuyup kullanıcıya uyarı olarak gösterin. - Klinik o gün haftalık çalışma düzenine göre kapalıysa hata alınmaz;
200ile boş diziler döner.
Manuel randevu; geçmiş tarih, kapalı gün, çalışma saati dışı, slot ızgarası dışı dakika, tatil veya doktorun başka randevusuyla çakışma yüzünden reddedilmez. Bu denetimler sizin uygulamanızın sorumluluğundadır.
Randevu oluşturma
Seçtiğiniz saatlePOST /appointments çağırın. Başarılı yanıt 201 ve randevu nesnesidir.
customer_id (veya lead_id), user_id, treatments[], status ve scheduled_at’tir. status olarak cancelled dışındaki herhangi bir değer verilebilir; yeni randevu için genellikle pending (Bekliyor) ya da approved (Onaylandı) kullanılır. scheduled_at sapma içermezse klinik saati olarak okunur.
Yanıtta sunucunun ürettiği id ve code (APT-XXXXXXXXXX) alanlarını saklayın. Tedavinin seans şablonu varsa seanslar otomatik planlanır; ilk seans bu randevuya bağlanır. Seans planı için bkz. Randevular.
Hastaya bildirim
Randevu oluşturulduktan sonra hastaya bir bilgilendirme mesajı gidebilir. Bu mesaj kliniğin Randevu Oluşturma mesaj şablonuyla hazırlanır. Şablonu Mesaj şablonları ile yönetirsiniz.channel_id göndermezseniz sunucu kanalı şu sırayla 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. Her aday etkin, bağlı ve hastaya ulaşabilir olmalıdır.
Belirli bir kanaldan göndermek için:
GET /appointments/{id} yanıtındaki customer.notification_channels bloğunu okuyun. default_channel_id, source ve her kanal için type, address, status, is_reachable alanlarını içerir. Randevunun kendi kanalı seçili ve ulaşılabilirse source değeri preferred olur.
Randevudan önceki hatırlatmalar ayrı bir akıştır; bkz. Randevu hatırlatmaları.
Hata durumları
Hata gövdesi{"success": false, "error_code": "...", "message": "..."} biçimindedir; doğrulama hatalarında errors alanı da gelir. Ortak kodlar için Hata kodları sayfasına bakın.