Grup dersleri API
Grup dersleri modülünün tüm işlemleri (12) ve veri modelleri (4): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Kontenjan, eğitmen, rezervasyon ve yoklamayla haftalık ders programı.
Modül kodu group_classes · 12 işlem · 4 veri modeli · 11 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ı: group_classes (hepsi), group_classes:read (yalnız okuma) ya da group_classes:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
group_class_joinings | group_class_joining | /api/v1/group_class_joinings | |||
group_class_schedules | group_class_schedule | /api/v1/group_class_schedules | |||
group_class_services | group_class_service | /api/v1/group_class_services | |||
group_classes | group_class | /api/v1/group_classes |
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 |
|---|---|---|
group_classes.add_schedule | group_classes:manage | Haftalık saat ekle |
group_classes.archive_class | group_classes:manage | Dersi kaldır |
group_classes.cancel_joining | group_classes:write | Ders rezervasyonunu iptal et |
group_classes.cancel_session | group_classes:manage | Tek seansı iptal et |
group_classes.create_class | group_classes:manage | Ders oluştur |
group_classes.end_schedule | group_classes:manage | Seriyi bitir |
group_classes.join | group_classes:write | Yer ayırt |
group_classes.join_online | group_classes:write | Online derse yer ayır |
group_classes.mark_attendance | group_classes:write | Yoklama al |
group_classes.set_services | group_classes:manage | Hizmetleri değiştir |
group_classes.update_class | group_classes:manage | Dersi düzenle |
group_classes.update_schedule | group_classes:manage | Haftalık saati düzenle |
group_classes.add_schedule
Haftalık saat ekle — Yeni bir seri başlatır: ders her hafta bu gün ve saatte yapılır.
Gereken izin group_classes:manage · veriyi değiştirir
https://app.getera.io/api/v1/group_class_schedules/actions/add_schedule- Asıl adres:
POST /api/v1/actions/group_classes.add_schedule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
groupClassId | uuid | evet | Ders · kimliği: group_class |
weekday | number | evet | Gün · en az 0 · en çok 6 |
startTime | string | evet | Başlangıç · en çok 8 |
duration | number | evet | Süre (dakika) · en az 1 · en çok 1440 |
instructorUserId | uuid | Eğitmen | |
startsOn | date | İlk seans başlangıcı |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sınıf bulunmalı. |
class_archived | Kaldırılmış bir ders programa konamaz. |
no_schedule | Gün, saat ve süre düzgün biçimde olmalı. |
schedule_exists | Ders o gün ve saatte zaten yapılıyor olmamalı. |
service_not_offered_that_day | Dersin hizmetleri o gün sunuluyor olmalı. |
provider_cannot_perform | Eğitmen dersteki her hizmeti vermeli. |
Yayımladığı olaylar: group_classes.series_created
Neye yazar: group_class_schedule (insert) — Writes the series
curl -X POST https://app.getera.io/api/v1/group_class_schedules/actions/add_schedule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"groupClassId":"GROUP_CLASS_ID","weekday":1,"startTime":"Starts","duration":1}'{
"ok": true,
"result": "…",
"events": [
"group_classes.series_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassSchedules.addSchedule({
groupClassId: "GROUP_CLASS_ID",
weekday: 1,
startTime: "Starts",
duration: 1
})era group_class_schedules add_schedule \
--group-class-id "GROUP_CLASS_ID" \
--weekday 1 \
--start-time "Starts" \
--duration 1{
"name": "era__group_classes__add_schedule",
"arguments": {
"groupClassId": "GROUP_CLASS_ID",
"weekday": 1,
"startTime": "Starts",
"duration": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, class_archived, no_schedule, schedule_exists, service_not_offered_that_day, provider_cannot_perform · 429 çok sık istek
group_classes.archive_class
Dersi kaldır — Rezervasyon almayı durdurur. Geçmiş kalır.
Gereken izin group_classes: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/group_classes/{id}/actions/archive_class- Asıl adres:
POST /api/v1/actions/group_classes.archive_class
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Ders · kimliği: group_class |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sınıf bulunmalı. |
class_archived | Zaten kaldırılmış olmamalı. |
has_upcoming_joinings | Yaklaşan bir seansa kimse kayıtlı olmamalı. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.class_archived
Neye yazar: group_class (update) — Stamps archived_at; group_class_schedule (update) — Ends every running series today
curl -X POST https://app.getera.io/api/v1/group_classes/GROUP_CLASSE_ID/actions/archive_class \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"group_classes.class_archived"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClasses.archiveClass("GROUP_CLASSE_ID")era group_classes archive_class GROUP_CLASSE_ID{
"name": "era__group_classes__archive_class",
"arguments": {
"id": "GROUP_CLASSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, class_archived, has_upcoming_joinings, no_workspace · 429 çok sık istek
group_classes.cancel_joining
Ders rezervasyonunu iptal et — Yeri boşaltır. Neden zorunludur.
Gereken izin group_classes:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/group_class_joinings/{id}/actions/cancel_joining- Asıl adres:
POST /api/v1/actions/group_classes.cancel_joining
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
joiningId | uuid | evet | Doldurulduğu yer: adresteki {id} · Rezervasyon · kimliği: group_class_joining |
reason | string | evet | Neden · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
joining_not_found | Rezervasyon bulunmalı. |
already_cancelled | Zaten iptal edilmiş olmamalı. |
already_finished | Yoklama zaten kaydedilmiş olmamalı. |
unknown_reason | Neden, çalışma alanının kullandığı nedenlerden biri olmalı. |
Yayımladığı olaylar: group_classes.joining_cancelled
Neye yazar: group_class_joining (update) — Marks it cancelled and records why
curl -X POST https://app.getera.io/api/v1/group_class_joinings/GROUP_CLASS_JOINING_ID/actions/cancel_joining \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"group_classes.joining_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassJoinings.cancelJoining("GROUP_CLASS_JOINING_ID", {
reason: "Reason"
})era group_class_joinings cancel_joining GROUP_CLASS_JOINING_ID \
--reason "Reason"{
"name": "era__group_classes__cancel_joining",
"arguments": {
"joiningId": "GROUP_CLASS_JOINING_ID",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 joining_not_found, already_cancelled, already_finished, unknown_reason · 429 çok sık istek
group_classes.cancel_session
Tek seansı iptal et — Bir tarihi seriden çıkarır ve o seansa kayıtlı herkesi iptal eder.
Gereken izin group_classes:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/group_class_joinings/actions/cancel_session- Asıl adres:
POST /api/v1/actions/group_classes.cancel_session
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
scheduleId | uuid | evet | Seri · kimliği: group_class_schedule |
sessionDate | date | evet | Tarih |
reason | string | evet | Neden · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
schedule_not_found | Seri bulunmalı. |
not_found | Dersi bulunmalı. |
unknown_reason | Neden, çalışma alanının kullandığı nedenlerden biri olmalı. |
no_such_session | Ders o tarihte yapılıyor olmalı. |
session_cancelled | Zaten iptal edilmiş olmamalı. |
session_in_past | Başlamış olmamalı. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.session_cancelled, group_classes.joining_cancelled
Neye yazar: group_class_session_cancellation (insert) — Records the cancelled date; group_class_joining (update) — Cancels everyone booked on it
curl -X POST https://app.getera.io/api/v1/group_class_joinings/actions/cancel_session \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"scheduleId":"GROUP_CLASS_SCHEDULE_ID","sessionDate":"2026-11-02","reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"group_classes.session_cancelled",
"group_classes.joining_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassJoinings.cancelSession({
scheduleId: "GROUP_CLASS_SCHEDULE_ID",
sessionDate: "2026-11-02",
reason: "Reason"
})era group_class_joinings cancel_session \
--schedule-id "GROUP_CLASS_SCHEDULE_ID" \
--session-date "2026-11-02" \
--reason "Reason"{
"name": "era__group_classes__cancel_session",
"arguments": {
"scheduleId": "GROUP_CLASS_SCHEDULE_ID",
"sessionDate": "2026-11-02",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 schedule_not_found, not_found, unknown_reason, no_such_session, session_cancelled, session_in_past, no_workspace · 429 çok sık istek
group_classes.create_class
Ders oluştur — Hizmetleri, kontenjanı ve haftalık saatleriyle bir ders, tek seferde.
Gereken izin group_classes:manage · veriyi değiştirir
https://app.getera.io/api/v1/group_classes/actions/create_class- Asıl adres:
POST /api/v1/actions/group_classes.create_class
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Ad · en çok 255 |
capacity | number | evet | Yer · en az 1 · en çok 10000 |
instructorUserId | uuid | Eğitmen | |
itemVariantIds | object / array | evet | Hizmetler · [itemVariantId, …] |
schedules | object / array | evet | Haftalık saatler · [{ weekday: 0–6 (0 = Pazar), startTime: "HH:MM", duration: dakika, instructorUserId? }] |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
no_services | En az bir hizmet seçilmeli. |
no_schedule | En az bir geçerli haftalık saat verilmeli. |
service_not_found | Her hizmet bulunmalı. |
not_a_class_service | Yalnızca grup dersi olarak ayarlanmış hizmetler kullanılabilir. |
service_not_offered_that_day | Her haftalık saat, hizmetlerinin sunulduğu bir güne düşmeli. |
provider_cannot_perform | Dersteki her hizmeti bir eğitmen vermeli. |
schedule_exists | Aynı gün ve saat iki kez listelenemez. |
Yayımladığı olaylar: group_classes.class_created
Neye yazar: group_class (insert) — Creates the class; group_class_service (insert) — Links its services; group_class_schedule (insert) — Writes its weekly series
curl -X POST https://app.getera.io/api/v1/group_classes/actions/create_class \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name","capacity":1,"itemVariantIds":{},"schedules":{}}'{
"ok": true,
"result": "…",
"events": [
"group_classes.class_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClasses.createClass({
name: "Name",
capacity: 1,
itemVariantIds: {},
schedules: {}
})era group_classes create_class --data '{"name":"Name","capacity":1,"itemVariantIds":{},"schedules":{}}'{
"name": "era__group_classes__create_class",
"arguments": {
"name": "Name",
"capacity": 1,
"itemVariantIds": {},
"schedules": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 no_services, no_schedule, service_not_found, not_a_class_service, service_not_offered_that_day, provider_cannot_perform, schedule_exists · 429 çok sık istek
group_classes.end_schedule
Seriyi bitir — Ders bir tarihten sonra bu saatte yapılmaz; sonraki rezervasyonlar iptal edilir.
Gereken izin group_classes: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/group_class_schedules/{id}/actions/end_schedule- Asıl adres:
POST /api/v1/actions/group_classes.end_schedule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
scheduleId | uuid | evet | Doldurulduğu yer: adresteki {id} · Seri · kimliği: group_class_schedule |
endsOn | date | evet | Son seans |
reason | string | evet | Neden · en çok 64 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
schedule_not_found | Seri bulunmalı. |
schedule_ended | Hâlâ devam ediyor olmalı. |
not_found | Dersi bulunmalı. |
unknown_reason | Neden, çalışma alanının kullandığı nedenlerden biri olmalı. |
ends_in_past | Bir seri bugün veya daha sonra biter, asla geçmişte değil. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.series_ended, group_classes.joining_cancelled
Neye yazar: group_class_schedule (update) — Stamps ends_on; group_class_joining (update) — Cancels bookings after the last session
curl -X POST https://app.getera.io/api/v1/group_class_schedules/GROUP_CLASS_SCHEDULE_ID/actions/end_schedule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"endsOn":"2026-11-02","reason":"Reason"}'{
"ok": true,
"result": "…",
"events": [
"group_classes.series_ended",
"group_classes.joining_cancelled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassSchedules.endSchedule("GROUP_CLASS_SCHEDULE_ID", {
endsOn: "2026-11-02",
reason: "Reason"
})era group_class_schedules end_schedule GROUP_CLASS_SCHEDULE_ID \
--ends-on "2026-11-02" \
--reason "Reason"{
"name": "era__group_classes__end_schedule",
"arguments": {
"scheduleId": "GROUP_CLASS_SCHEDULE_ID",
"endsOn": "2026-11-02",
"reason": "Reason"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 schedule_not_found, schedule_ended, not_found, unknown_reason, ends_in_past, no_workspace · 429 çok sık istek
group_classes.join
Yer ayırt — Yer varken bir müşteriyi dersin bir seansına kaydeder.
Gereken izin group_classes:write · veriyi değiştirir
https://app.getera.io/api/v1/group_class_joinings/actions/join- Asıl adres:
POST /api/v1/actions/group_classes.join
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
scheduleId | uuid | evet | Seri · kimliği: group_class_schedule |
sessionDate | date | evet | Tarih |
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 |
|---|---|
schedule_not_found | Seri bulunmalı. |
not_found | Dersi bulunmalı. |
class_archived | Kaldırılmış bir ders rezervasyon almaz. |
no_such_session | Ders o tarihte yapılıyor olmalı. |
session_cancelled | Seans iptal edilmiş olmamalı. |
inside_cutoff | Seans başlamamış olmalı (ya da son rezervasyon süresinin içinde olmamalı). |
outside_window | Seans rezervasyon penceresi içinde olmalı. |
class_full | Seansta boş yer olmalı. |
customer_not_found | Müşteri bu çalışma alanında bulunmalı. |
customer_banned | Müşteri yasaklı olmamalı. |
already_joined | Aynı kişi bir seansa iki kez kaydedilemez. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.joined
Neye yazar: group_class_joining (insert) — Books the place, with its price frozen
curl -X POST https://app.getera.io/api/v1/group_class_joinings/actions/join \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"scheduleId":"GROUP_CLASS_SCHEDULE_ID","sessionDate":"2026-11-02","customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"group_classes.joined"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassJoinings.join({
scheduleId: "GROUP_CLASS_SCHEDULE_ID",
sessionDate: "2026-11-02",
customerId: "CUSTOMER_ID"
})era group_class_joinings join \
--schedule-id "GROUP_CLASS_SCHEDULE_ID" \
--session-date "2026-11-02" \
--customer-id "CUSTOMER_ID"{
"name": "era__group_classes__join",
"arguments": {
"scheduleId": "GROUP_CLASS_SCHEDULE_ID",
"sessionDate": "2026-11-02",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 schedule_not_found, not_found, class_archived, no_such_session, session_cancelled, inside_cutoff, outside_window, class_full, customer_not_found, customer_banned, already_joined, no_workspace · 429 çok sık istek
group_classes.join_online
Online derse yer ayır — Ziyaretçi, site ders programından yer olan bir ders oturumunda kendine bir yer ayırır.
Gereken izin group_classes: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/group_class_joinings/actions/join_online- Asıl adres:
POST /api/v1/actions/group_classes.join_online
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
scheduleId | uuid | evet | Seri · kimliği: group_class_schedule |
sessionDate | date | evet | Tarih |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
guest_details_required | Misafirin randevu almadan önce bilgilerini girmesi gerekir. |
class_full | Seansta boş yer olmalı. |
Yayımladığı olaylar: group_classes.joined
Neye yazar: group_class_joining (insert) — Books the place, with its price frozen
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 guest_details_required, class_full · 429 çok sık istek
group_classes.mark_attendance
Yoklama al — Geldi ya da gelmedi.
Gereken izin group_classes:write · veriyi değiştirir
https://app.getera.io/api/v1/group_class_joinings/{id}/actions/mark_attendance- Asıl adres:
POST /api/v1/actions/group_classes.mark_attendance
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
joiningId | uuid | evet | Doldurulduğu yer: adresteki {id} · Rezervasyon · kimliği: group_class_joining |
attended | boolean | evet | Katıldı |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
joining_not_found | Rezervasyon bulunmalı. |
already_cancelled | İptal edilmiş bir rezervasyonun yoklaması olmaz. |
already_finished | Yoklama bir kez kaydedilir. |
not_yet_started | Seans başlamış olmalı. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.attended, group_classes.no_show
Neye yazar: group_class_joining (update) — Moves it to completed or no_show
curl -X POST https://app.getera.io/api/v1/group_class_joinings/GROUP_CLASS_JOINING_ID/actions/mark_attendance \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"attended":true}'{
"ok": true,
"result": "…",
"events": [
"group_classes.attended",
"group_classes.no_show"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassJoinings.markAttendance("GROUP_CLASS_JOINING_ID", {
attended: true
})era group_class_joinings mark_attendance GROUP_CLASS_JOINING_ID \
--attended true{
"name": "era__group_classes__mark_attendance",
"arguments": {
"joiningId": "GROUP_CLASS_JOINING_ID",
"attended": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 joining_not_found, already_cancelled, already_finished, not_yet_started, no_workspace · 429 çok sık istek
group_classes.set_services
Hizmetleri değiştir — Dersi hangi hizmetlerin oluşturduğu — ve dolayısıyla fiyatı.
Gereken izin group_classes:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/group_class_services/actions/set_services- Asıl adres:
POST /api/v1/actions/group_classes.set_services
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Ders · kimliği: group_class |
itemVariantIds | object / array | evet | Hizmetler · [itemVariantId, …] |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sınıf bulunmalı. |
class_archived | Kaldırılmış bir ders düzenlenemez. |
no_services | En az bir hizmet kalmalı. |
service_not_found | Her hizmet bulunmalı. |
not_a_class_service | Yalnızca grup dersi olarak ayarlanmış hizmetler kullanılabilir. |
service_not_offered_that_day | Her hizmet dersin yapıldığı günlerde sunuluyor olmalı. |
Yayımladığı olaylar: group_classes.class_updated
Neye yazar: group_class_service (upsert) — Sets the class’s services; group_class_service (delete) — Removes the ones no longer in it
curl -X POST https://app.getera.io/api/v1/group_class_services/actions/set_services \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"GROUP_CLASS_ID","itemVariantIds":{}}'{
"ok": true,
"result": "…",
"events": [
"group_classes.class_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassServices.setServices({
id: "GROUP_CLASS_ID",
itemVariantIds: {}
})era group_class_services set_services --data '{"id":"GROUP_CLASS_ID","itemVariantIds":{}}'{
"name": "era__group_classes__set_services",
"arguments": {
"id": "GROUP_CLASS_ID",
"itemVariantIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, class_archived, no_services, service_not_found, not_a_class_service, service_not_offered_that_day · 429 çok sık istek
group_classes.update_class
Dersi düzenle — Ad, kontenjan ve varsayılan eğitmen.
Gereken izin group_classes:manage · veriyi değiştirir
https://app.getera.io/api/v1/group_classes/{id}/actions/update_class- Asıl adres:
POST /api/v1/actions/group_classes.update_class
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Ders · kimliği: group_class |
name | string | Ad · en çok 255 | |
capacity | number | Yer · en az 1 · en çok 10000 | |
instructorUserId | uuid | Eğitmen | |
clearInstructor | boolean | Varsayılan eğitmen yok |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Sınıf bulunmalı. |
class_archived | Kaldırılmış bir ders düzenlenemez. |
capacity_below_booked | Kontenjan yaklaşan bir seansın rezervasyonlarının altına inemez. |
provider_cannot_perform | Eğitmen dersteki her hizmeti vermeli. |
no_workspace | Saati için çalışma alanı okunabilir olmalı. |
Yayımladığı olaylar: group_classes.class_updated
Neye yazar: group_class (update) — Updates the class
curl -X POST https://app.getera.io/api/v1/group_classes/GROUP_CLASSE_ID/actions/update_class \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"group_classes.class_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClasses.updateClass("GROUP_CLASSE_ID", {
name: "Name"
})era group_classes update_class GROUP_CLASSE_ID \
--name "Name"{
"name": "era__group_classes__update_class",
"arguments": {
"id": "GROUP_CLASSE_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, class_archived, capacity_below_booked, provider_cannot_perform, no_workspace · 429 çok sık istek
group_classes.update_schedule
Haftalık saati düzenle — Süre ve eğitmen her zaman; gün ve saat yalnızca kimse kayıtlı değilken.
Gereken izin group_classes:manage · veriyi değiştirir
https://app.getera.io/api/v1/group_class_schedules/{id}/actions/update_schedule- Asıl adres:
POST /api/v1/actions/group_classes.update_schedule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
scheduleId | uuid | evet | Doldurulduğu yer: adresteki {id} · Seri · kimliği: group_class_schedule |
weekday | number | Gün · en az 0 · en çok 6 | |
startTime | string | Başlangıç · en çok 8 | |
duration | number | Süre (dakika) · en az 1 · en çok 1440 | |
instructorUserId | uuid | Eğitmen | |
clearInstructor | boolean | Dersin eğitmeni olsun |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
schedule_not_found | Seri bulunmalı. |
schedule_ended | Bitmiş bir seri düzenlenemez. |
class_archived | Kaldırılmış bir ders düzenlenemez. |
no_schedule | Gün, saat ve süre düzgün biçimde olmalı. |
has_upcoming_joinings | Seriye kayıtlı kişiler varken gün ve saat değişemez. |
schedule_exists | Ders yeni gün ve saatte zaten yapılıyor olmamalı. |
service_not_offered_that_day | Dersin hizmetleri yeni günde sunuluyor olmalı. |
provider_cannot_perform | Eğitmen dersteki her hizmeti vermeli. |
Yayımladığı olaylar: group_classes.series_updated
Neye yazar: group_class_schedule (update) — Updates the series
curl -X POST https://app.getera.io/api/v1/group_class_schedules/GROUP_CLASS_SCHEDULE_ID/actions/update_schedule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"weekday":1}'{
"ok": true,
"result": "…",
"events": [
"group_classes.series_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.groupClassSchedules.updateSchedule("GROUP_CLASS_SCHEDULE_ID", {
weekday: 1
})era group_class_schedules update_schedule GROUP_CLASS_SCHEDULE_ID \
--weekday 1{
"name": "era__group_classes__update_schedule",
"arguments": {
"scheduleId": "GROUP_CLASS_SCHEDULE_ID",
"weekday": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde group_classes:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 schedule_not_found, schedule_ended, class_archived, no_schedule, has_upcoming_joinings, schedule_exists, service_not_offered_that_day, provider_cannot_perform · 429 çok sık istek
Veri modelleri
GroupClassJoining
Tablo group_class_joining · Kaynak group_class_joinings
GET /api/v1/group_class_joiningsGET /api/v1/group_class_joinings/{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 | ||
group_class_id | string (uuid) · uuid | group_class | ||
schedule_id | string (uuid) · uuid | group_class_schedule | ||
customer_id | string (uuid) · uuid | customer | ||
session_date | string (date) · date | |||
start_time | string (time) · time | |||
status | string · text | active, cancelled, completed, no_show | ||
price_amount | string (int64) · int8 | |||
price_currency | string · bpchar | evet | en çok 3 | |
cancelled_at | string (date-time) · timestamptz | evet | ||
cancellation_reason | string · text | evet | ||
attended_marked_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 |
Birincil anahtar: id
Denetimler:
CHECK ((price_amount >= 0))
GroupClassSchedule
Tablo group_class_schedule · Kaynak group_class_schedules
GET /api/v1/group_class_schedulesGET /api/v1/group_class_schedules/{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 | ||
group_class_id | string (uuid) · uuid | group_class | ||
weekday | integer · int4 | |||
start_time | string (time) · time | |||
duration | integer · int4 | |||
instructor_user_id | string (uuid) · uuid | evet | app_user | |
starts_on | string (date) · date | evet | ||
ends_on | string (date) · date | evet | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((starts_on IS NULL) OR (ends_on IS NULL) OR (ends_on >= starts_on)))CHECK ((duration > 0))CHECK (((weekday >= 0) AND (weekday <= 6)))
GroupClassService
Tablo group_class_service · Kaynak group_class_services
GET /api/v1/group_class_servicesGET /api/v1/group_class_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 | ||
group_class_id | string (uuid) · uuid | group_class | ||
item_variant_id | string (uuid) · uuid | item_variant | ||
sort_order | integer · int4 | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: group_class_id, item_variant_id
GroupClass
Tablo group_class · Kaynak group_classes
GET /api/v1/group_classesGET /api/v1/group_classes/{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 | ||
name | string · text | |||
capacity | integer · int4 | |||
instructor_user_id | string (uuid) · uuid | evet | app_user | |
archived_at | string (date-time) · timestamptz | evet | ||
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
is_public | boolean · bool | evet |
Birincil anahtar: id
Denetimler:
CHECK ((capacity > 0))CHECK (((length(btrim(name)) >= 1) AND (length(btrim(name)) <= 255)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
group_classes.attended | Bir müşteri dersine geldi. | id, groupClassId, customerId, sessionDate |
group_classes.class_archived | Bir ders kaldırıldı. | id |
group_classes.class_created | Bir ders oluşturuldu. | id, name, capacity |
group_classes.class_updated | Bir ders değişti. | id |
group_classes.joined | Bir müşteri yer ayırttı. | id, groupClassId, customerId, sessionDate, startTime, priceAmount, priceCurrency, scheduleId |
group_classes.joining_cancelled | Bir ders kaydı iptal edildi. | id, groupClassId, customerId, sessionDate, reason |
group_classes.no_show | Bir müşteri dersine gelmedi. | id, groupClassId, customerId, sessionDate |
group_classes.series_created | Bir ders yeni bir haftalık saatte başladı. | id, groupClassId, weekday, startTime |
group_classes.series_ended | Haftalık bir seri sona erdirildi. | id, groupClassId, endsOn, cancelled |
group_classes.series_updated | Bir haftalık saat değişti. | id, groupClassId |
group_classes.session_cancelled | Bir serinin bir tarihi iptal edildi. | id, groupClassId, sessionDate, cancelled |