Randevular API
Randevular modülünün tüm işlemleri (26) ve veri modelleri (6): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Çalışma saatlerinize, aralara, izinlere ve kapasiteye uyan online randevu.
Modül kodu appointments · 26 işlem · 6 veri modeli · 20 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: appointments (hepsi), appointments:read (yalnız okuma) ya da appointments:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
appointment_guest_services | appointment_guest_service | /api/v1/appointment_guest_services | |||
appointment_guests | appointment_guest | /api/v1/appointment_guests | |||
appointment_import_jobs | appointment_import_job | /api/v1/appointment_import_jobs | |||
appointment_reminder_opt_outs | appointment_reminder_opt_out | /api/v1/appointment_reminder_opt_outs | |||
appointments | appointment | /api/v1/appointments | appointments.book | ||
banned_customers | banned_customer | /api/v1/banned_customers |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
appointments.add_guest | appointments:write | Misafir ekle |
appointments.add_guest_service | appointments:write | Hizmet ekle |
appointments.assign_member | appointments:write | Kimin yapacağını değiştir |
appointments.ban_customer | appointments:manage | Randevudan yasakla |
appointments.book | appointments:write | Randevu oluştur |
appointments.book_group | appointments:write | Grup randevusu oluştur |
appointments.book_online | appointments:write | Online randevu al |
appointments.cancel | appointments:write | Randevuyu iptal et |
appointments.cancel_by_token | appointments:write | Bağlantıyla iptal et |
appointments.cancel_my_booking | appointments:write | Randevumu iptal et |
appointments.change_guest_customer | appointments:write | Misafiri değiştir |
appointments.complete | appointments:write | Tamamlandı işaretle |
appointments.confirm | appointments:approve | Randevuyu onayla |
appointments.export | appointments:export | Randevuları dışa aktar |
appointments.import | appointments:import | Randevuları içe aktar |
appointments.lift_ban | appointments:manage | Yasağı kaldır |
appointments.mark_deposit_status | appointments:handle | Randevu kaporasını güncelle |
appointments.no_show | appointments:write | Gelmedi işaretle |
appointments.raise_reminder | appointments:handle | Randevu hatırlatması oluştur |
appointments.remove_guest | appointments:write | Misafiri çıkar |
appointments.remove_service | appointments:write | Hizmeti kaldır |
appointments.reschedule | appointments:write | Randevuyu taşı |
appointments.reschedule_by_token | appointments:write | Bağlantıyla taşı |
appointments.reschedule_my_booking | appointments:write | Randevumu taşı |
appointments.set_reminder_opt_out | appointments:write | Kişi için randevu hatırlatmaları |
appointments.update_details | appointments:write | Notu düzenle |
appointments.add_guest
Misafir ekle — Var olan bir randevuya bir kişi daha ekler.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/add_guest- Asıl adres:
POST /api/v1/actions/appointments.add_guest
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
customerId | uuid | evet | Müşteri · kimliği: customer |
itemVariantId | uuid | İlk hizmeti · kimliği: item_variant | |
memberUserId | uuid | Ekip üyesi · Müsait olan kişiye atanması için boş bırakın. | |
expectedPriceAmount | number (money) | Gösterilen fiyat · Ekranda gösterilen fiyat. Güncel fiyat farklıysa işlem reddedilir; böylece kişi yeni fiyatı onaylayabilir. · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Randevu bulunmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
already_a_guest | Kişi zaten randevuda olmamalı. |
customer_not_found | Müşteri bu çalışma alanında bulunmalı. |
customer_banned | Müşteri yasaklı olmamalı. |
service_not_found | Hizmet bulunmalı. |
service_inactive | Hizmet aktif ve randevuya açık olmalı. |
service_has_no_duration | Paket olmayan bir hizmetin süresi olmalı. |
package_empty | Paket bir şey içermeli. |
service_not_offered_that_day | Hizmet o hafta gününde sunuluyor olmalı. |
provider_cannot_perform | Ekip üyesi bu hizmeti veriyor olmalı. |
closed_that_day | Tarih bir özel günle kapatılmış olmamalı. |
outside_working_hours | Uzayan randevu hâlâ çalışma saatlerine sığmalı. |
provider_on_leave | Gereken kişilerden hiçbiri izinde olmamalı. |
slot_taken | Uzatılan saat boş olmalı. |
class_full | Derste hâlâ yer olmalı. |
no_provider_available | Kimse seçilmediyse müsait biri olmalı. |
price_changed | Fiyat hâlâ kişiye gösterilen fiyat olmalı. |
Yayımladığı olaylar: appointments.guest_added
Neye yazar: appointment_guest (insert) — Adds the guest; appointment_guest_service (insert) — Adds their first service line; appointment (update) — Re-totals duration, price and end time
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/add_guest \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"appointments.guest_added"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.addGuest("APPOINTMENT_ID", {
customerId: "CUSTOMER_ID"
})era appointments add_guest APPOINTMENT_ID \
--customer-id "CUSTOMER_ID"{
"name": "era__appointments__add_guest",
"arguments": {
"appointmentId": "APPOINTMENT_ID",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_cancelled, already_finished, already_a_guest, customer_not_found, customer_banned, service_not_found, service_inactive, service_has_no_duration, package_empty, service_not_offered_that_day, provider_cannot_perform, closed_that_day, outside_working_hours, provider_on_leave, slot_taken, class_full, no_provider_available, price_changed · 429 çok sık istek
appointments.add_guest_service
Hizmet ekle — Bir misafire bir hizmet daha ekler ve uzayan randevuyu yeniden kontrol eder.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointment_guest_services/actions/add_guest_service- Asıl adres:
POST /api/v1/actions/appointments.add_guest_service
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentGuestId | uuid | evet | Misafir · kimliği: appointment_guest |
itemVariantId | uuid | evet | Hizmet · kimliği: item_variant |
memberUserId | uuid | Ekip üyesi · Müsait olan kişiye atanması için boş bırakın. | |
expectedPriceAmount | number (money) | Gösterilen fiyat · Ekranda gösterilen fiyat. Güncel fiyat farklıysa işlem reddedilir; böylece kişi yeni fiyatı onaylayabilir. · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
guest_not_found | Misafir bir randevuda olmalı. |
price_changed | Fiyat hâlâ kişiye gösterilen fiyat olmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
service_inactive | Hizmet aktif ve randevuya açık olmalı. |
service_has_no_duration | Paket olmayan bir hizmetin süresi olmalı. |
package_empty | Paket bir şey içermeli. |
service_not_offered_that_day | Hizmet o hafta gününde sunuluyor olmalı. |
provider_cannot_perform | Ekip üyesi bu hizmeti veriyor olmalı. |
closed_that_day | Tarih bir özel günle kapatılmış olmamalı. |
outside_working_hours | Uzayan randevu hâlâ çalışma saatlerine sığmalı. |
provider_on_leave | Gereken kişilerden hiçbiri izinde olmamalı. |
slot_taken | Uzatılan saat boş olmalı. |
class_full | Derste hâlâ yer olmalı. |
no_provider_available | Kimse seçilmediyse müsait biri olmalı. |
Yayımladığı olaylar: appointments.service_added
Neye yazar: appointment_guest_service (insert) — Adds the service line; appointment (update) — Re-totals duration, price and end time
curl -X POST https://app.getera.io/api/v1/appointment_guest_services/actions/add_guest_service \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"appointmentGuestId":"APPOINTMENT_GUEST_ID","itemVariantId":"ITEM_VARIANT_ID"}'{
"ok": true,
"result": "…",
"events": [
"appointments.service_added"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentGuestServices.addGuestService({
appointmentGuestId: "APPOINTMENT_GUEST_ID",
itemVariantId: "ITEM_VARIANT_ID"
})era appointment_guest_services add_guest_service \
--appointment-guest-id "APPOINTMENT_GUEST_ID" \
--item-variant-id "ITEM_VARIANT_ID"{
"name": "era__appointments__add_guest_service",
"arguments": {
"appointmentGuestId": "APPOINTMENT_GUEST_ID",
"itemVariantId": "ITEM_VARIANT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 guest_not_found, price_changed, already_cancelled, already_finished, service_inactive, service_has_no_duration, package_empty, service_not_offered_that_day, provider_cannot_perform, closed_that_day, outside_working_hours, provider_on_leave, slot_taken, class_full, no_provider_available · 429 çok sık istek
appointments.assign_member
Kimin yapacağını değiştir — Bir hizmet satırını başka bir ekip üyesine taşır ya da atanmamış bırakır.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointment_guest_services/{id}/actions/assign_member- Asıl adres:
POST /api/v1/actions/appointments.assign_member
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
lineId | uuid | evet | Doldurulduğu yer: adresteki {id} · Hizmet satırı · kimliği: appointment_guest_service |
memberUserId | uuid | Ekip üyesi · Atamayı kaldırmak için boş bırakın. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
line_not_found | Hizmet satırı bulunmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
provider_cannot_perform | Ekip üyesi bu hizmeti veriyor olmalı. |
closed_that_day | O gün onlar için kapalı olmamalı. |
outside_working_hours | Randevu boyunca çalışıyor olmalılar. |
provider_on_leave | İzinde olmamalılar. |
slot_taken | Tüm randevu boyunca müsait olmalılar. |
Yayımladığı olaylar: appointments.member_assigned
Neye yazar: appointment_guest_service (update) — Sets the line’s team member
curl -X POST https://app.getera.io/api/v1/appointment_guest_services/APPOINTMENT_GUEST_SERVICE_ID/actions/assign_member \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"memberUserId":"MEMBER_USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"appointments.member_assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentGuestServices.assignMember("APPOINTMENT_GUEST_SERVICE_ID", {
memberUserId: "MEMBER_USER_ID"
})era appointment_guest_services assign_member APPOINTMENT_GUEST_SERVICE_ID \
--member-user-id "MEMBER_USER_ID"{
"name": "era__appointments__assign_member",
"arguments": {
"lineId": "APPOINTMENT_GUEST_SERVICE_ID",
"memberUserId": "MEMBER_USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 line_not_found, already_cancelled, already_finished, provider_cannot_perform, closed_that_day, outside_working_hours, provider_on_leave, slot_taken · 429 çok sık istek
appointments.ban_customer
Randevudan yasakla — Bir e-posta adresinin veya telefon numarasının yeni randevu almasını engeller.
Gereken izin appointments:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/banned_customers/actions/ban_customer- Asıl adres:
POST /api/v1/actions/appointments.ban_customer
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
email | E-posta · en çok 255 | ||
phone | phone | Telefon · en çok 32 | |
reason | string (enum) | Neden · İzin verilen değerler: fake_appointment, no_show, inappropriate, payment_issue, other | |
notes | string | Notlar · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_identity | Bir e-posta adresi veya telefon numarası gerekli. |
Yayımladığı olaylar: appointments.customer_banned
Neye yazar: banned_customer (insert) — Records the ban
curl -X POST https://app.getera.io/api/v1/banned_customers/actions/ban_customer \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"email":"[email protected]"}'{
"ok": true,
"result": "…",
"events": [
"appointments.customer_banned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.bannedCustomers.banCustomer({
email: "[email protected]"
})era banned_customers ban_customer \
--email "[email protected]"{
"name": "era__appointments__ban_customer",
"arguments": {
"email": "[email protected]"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_identity · 429 çok sık istek
appointments.book
Randevu oluştur — Her kural izin verdiğinde ilk misafiri ve hizmetiyle bir randevu açar.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/actions/book- REST kısayolu:
POST /api/v1/appointments - Asıl adres:
POST /api/v1/actions/appointments.book
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
customerId | uuid | evet | Müşteri · kimliği: customer |
itemVariantId | uuid | evet | Hizmet · kimliği: item_variant |
appointmentDate | date | evet | Tarih |
startTime | string | evet | Başlangıç saati · en çok 8 |
memberUserId | uuid | Ekip üyesi · Müsait olan kişiye atanması için boş bırakın. | |
notes | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
service_inactive | Hizmet aktif ve randevuya açık olmalı. |
service_has_no_duration | Paket olmayan bir hizmetin süresi olmalı. |
package_empty | Paket bir şey içermeli. |
inside_cutoff | Saat, son randevu alma süresine uymalı. |
outside_window | Saat, randevu alınabilecek zaman aralığında olmalı. |
service_not_offered_that_day | Hizmet o hafta gününde sunuluyor olmalı. |
provider_cannot_perform | Ekip üyesi bu hizmeti veriyor olmalı. |
closed_that_day | Tarih bir özel günle kapatılmış olmamalı. |
outside_working_hours | Saat ve ara süresi çalışma saatleri içinde olmalı. |
provider_on_leave | Gereken kişilerden hiçbiri izinde olmamalı. |
slot_taken | Saat ve ara süresi boş olmalı. |
class_full | Derste hâlâ yer olmalı. |
no_provider_available | Kimse seçilmediyse müsait biri olmalı. |
customer_not_found | Müşteri bu çalışma alanında bulunmalı. |
customer_banned | Müşteri yasaklı olmamalı. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: appointments.booked
Neye yazar: appointment (insert) — Creates the appointment; appointment_guest (insert) — Adds the first guest; appointment_guest_service (insert) — Adds their first service
curl -X POST https://app.getera.io/api/v1/appointments/actions/book \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID","itemVariantId":"ITEM_VARIANT_ID","appointmentDate":"2026-11-02","startTime":"Start time"}'{
"ok": true,
"result": "…",
"events": [
"appointments.booked"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.create({
customerId: "CUSTOMER_ID",
itemVariantId: "ITEM_VARIANT_ID",
appointmentDate: "2026-11-02",
startTime: "Start time"
})era appointments create \
--customer-id "CUSTOMER_ID" \
--item-variant-id "ITEM_VARIANT_ID" \
--appointment-date "2026-11-02" \
--start-time "Start time"{
"name": "era__appointments__book",
"arguments": {
"customerId": "CUSTOMER_ID",
"itemVariantId": "ITEM_VARIANT_ID",
"appointmentDate": "2026-11-02",
"startTime": "Start time"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 service_inactive, service_has_no_duration, package_empty, inside_cutoff, outside_window, service_not_offered_that_day, provider_cannot_perform, closed_that_day, outside_working_hours, provider_on_leave, slot_taken, class_full, no_provider_available, customer_not_found, customer_banned, no_workspace · 429 çok sık istek
appointments.book_group
Grup randevusu oluştur — Tüm randevuyu — her misafir, her hizmet, her personel — tek seferde yazar.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/actions/book_group- Asıl adres:
POST /api/v1/actions/appointments.book_group
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
guests | object / array | evet | Misafirler ve hizmetleri · [{ customerId, lines: [{ itemVariantId, memberUserId? }] }] |
appointmentDate | date | evet | Tarih |
startTime | string | evet | Başlangıç saati · en çok 8 |
notes | string | Not · en çok 2000 | |
address | string | Adres · Yalnızca evde hizmet — ziyaretin yapılacağı yer. · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_guests | Misafir listesi her biri için bir müşteri ve en az bir hizmet belirtmeli. |
service_not_found | Her hizmet bulunmalı. |
service_inactive | Her hizmet aktif ve randevuya açık olmalı. |
service_has_no_duration | Paket olmayan bir hizmetin süresi olmalı. |
package_empty | Paket bir şey içermeli. |
inside_cutoff | Saat, son randevu alma süresine uymalı. |
outside_window | Saat, randevu alınabilecek zaman aralığında olmalı. |
service_not_offered_that_day | Her hizmet o hafta gününde sunuluyor olmalı. |
provider_cannot_perform | Belirtilen her ekip üyesi kendisine verilen hizmeti veriyor olmalı. |
closed_that_day | Tarih bir özel günle kapatılmış olmamalı. |
outside_working_hours | Randevunun tamamı, ara süresiyle birlikte, çalışma saatleri içinde olmalı. |
provider_on_leave | Gereken kimse izinde olamaz. |
slot_taken | Belirtilen her üye tüm randevu boyunca müsait olmalı. |
class_full | Derste hâlâ yer olmalı. |
no_provider_available | Kimsenin seçilmediği her hizmet için müsait biri olmalı. |
already_a_guest | Aynı kişi iki kez listelenmemeli. |
customer_not_found | Her misafir bu çalışma alanında bulunmalı. |
customer_banned | Hiçbir misafir yasaklı olamaz. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: appointments.booked
Neye yazar: appointment (insert) — Creates the appointment; appointment_guest (insert) — Adds every guest; appointment_guest_service (insert) — Adds every service line
curl -X POST https://app.getera.io/api/v1/appointments/actions/book_group \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"guests":{},"appointmentDate":"2026-11-02","startTime":"Start time"}'{
"ok": true,
"result": "…",
"events": [
"appointments.booked"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.bookGroup({
guests: {},
appointmentDate: "2026-11-02",
startTime: "Start time"
})era appointments book_group --data '{"guests":{},"appointmentDate":"2026-11-02","startTime":"Start time"}'{
"name": "era__appointments__book_group",
"arguments": {
"guests": {},
"appointmentDate": "2026-11-02",
"startTime": "Start time"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_guests, service_not_found, service_inactive, service_has_no_duration, package_empty, inside_cutoff, outside_window, service_not_offered_that_day, provider_cannot_perform, closed_that_day, outside_working_hours, provider_on_leave, slot_taken, class_full, no_provider_available, already_a_guest, customer_not_found, customer_banned, no_workspace · 429 çok sık istek
appointments.book_online
Online randevu al — Ziyaretçi, ekibin randevularına uygulanan tüm kurallarla siteden boş bir saate bir veya daha fazla hizmet için randevu alır ve randevusunu yönetmesi için bir bağlantı alır.
Gereken izin appointments:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/appointments/actions/book_online- Asıl adres:
POST /api/v1/actions/appointments.book_online
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
itemVariantIds | object / array | evet | Hizmetler |
appointmentDate | date | evet | Tarih |
startTime | string | evet | Başlangıç saati · en çok 8 |
memberUserId | uuid | Ekip üyesi · Müsait olan herkes için boş bırakın. | |
notes | string | Not · en çok 1000 | |
address | string | Adres · Evde hizmet ziyaretinin yapılacağı yer. · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
address_required | Evde hizmet randevusu, ziyaret edilecek adresi gerektirir. |
guest_details_required | Misafirin randevu almadan önce bilgilerini girmesi gerekir. |
service_not_found | En az bir hizmet seçilmeli. |
too_many_services | Bir online randevuda en fazla beş hizmet seçilebilir. |
slot_taken | Bu saat artık dolu; başka bir saat seçin. |
Yayımladığı olaylar: appointments.booked, appointments.service_added
Neye yazar: appointment (insert) — Creates the appointment with its manage link; appointment_guest (insert) — The person booking; appointment_guest_service (insert) — One line per service
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 address_required, guest_details_required, service_not_found, too_many_services, slot_taken · 429 çok sık istek
appointments.cancel
Randevuyu iptal et — Saati boşaltır ve sistemin geri kalanına boş olduğunu bildirir.
Gereken izin appointments:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/appointments/{id}/actions/cancel- Asıl adres:
POST /api/v1/actions/appointments.cancel
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
reason | string | Neden · Çalışma alanının iptal nedenlerinden biri. · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
already_cancelled | Zaten iptal edilmiş olmamalı. |
already_completed | Tamamlanmış bir randevu iptal edilemez. |
unknown_reason | Neden, çalışma alanının kullandığı nedenlerden biri olmalı. |
Yayımladığı olaylar: appointments.cancelled
Neye yazar: appointment (update) — Marks it cancelled and records why
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/cancel \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"appointments.cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.cancel("APPOINTMENT_ID", {
reason: "Reason"
})era appointments cancel APPOINTMENT_ID \
--reason "Reason"{
"name": "era__appointments__cancel",
"arguments": {
"appointmentId": "APPOINTMENT_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 already_cancelled, already_completed, unknown_reason · 429 çok sık istek
appointments.cancel_by_token
Bağlantıyla iptal et — Randevunun yönetim bağlantısına sahip olan kişi, iptal süresi dolmadan randevuyu iptal eder; saat başkaları için boşalır.
Gereken izin appointments:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/appointments/actions/cancel_by_token- Asıl adres:
POST /api/v1/actions/appointments.cancel_by_token
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | string | evet | Bağlantı · en çok 100 |
reason | string | Neden · en çok 80 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
booking_link_invalid | Bu bağlantı bu işletmenin bir randevusuna ait değil. |
booking_started | Randevu başladıktan sonra yapılamaz. |
inside_cutoff | Son değişiklik süresi geçti; lütfen işletmeyi arayın. |
already_cancelled | Zaten iptal edilmiş olmamalı. |
Yayımladığı olaylar: appointments.cancelled
Neye yazar: appointment (update) — Marks it cancelled
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 booking_link_invalid, booking_started, inside_cutoff, already_cancelled · 429 çok sık istek
appointments.cancel_my_booking
Randevumu iptal et — Giriş yapmış müşteri, yaklaşan randevularından birini site hesabından iptal eder; saat boşalır.
Gereken izin appointments:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır · Yayındaki bir siteden de çağrılabilir (customer)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/appointments/{id}/actions/cancel_my_booking- Asıl adres:
POST /api/v1/actions/appointments.cancel_my_booking
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Rezervasyon · kimliği: appointment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_your_booking | Yalnızca müşterinin katılımcısı olduğu bir randevu için yapılabilir. |
booking_started | Randevu başladıktan sonra yapılamaz. |
already_cancelled | Zaten iptal edilmiş olmamalı. |
Yayımladığı olaylar: appointments.cancelled
Neye yazar: appointment (update) — Marks it cancelled
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_your_booking, booking_started, already_cancelled · 429 çok sık istek
appointments.change_guest_customer
Misafiri değiştir — Bir misafirin yerine başka bir kişiyi koyar; hizmetleri, personeli ve fiyatları korur.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointment_guests/{id}/actions/change_guest_customer- Asıl adres:
POST /api/v1/actions/appointments.change_guest_customer
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentGuestId | uuid | evet | Doldurulduğu yer: adresteki {id} · Misafir · kimliği: appointment_guest |
customerId | uuid | evet | Müşteri · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
guest_not_found | Misafir bir randevuda olmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
same_customer | Yeni kişi farklı bir kişi olmalı. |
customer_not_found | Yeni kişi bulunmalı. |
customer_banned | Yeni kişi yasaklı olmamalı. |
already_a_guest | Yeni kişi zaten randevuda olmamalı. |
Yayımladığı olaylar: appointments.guest_customer_changed
Neye yazar: appointment_guest (update) — Points the guest at the new customer
curl -X POST https://app.getera.io/api/v1/appointment_guests/APPOINTMENT_GUEST_ID/actions/change_guest_customer \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"appointments.guest_customer_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentGuests.changeGuestCustomer("APPOINTMENT_GUEST_ID", {
customerId: "CUSTOMER_ID"
})era appointment_guests change_guest_customer APPOINTMENT_GUEST_ID \
--customer-id "CUSTOMER_ID"{
"name": "era__appointments__change_guest_customer",
"arguments": {
"appointmentGuestId": "APPOINTMENT_GUEST_ID",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 guest_not_found, already_cancelled, already_finished, same_customer, customer_not_found, customer_banned, already_a_guest · 429 çok sık istek
appointments.complete
Tamamlandı işaretle — Randevunun gerçekleştiğini kaydeder.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/complete- Asıl adres:
POST /api/v1/actions/appointments.complete
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
already_cancelled | İptal edilmiş bir randevu tamamlanamaz. |
already_finished | Zaten bitmiş olmamalı. |
not_yet_started | Başlamış olmalı. |
Yayımladığı olaylar: appointments.completed
Neye yazar: appointment (update) — Moves it to completed
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/complete \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.completed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.complete("APPOINTMENT_ID")era appointments complete APPOINTMENT_ID{
"name": "era__appointments__complete",
"arguments": {
"appointmentId": "APPOINTMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 already_cancelled, already_finished, not_yet_started · 429 çok sık istek
appointments.confirm
Randevuyu onayla — Bekleyen bir randevuyu kabul eder.
Gereken izin appointments:approve · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/confirm- Asıl adres:
POST /api/v1/actions/appointments.confirm
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_pending | Yalnızca bekleyen bir randevu onaylanabilir. |
Yayımladığı olaylar: appointments.confirmed
Neye yazar: appointment (update) — Moves it to confirmed
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/confirm \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.confirmed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.confirm("APPOINTMENT_ID")era appointments confirm APPOINTMENT_ID{
"name": "era__appointments__confirm",
"arguments": {
"appointmentId": "APPOINTMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:approve izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_pending · 429 çok sık istek
appointments.export
Randevuları dışa aktar — Bir dönemdeki tüm randevular, her hizmet için bir satır; liste bunları CSV veya Excel dosyasına dönüştürür.
Gereken izin appointments:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/actions/appointments.exportGirdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
from | date | evet | Nereden |
to | date | evet | Bitiş |
status | string | Durum · en çok 20 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_range | Dönemin bitişi başlangıcından önce olamaz. |
Yayımladığı olaylar: appointments.exported
curl -X POST https://app.getera.io/api/v1/actions/appointments.export \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"from":"2026-11-02","to":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"appointments.exported"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.actions.run("appointments.export", {
from: "2026-11-02",
to: "2026-11-02"
})era run appointments.export \
--from "2026-11-02" \
--to "2026-11-02"{
"name": "era__appointments__export",
"arguments": {
"from": "2026-11-02",
"to": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:export izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_range · 429 çok sık istek
appointments.import
Randevuları içe aktar — Eşleştirilmiş bir dosyayı sıraya alır, geçerli her satır için randevu oluşturur ve sonucu özet ekranı için saklar.
Gereken izin appointments:import · veriyi değiştirir
https://app.getera.io/api/v1/appointment_import_jobs/actions/import- Asıl adres:
POST /api/v1/actions/appointments.import
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
fileName | string | evet | Dosya · en çok 255 |
mapping | object / array | evet | Sütun eşleştirmesi |
rows | object / array | evet | Hazırlanan satırlar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_import | Eşleştirilen dosyada en fazla 2.000 kullanılabilir satır olmalı. |
Yayımladığı olaylar: appointments.import_completed
Neye yazar: appointment_import_job (insert) — Records and tracks the import; appointment_import_job (update) — Stores progress and the result; appointment (insert) — Books valid rows; appointment_guest (insert) — Adds each matched customer; appointment_guest_service (insert) — Adds the matched service and staff member
curl -X POST https://app.getera.io/api/v1/appointment_import_jobs/actions/import \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"fileName":"File","mapping":{},"rows":{}}'{
"ok": true,
"result": "…",
"events": [
"appointments.import_completed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentImportJobs.import({
fileName: "File",
mapping: {},
rows: {}
})era appointment_import_jobs import --data '{"fileName":"File","mapping":{},"rows":{}}'{
"name": "era__appointments__import",
"arguments": {
"fileName": "File",
"mapping": {},
"rows": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:import izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_import · 429 çok sık istek
appointments.lift_ban
Yasağı kaldır — O kişinin yeniden randevu almasına izin verir.
Gereken izin appointments:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/banned_customers/{id}/actions/lift_ban- Asıl adres:
POST /api/v1/actions/appointments.lift_ban
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Yasakla · kimliği: banned_customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Yasak bulunmalı. |
Yayımladığı olaylar: appointments.ban_lifted
Neye yazar: banned_customer (delete) — Removes the ban
curl -X POST https://app.getera.io/api/v1/banned_customers/BANNED_CUSTOMER_ID/actions/lift_ban \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.ban_lifted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.bannedCustomers.liftBan("BANNED_CUSTOMER_ID")era banned_customers lift_ban BANNED_CUSTOMER_ID{
"name": "era__appointments__lift_ban",
"arguments": {
"id": "BANNED_CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
appointments.mark_deposit_status
Randevu kaporasını güncelle — Ortak ödeme akışının randevu tarafındaki sonucunu kaydeder.
Gereken izin appointments:handle · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/mark_deposit_status- Asıl adres:
POST /api/v1/actions/appointments.mark_deposit_status
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
status | string (enum) | evet | Kapora durumu · İzin verilen değerler: pending, paid, failed, refunded |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
appointment_not_found | Randevu bulunmalı. |
deposit_not_required | Bu randevu için kapora istenmiyor. |
Yayımladığı olaylar: appointments.deposit_changed
Neye yazar: appointment (update) — Updates the frozen deposit status
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/mark_deposit_status \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"pending"}'{
"ok": true,
"result": "…",
"events": [
"appointments.deposit_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.markDepositStatus("APPOINTMENT_ID", {
status: "pending"
})era appointments mark_deposit_status APPOINTMENT_ID \
--status "pending"{
"name": "era__appointments__mark_deposit_status",
"arguments": {
"id": "APPOINTMENT_ID",
"status": "pending"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 appointment_not_found, deposit_not_required · 429 çok sık istek
appointments.no_show
Gelmedi işaretle — Müşterinin gelmediğini kaydeder.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/no_show- Asıl adres:
POST /api/v1/actions/appointments.no_show
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
already_cancelled | İptal edilmiş bir randevu “gelmedi” olarak işaretlenemez. |
already_finished | Zaten bitmiş olmamalı. |
not_yet_started | Başlamış olmalı. |
Yayımladığı olaylar: appointments.no_show
Neye yazar: appointment (update) — Moves it to no_show
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/no_show \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.no_show"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.noShow("APPOINTMENT_ID")era appointments no_show APPOINTMENT_ID{
"name": "era__appointments__no_show",
"arguments": {
"appointmentId": "APPOINTMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 already_cancelled, already_finished, not_yet_started · 429 çok sık istek
appointments.raise_reminder
Randevu hatırlatması oluştur — Randevuyu hatırlatma zamanı gelmiş olarak işaretler ve bildirim kurallarına haber verir. Hatırlatma işi çalıştırır.
Gereken izin appointments:handle · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/raise_reminder- Asıl adres:
POST /api/v1/actions/appointments.raise_reminder
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
reminders_off | Hatırlatmalar açık olmalı. |
not_found | Randevu bulunmalı. |
not_upcoming | Beklemede veya onaylı olmalı ve henüz gerçekleşmemiş olmalı. |
not_yet_due | Hatırlatma süresi içinde olmalı. |
already_reminded | Her randevu saati için yalnızca bir kez hatırlatma gönderilir. |
opted_out | En az bir misafir hatırlatmaları kabul etmeli. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: appointments.reminder_due
Neye yazar: appointment (update) — Stamps reminder_due_at
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/raise_reminder \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.reminder_due"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.raiseReminder("APPOINTMENT_ID")era appointments raise_reminder APPOINTMENT_ID{
"name": "era__appointments__raise_reminder",
"arguments": {
"appointmentId": "APPOINTMENT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 reminders_off, not_found, not_upcoming, not_yet_due, already_reminded, opted_out, no_workspace · 429 çok sık istek
appointments.remove_guest
Misafiri çıkar — Bir kişiyi randevudan, ayırttığı her şeyle birlikte çıkarır.
Gereken izin appointments:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/appointment_guests/{id}/actions/remove_guest- Asıl adres:
POST /api/v1/actions/appointments.remove_guest
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentGuestId | uuid | evet | Doldurulduğu yer: adresteki {id} · Misafir · kimliği: appointment_guest |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
guest_not_found | Misafir bir randevuda olmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
last_guest | Son misafir çıkarılamaz — bunun yerine iptal edin. |
Yayımladığı olaylar: appointments.guest_removed
Neye yazar: appointment_guest (delete) — Removes the guest and their lines; appointment (update) — Re-totals duration, price and end time
curl -X POST https://app.getera.io/api/v1/appointment_guests/APPOINTMENT_GUEST_ID/actions/remove_guest \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.guest_removed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentGuests.removeGuest("APPOINTMENT_GUEST_ID")era appointment_guests remove_guest APPOINTMENT_GUEST_ID{
"name": "era__appointments__remove_guest",
"arguments": {
"appointmentGuestId": "APPOINTMENT_GUEST_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 guest_not_found, already_cancelled, already_finished, last_guest · 429 çok sık istek
appointments.remove_service
Hizmeti kaldır — Bir hizmet satırını bırakır ve randevuyu buna göre kısaltır.
Gereken izin appointments:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/appointment_guest_services/{id}/actions/remove_service- Asıl adres:
POST /api/v1/actions/appointments.remove_service
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
lineId | uuid | evet | Doldurulduğu yer: adresteki {id} · Hizmet satırı · kimliği: appointment_guest_service |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
line_not_found | Hizmet satırı bulunmalı. |
already_cancelled | Randevu iptal edilmiş olmamalı. |
already_finished | Randevu bitmiş olmamalı. |
last_service | Son hizmet kaldırılamaz — bunun yerine iptal edin. |
Yayımladığı olaylar: appointments.service_removed
Neye yazar: appointment_guest_service (delete) — Removes the line; appointment_guest (delete) — Removes a guest left with nothing; appointment (update) — Re-totals duration, price and end time
curl -X POST https://app.getera.io/api/v1/appointment_guest_services/APPOINTMENT_GUEST_SERVICE_ID/actions/remove_service \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"appointments.service_removed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentGuestServices.removeService("APPOINTMENT_GUEST_SERVICE_ID")era appointment_guest_services remove_service APPOINTMENT_GUEST_SERVICE_ID{
"name": "era__appointments__remove_service",
"arguments": {
"lineId": "APPOINTMENT_GUEST_SERVICE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 line_not_found, already_cancelled, already_finished, last_service · 429 çok sık istek
appointments.reschedule
Randevuyu taşı — Randevuyu başka bir gün veya saate taşır; her kuralı yeni saate göre yeniden kontrol eder.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/reschedule- Asıl adres:
POST /api/v1/actions/appointments.reschedule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
appointmentDate | date | evet | Yeni tarih |
startTime | string | evet | Yeni başlangıç saati · en çok 8 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Randevu bulunmalı. |
already_cancelled | İptal edilmiş bir randevu taşınamaz. |
already_finished | Bitmiş bir randevu taşınamaz. |
unchanged | Yeni saat mevcut saatten farklı olmalı. |
no_services | Randevunun hâlâ hizmet satırları olmalı. |
inside_cutoff | Yeni saat, son randevu alma süresine uymalı. |
outside_window | Yeni saat, randevu alınabilecek zaman aralığında olmalı. |
service_not_offered_that_day | Her hizmet yeni hafta gününde sunuluyor olmalı. |
closed_that_day | Yeni tarih bir özel günle kapatılmış olmamalı. |
outside_working_hours | Tüm randevu çalışma saatlerine sığmalı. |
provider_on_leave | Randevudaki kimse o sırada izinde olamaz. |
slot_taken | Randevudaki herkes yeni zaman aralığında müsait olmalı. |
class_full | Derste yeni saatte hâlâ yer olmalı. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: appointments.rescheduled
Neye yazar: appointment (update) — Moves the date, start and end
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/reschedule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"appointmentDate":"2026-11-02","startTime":"New start time"}'{
"ok": true,
"result": "…",
"events": [
"appointments.rescheduled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.reschedule("APPOINTMENT_ID", {
appointmentDate: "2026-11-02",
startTime: "New start time"
})era appointments reschedule APPOINTMENT_ID \
--appointment-date "2026-11-02" \
--start-time "New start time"{
"name": "era__appointments__reschedule",
"arguments": {
"appointmentId": "APPOINTMENT_ID",
"appointmentDate": "2026-11-02",
"startTime": "New start time"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_cancelled, already_finished, unchanged, no_services, inside_cutoff, outside_window, service_not_offered_that_day, closed_that_day, outside_working_hours, provider_on_leave, slot_taken, class_full, no_workspace · 429 çok sık istek
appointments.reschedule_by_token
Bağlantıyla taşı — Randevunun yönetim bağlantısına sahip olan kişi, randevuyu ekibin uyduğu kurallarla başka bir boş saate taşır; eski saat boşalır.
Gereken izin appointments:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (visitor)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/appointments/actions/reschedule_by_token- Asıl adres:
POST /api/v1/actions/appointments.reschedule_by_token
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
token | string | evet | Bağlantı · en çok 100 |
appointmentDate | date | evet | Yeni tarih |
startTime | string | evet | Yeni başlangıç saati · en çok 8 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
booking_link_invalid | Bu bağlantı bu işletmenin bir randevusuna ait değil. |
booking_started | Randevu başladıktan sonra yapılamaz. |
slot_taken | Randevudaki herkes yeni saatte müsait olmalı. |
Yayımladığı olaylar: appointments.rescheduled
Neye yazar: appointment (update) — Moves the date, start and end
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 booking_link_invalid, booking_started, slot_taken · 429 çok sık istek
appointments.reschedule_my_booking
Randevumu taşı — Giriş yapmış müşteri, yaklaşan randevularından birini ekibin uyduğu kurallarla başka bir boş saate taşır.
Gereken izin appointments:write · veriyi değiştirir · Yayındaki bir siteden de çağrılabilir (customer)
/api/site/v1/{siteId}, örneğin @getera/storefront ile). API anahtarı ya da token ile istek reddedilir (403 site_only).https://app.getera.io/api/v1/appointments/{id}/actions/reschedule_my_booking- Asıl adres:
POST /api/v1/actions/appointments.reschedule_my_booking
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Rezervasyon · kimliği: appointment |
appointmentDate | date | evet | Yeni tarih |
startTime | string | evet | Yeni başlangıç saati · en çok 8 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_your_booking | Yalnızca müşterinin katılımcısı olduğu bir randevu için yapılabilir. |
booking_started | Randevu başladıktan sonra yapılamaz. |
slot_taken | Randevudaki herkes yeni zaman aralığında müsait olmalı. |
Yayımladığı olaylar: appointments.rescheduled
Neye yazar: appointment (update) — Moves the date, start and end
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_your_booking, booking_started, slot_taken · 429 çok sık istek
appointments.set_reminder_opt_out
Kişi için randevu hatırlatmaları — Müşterinin randevu hatırlatması isteyip istemediğini kaydeder.
Gereken izin appointments:write · siler ya da geri alınamaz
https://app.getera.io/api/v1/appointment_reminder_opt_outs/actions/set_reminder_opt_out- Asıl adres:
POST /api/v1/actions/appointments.set_reminder_opt_out
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
customerId | uuid | evet | Müşteri · kimliği: customer |
optOut | boolean | evet | Hatırlatılmasın |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
customer_not_found | Müşteri bulunmalı. |
Yayımladığı olaylar: appointments.reminder_opt_out_changed
Neye yazar: appointment_reminder_opt_out (insert) — Records the opt-out; appointment_reminder_opt_out (delete) — Removes it again
curl -X POST https://app.getera.io/api/v1/appointment_reminder_opt_outs/actions/set_reminder_opt_out \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID","optOut":true}'{
"ok": true,
"result": "…",
"events": [
"appointments.reminder_opt_out_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointmentReminderOptOuts.setReminderOptOut({
customerId: "CUSTOMER_ID",
optOut: true
})era appointment_reminder_opt_outs set_reminder_opt_out \
--customer-id "CUSTOMER_ID" \
--opt-out true{
"name": "era__appointments__set_reminder_opt_out",
"arguments": {
"customerId": "CUSTOMER_ID",
"optOut": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 customer_not_found · 429 çok sık istek
appointments.update_details
Notu düzenle — Personelin okuduğu not ve işletmede olmayan bir ziyaretin adresi.
Gereken izin appointments:write · veriyi değiştirir
https://app.getera.io/api/v1/appointments/{id}/actions/update_details- Asıl adres:
POST /api/v1/actions/appointments.update_details
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
appointmentId | uuid | evet | Doldurulduğu yer: adresteki {id} · Randevu · kimliği: appointment |
notes | string | Not · en çok 2000 | |
address | string | Adres · Yalnızca evde hizmet — ziyaretin yapılacağı yer. · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Randevu bulunmalı. |
Yayımladığı olaylar: appointments.details_updated
Neye yazar: appointment (update) — Stores the note and the address
curl -X POST https://app.getera.io/api/v1/appointments/APPOINTMENT_ID/actions/update_details \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"notes":"Note"}'{
"ok": true,
"result": "…",
"events": [
"appointments.details_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appointments.updateDetails("APPOINTMENT_ID", {
notes: "Note"
})era appointments update_details APPOINTMENT_ID \
--notes "Note"{
"name": "era__appointments__update_details",
"arguments": {
"appointmentId": "APPOINTMENT_ID",
"notes": "Note"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde appointments:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found · 429 çok sık istek
Veri modelleri
AppointmentGuestService
Tablo appointment_guest_service · Kaynak appointment_guest_services
GET /api/v1/appointment_guest_servicesGET /api/v1/appointment_guest_services/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
appointment_id | string (uuid) · uuid | appointment | ||
appointment_guest_id | string (uuid) · uuid | appointment_guest | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
member_user_id | string (uuid) · uuid | evet | app_user | |
duration | integer · int4 | |||
price_amount | string (int64) · int8 | |||
price_currency | string · bpchar | evet | en çok 3 | |
sort_order | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((duration > 0))CHECK ((price_amount >= 0))
AppointmentGuest
Tablo appointment_guest · Kaynak appointment_guests
GET /api/v1/appointment_guestsGET /api/v1/appointment_guests/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
appointment_id | string (uuid) · uuid | appointment | ||
customer_id | string (uuid) · uuid | customer | ||
sort_order | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
AppointmentImportJob
Tablo appointment_import_job · Kaynak appointment_import_jobs
GET /api/v1/appointment_import_jobsGET /api/v1/appointment_import_jobs/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
created_by | string (uuid) · uuid | app_user | ||
file_name | string · text | |||
mapping | object · jsonb | |||
status | string · text | queued, running, completed, failed | ||
total_rows | integer · int4 | |||
imported_rows | integer · int4 | |||
failed_rows | integer · int4 | |||
result | object · jsonb | |||
started_at | string (date-time) · timestamptz | evet | ||
finished_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((failed_rows >= 0))CHECK ((imported_rows >= 0))CHECK ((total_rows >= 0))
AppointmentReminderOptOut
Tablo appointment_reminder_opt_out · Kaynak appointment_reminder_opt_outs
GET /api/v1/appointment_reminder_opt_outsGET /api/v1/appointment_reminder_opt_outs/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
customer_id | string (uuid) · uuid | customer | ||
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, customer_id
Appointment
Tablo appointment · Kaynak appointments
GET /api/v1/appointmentsGET /api/v1/appointments/{id}POST /api/v1/appointments→appointments.book
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
appointment_date | string (date) · date | |||
start_time | string (time) · time | |||
end_time | string (time) · time | |||
total_duration | integer · int4 | |||
total_price_amount | string (int64) · int8 | |||
total_price_currency | string · bpchar | evet | en çok 3 | |
status | string · text | pending, confirmed, completed, cancelled, no_show | ||
notes | string · text | evet | ||
cancellation_reason | string · text | evet | ||
cancelled_at | string (date-time) · timestamptz | evet | ||
owner_user_id | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
address | string · text | evet | ||
reminder_due_at | string (date-time) · timestamptz | evet | ||
deposit_amount | string (int64) · int8 | |||
deposit_status | string · text | not_required, required, pending, paid, failed, refunded | ||
booked_online_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK ((end_time > start_time))CHECK (((status = 'cancelled'::text) = (cancelled_at IS NOT NULL)))CHECK ((deposit_amount >= 0))CHECK ((total_duration >= 0))CHECK ((total_price_amount >= 0))
BannedCustomer
Tablo banned_customer · Kaynak banned_customers
GET /api/v1/banned_customersGET /api/v1/banned_customers/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
email | string · text | evet | ||
phone | string · text | evet | ||
reason | string · text | evet | ||
notes | string · text | evet | ||
banned_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((email IS NOT NULL) OR (phone IS NOT NULL)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
appointments.ban_lifted | Bir engel kaldırıldı. | id |
appointments.booked | Bir randevu alındı. | id, appointmentDate, startTime, customerId, itemVariantId, memberUserId, totalAmount, currency, depositAmount |
appointments.cancelled | Bir randevu iptal edildi ve saat boşaldı. | id, appointmentDate, startTime, reason, customerId |
appointments.completed | Randevu gerçekleşti. | id, customerId, customerName, appointmentDate, startTime, memberUserId, itemVariantId |
appointments.confirmed | Bekleyen bir randevu kabul edildi. | id, appointmentDate, customerId, totalAmount, currency |
appointments.customer_banned | Birinin randevu alması engellendi. | id, email, phone |
appointments.deposit_changed | Bir randevunun kaporasının durumu değişti. | id, from, to, amount |
appointments.details_updated | Not ya da adres değişti. | id |
appointments.exported | Randevular dosya olarak indirildi. | count, from, to, truncated |
appointments.guest_added | Bir randevuya başka biri katıldı. | id, guestId, customerId, lineId |
appointments.guest_customer_changed | Bir misafirin yeri başka birine verildi. | id, guestId, fromCustomerId, customerId, lineIds |
appointments.guest_removed | Biri bir randevudan çıkarıldı. | id, guestId |
appointments.import_completed | Eşleştirilmiş randevu dosyasının içe aktarımı bitti. | id, imported, failed |
appointments.member_assigned | Bir hizmet satırı başka bir ekip üyesine atandı. | id, lineId, memberUserId |
appointments.no_show | Müşteri gelmedi. | id, customerId, customerName, appointmentDate, startTime, memberUserId, itemVariantId |
appointments.reminder_due | Bir randevu hatırlatma süresine girdi — bildirim kuralları gönderir. | id, appointmentDate, startTime, customerId, customerIds, channels, hoursBefore, timezone |
appointments.reminder_opt_out_changed | Bir müşteri randevu hatırlatmalarını almaya başladı ya da bıraktı. | customerId, optOut |
appointments.rescheduled | Bir randevu başka bir saate taşındı. | id, fromDate, fromStartTime, appointmentDate, startTime, customerId |
appointments.service_added | Bir randevuya başka bir hizmet eklendi. | id, lineId, itemVariantId |
appointments.service_removed | Bir randevudan bir hizmet çıkarıldı. | id, lineId |