Müsaitlik API

Müsaitlik modülünün tüm işlemleri (13) ve veri modelleri (7): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Çalışma saatleri, özel günler, izinler ve hangi hizmeti kimin verdiği.

Modül kodu availability · 13 işlem · 7 veri modeli · 12 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ı: availability (hepsi), availability:read (yalnız okuma) ya da availability:<yetenek>.

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
leave_allowancesleave_allowance/api/v1/leave_allowances
leave_periodsleave_period/api/v1/leave_periods
leave_typesleave_type/api/v1/leave_types
service_available_daysservice_available_day/api/v1/service_available_days
service_providersservice_provider/api/v1/service_providers
working_hour_overridesworking_hour_override/api/v1/working_hour_overrides
working_hoursworking_hour/api/v1/working_hours

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

İşlemGereken izinNe yapar
availability.adjust_allowanceavailability:manageBakiyeyi düzelt
availability.approve_leaveavailability:writeİzni onayla
availability.cancel_leaveavailability:writeİzni geri çek
availability.carry_overavailability:manageİzin yılını kapat
availability.clear_overrideavailability:manageÖzel günü kaldır
availability.clear_person_hoursavailability:manageÇalışma alanının saatlerini kullan
availability.reject_leaveavailability:writeİzni reddet
availability.request_leaveavailability:writeİzin talep et
availability.save_leave_typeavailability:manageİzin türünü kaydet
availability.set_hoursavailability:manageÇalışma saatlerini belirle
availability.set_item_daysavailability:manageHangi günler sunulduğunu belirle
availability.set_item_providersavailability:manageKimin yapabileceğini belirle
availability.set_overrideavailability:manageÖzel gün belirle

availability.adjust_allowance

Bakiyeyi düzelt — Bir kişinin bir yıllık bakiyesine gün ekler veya çıkarır — yeni başlayanın kıst hakkı, bir düzeltme.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_allowances/actions/adjust_allowance
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.adjust_allowance

Girdi

AlanTürZorunluAçıklama
userIduuidevetEkip üyesi · kimliği: app_user
leaveTypestringevetTür · en çok 40
yearnumberevetYıl · en az 2000 · en çok 2100
adjustmentnumberevetDüzeltme (gün) · en az -366 · en çok 366
notestringNeden · en çok 1000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_leave_typeYalnızca sayılan bir türün bakiyesi olur.
not_a_memberKişi bu çalışma alanının üyesi olmalı.

Yayımladığı olaylar: availability.allowance_adjusted

Neye yazar: leave_allowance (upsert) — Sets the adjustment for that year

curl -X POST https://app.getera.io/api/v1/leave_allowances/actions/adjust_allowance \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"userId":"APP_USER_ID","leaveType":"Kind","year":2000,"adjustment":1}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.allowance_adjusted"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leaveAllowances.adjustAllowance({
  userId: "APP_USER_ID",
  leaveType: "Kind",
  year: 2000,
  adjustment: 1
})
era leave_allowances adjust_allowance \
  --user-id "APP_USER_ID" \
  --leave-type "Kind" \
  --year 2000 \
  --adjustment 1
tools/call
{
  "name": "era__availability__adjust_allowance",
  "arguments": {
    "userId": "APP_USER_ID",
    "leaveType": "Kind",
    "year": 2000,
    "adjustment": 1
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_leave_type, not_a_member · 429 çok sık istek

availability.approve_leave

İzni onayla — İzni kesinleştirir; bozacağı randevuları belirtir.

Gereken izin availability:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_periods/{id}/actions/approve_leave
API anahtarı ya da OAuth token · availability:write
  • Asıl adres: POST /api/v1/actions/availability.approve_leave

Girdi

AlanTürZorunluAçıklama
leaveIduuidevetDoldurulduğu yer: adresteki {id} · Talep · kimliği: leave_period
forcebooleanYine de onayla
notestringNot · en çok 1000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
already_approvedZaten onaylanmış olmamalı.
not_foundTalep bulunmalı.
not_pendingYalnızca hâlâ bekleyen bir talep karara bağlanabilir.
cannot_approve_ownYapılandırma yetkiniz yoksa kendi izninize başkası karar verir.
not_an_approverYöneticisi ya da onay yetkisi olan biri karar verir.
clashes_with_appointmentsİzin süresi içindeki randevular belirtilir.

Yayımladığı olaylar: availability.leave_approved

Neye yazar: leave_period (update) — Marks it approved

curl -X POST https://app.getera.io/api/v1/leave_periods/LEAVE_PERIOD_ID/actions/approve_leave \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"force":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_approved"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leavePeriods.approveLeave("LEAVE_PERIOD_ID", {
  force: true
})
era leave_periods approve_leave LEAVE_PERIOD_ID \
  --force true
tools/call
{
  "name": "era__availability__approve_leave",
  "arguments": {
    "leaveId": "LEAVE_PERIOD_ID",
    "force": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 already_approved, not_found, not_pending, cannot_approve_own, not_an_approver, clashes_with_appointments · 429 çok sık istek

availability.cancel_leave

İzni geri çek — Bir talebi geri çeker ya da başlamamış onaylı izni iade eder.

Gereken izin availability:write · siler ya da geri alınamaz

POSThttps://app.getera.io/api/v1/leave_periods/{id}/actions/cancel_leave
API anahtarı ya da OAuth token · availability:write
  • Asıl adres: POST /api/v1/actions/availability.cancel_leave

Girdi

AlanTürZorunluAçıklama
leaveIduuidevetDoldurulduğu yer: adresteki {id} · Talep · kimliği: leave_period

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundTalep bulunmalı.
not_your_leaveYalnızca kişinin kendisi ya da Yapılandırma yetkisi olan biri geri çekebilir.
cannot_cancelReddedilmiş, geri çekilmiş veya başlamış izin geri çekilemez.

Yayımladığı olaylar: availability.leave_cancelled

Neye yazar: leave_period (update) — Marks it withdrawn

curl -X POST https://app.getera.io/api/v1/leave_periods/LEAVE_PERIOD_ID/actions/cancel_leave \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_cancelled"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leavePeriods.cancelLeave("LEAVE_PERIOD_ID")
era leave_periods cancel_leave LEAVE_PERIOD_ID
tools/call
{
  "name": "era__availability__cancel_leave",
  "arguments": {
    "leaveId": "LEAVE_PERIOD_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_your_leave, cannot_cancel · 429 çok sık istek

availability.carry_over

İzin yılını kapat — Her bakiyeden kalanı, her türün devir sınırına kadar sonraki yıla taşır.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_allowances/actions/carry_over
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.carry_over

Girdi

AlanTürZorunluAçıklama
yearnumberevetYıl · en az 2000 · en çok 2100

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
year_not_overYalnızca bitmiş bir yıl kapatılabilir.

Yayımladığı olaylar: availability.leave_carried_over

Neye yazar: leave_allowance (upsert) — Writes next year’s carried-over days

curl -X POST https://app.getera.io/api/v1/leave_allowances/actions/carry_over \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"year":2000}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_carried_over"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leaveAllowances.carryOver({
  year: 2000
})
era leave_allowances carry_over \
  --year 2000
tools/call
{
  "name": "era__availability__carry_over",
  "arguments": {
    "year": 2000
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 year_not_over · 429 çok sık istek

availability.clear_override

Özel günü kaldır — Bir tarihi haftalık saatlere geri döndürür.

Gereken izin availability:manage · siler ya da geri alınamaz

POSThttps://app.getera.io/api/v1/working_hour_overrides/{id}/actions/clear_override
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.clear_override

Girdi

AlanTürZorunluAçıklama
overrideIduuidevetDoldurulduğu yer: adresteki {id} · Özel gün · kimliği: working_hour_override

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundÖzel gün hâlâ bulunmalı.

Yayımladığı olaylar: availability.override_cleared

Neye yazar: working_hour_override (delete) — Removes that date’s exception

curl -X POST https://app.getera.io/api/v1/working_hour_overrides/WORKING_HOUR_OVERRIDE_ID/actions/clear_override \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.override_cleared"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workingHourOverrides.clearOverride("WORKING_HOUR_OVERRIDE_ID")
era working_hour_overrides clear_override WORKING_HOUR_OVERRIDE_ID
tools/call
{
  "name": "era__availability__clear_override",
  "arguments": {
    "overrideId": "WORKING_HOUR_OVERRIDE_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability: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

availability.clear_person_hours

Çalışma alanının saatlerini kullan — Bir kişinin kendine ait çalışma haftasını kaldırır; böylece çalışma alanının açılış saatleri ona yeniden uygulanır.

Gereken izin availability:manage · siler ya da geri alınamaz

POSThttps://app.getera.io/api/v1/working_hours/actions/clear_person_hours
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.clear_person_hours

Girdi

AlanTürZorunluAçıklama
userIduuidevetEkip üyesi

Yayımladığı olaylar: availability.hours_changed

Neye yazar: working_hour (delete) — Removes that person’s weekday rows

curl -X POST https://app.getera.io/api/v1/working_hours/actions/clear_person_hours \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"userId":"USER_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.hours_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workingHours.clearPersonHours({
  userId: "USER_ID"
})
era working_hours clear_person_hours \
  --user-id "USER_ID"
tools/call
{
  "name": "era__availability__clear_person_hours",
  "arguments": {
    "userId": "USER_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek

availability.reject_leave

İzni reddet — Talebi, talep edene bildirilen bir nedenle reddeder.

Gereken izin availability:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_periods/{id}/actions/reject_leave
API anahtarı ya da OAuth token · availability:write
  • Asıl adres: POST /api/v1/actions/availability.reject_leave

Girdi

AlanTürZorunluAçıklama
leaveIduuidevetDoldurulduğu yer: adresteki {id} · Talep · kimliği: leave_period
notestringNeden · en çok 1000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundTalep bulunmalı.
not_pendingYalnızca hâlâ bekleyen bir talep karara bağlanabilir.
cannot_approve_ownYapılandırma yetkiniz yoksa kendi izninize başkası karar verir.
not_an_approverYöneticisi ya da onay yetkisi olan biri karar verir.

Yayımladığı olaylar: availability.leave_rejected

Neye yazar: leave_period (update) — Marks it declined

curl -X POST https://app.getera.io/api/v1/leave_periods/LEAVE_PERIOD_ID/actions/reject_leave \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"note":"Reason"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_rejected"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leavePeriods.rejectLeave("LEAVE_PERIOD_ID", {
  note: "Reason"
})
era leave_periods reject_leave LEAVE_PERIOD_ID \
  --note "Reason"
tools/call
{
  "name": "era__availability__reject_leave",
  "arguments": {
    "leaveId": "LEAVE_PERIOD_ID",
    "note": "Reason"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_pending, cannot_approve_own, not_an_approver · 429 çok sık istek

availability.request_leave

İzin talep et — İzni kaydeder, iş günlerini bakiyeden düşer ve onaylanana kadar hiçbir şeyi engellemez.

Gereken izin availability:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_periods/actions/request_leave
API anahtarı ya da OAuth token · availability:write
  • Asıl adres: POST /api/v1/actions/availability.request_leave

Girdi

AlanTürZorunluAçıklama
userIduuidEkip üyesi · Tüm organizasyonu kapatan bir izin için boş bırakın.
titlestringevetBaşlık · en çok 120
leaveTypestringTür · en çok 40
startDatedateevetNereden
endDatedateevetBitiş
isAllDaybooleanTüm gün
startTimestringBaşlangıç (saat) · en çok 8
endTimestringBitiş (saat) · en çok 8
descriptionstringNot · en çok 2000

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_rangeBitiş başlangıçtan önce olmamalı ve bir talep en fazla bir yılı kapsar.
times_requiredYarım günlük izin iki saati de gerektirir.
not_your_leaveBaşkasının ya da tüm organizasyonun izni Yapılandırma yetkisi gerektirir.
unknown_leave_typeTür, bu çalışma alanının kullandığı türlerden biri olmalı.
overlaps_existingZaten talep edilmiş veya onaylanmış bir izinle çakışmamalı.
insufficient_balanceSayılan bir tür, kuralı izin vermedikçe sıfırın altına inemez.

Yayımladığı olaylar: availability.leave_requested

Neye yazar: leave_period (insert) — Records the request

curl -X POST https://app.getera.io/api/v1/leave_periods/actions/request_leave \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"title":"Title","startDate":"2026-11-02","endDate":"2026-11-02"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_requested"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leavePeriods.requestLeave({
  title: "Title",
  startDate: "2026-11-02",
  endDate: "2026-11-02"
})
era leave_periods request_leave \
  --title "Title" \
  --start-date "2026-11-02" \
  --end-date "2026-11-02"
tools/call
{
  "name": "era__availability__request_leave",
  "arguments": {
    "title": "Title",
    "startDate": "2026-11-02",
    "endDate": "2026-11-02"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_range, times_required, not_your_leave, unknown_leave_type, overlaps_existing, insufficient_balance · 429 çok sık istek

availability.save_leave_type

İzin türünü kaydet — Bir izin türünü ve kuralını ekler veya değiştirir: hak ediş, devir ve üst sınır.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/leave_types/actions/save_leave_type
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.save_leave_type

Girdi

AlanTürZorunluAçıklama
codestringevetKod · en çok 40
labelstringevetAd · en çok 80
colourstringRenk · en çok 20
isPaidbooleanÖdendi
accrualPeriodstring (enum)Hak ediş sıklığı · İzin verilen değerler: none, year, month
accrualDaysnumberDönem başına gün · en çok 366
carryOverMaxnumberEn fazla devredilecek · en çok 366
maxBalancenumberBakiye üst sınırı · en çok 999
allowNegativebooleanSıfırın altına inebilir
isActivebooleanKullanımda

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
invalid_codeKod küçük harf, rakam ve alt çizgiden oluşur.
invalid_policySayılan bir tür hak ediş biriktirir ve devir üst sınırın altında kalır.

Yayımladığı olaylar: availability.leave_type_saved

Neye yazar: leave_type (upsert) — Writes the kind and its policy

curl -X POST https://app.getera.io/api/v1/leave_types/actions/save_leave_type \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"code":"Code","label":"Name"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.leave_type_saved"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.leaveTypes.saveLeaveType({
  code: "Code",
  label: "Name"
})
era leave_types save_leave_type \
  --code "Code" \
  --label "Name"
tools/call
{
  "name": "era__availability__save_leave_type",
  "arguments": {
    "code": "Code",
    "label": "Name"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_code, invalid_policy · 429 çok sık istek

availability.set_hours

Çalışma saatlerini belirle — Bir hafta gününü değiştirir; saatlerin dışında kalacak randevuları belirtir.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/working_hours/actions/set_hours
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.set_hours

Girdi

AlanTürZorunluAçıklama
userIduuidEkip üyesi · Tüm çalışma alanının saatlerini ayarlamak için boş bırakın.
weekdaynumberevetHafta günü · en az 0 · en çok 6
isWorkingDaybooleanO günü aç
startsAtstringAçılış · en çok 8
endsAtstringKapanış · en çok 8
blocksobject / arrayAçık olduğu aralıklar · Bir günde birkaç aralık, ör. [{"startsAt":"09:00","endsAt":"12:30"},{"startsAt":"13:30","endsAt":"18:00"}]. Açılış/Kapanış alanlarının yerine geçer.
forcebooleanYine de değiştir

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
hours_requiredAçık bir gün iki saati de gerektirir.
invalid_rangeKapanış açılıştan sonra olmalı.
overlapping_blocksAynı gündeki açık saat aralıkları çakışamaz.
orphans_appointmentsYeni saatlerin dışında kalan randevular belirtilir.

Yayımladığı olaylar: availability.hours_changed

Neye yazar: working_hour (upsert) — Replaces that weekday’s hours

curl -X POST https://app.getera.io/api/v1/working_hours/actions/set_hours \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"weekday":1}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.hours_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workingHours.setHours({
  weekday: 1
})
era working_hours set_hours \
  --weekday 1
tools/call
{
  "name": "era__availability__set_hours",
  "arguments": {
    "weekday": 1
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 hours_required, invalid_range, overlapping_blocks, orphans_appointments · 429 çok sık istek

availability.set_item_days

Hangi günler sunulduğunu belirle — Bir katalog kaydını belirli hafta günleriyle sınırlar. Boş, her gün demektir.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/service_available_days/actions/set_item_days
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.set_item_days

Girdi

AlanTürZorunluAçıklama
itemIduuidevetKalem · kimliği: item
daysstringHafta günleri · Virgülle ayrılmış, 0 = Pazar. Her gün için boş bırakın. · en çok 32

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKatalog kaydı bulunmalı.
invalid_weekdayHafta günü 0 ile 6 arasında olmalı.

Yayımladığı olaylar: availability.item_days_changed

Neye yazar: service_available_day (upsert) — Replaces the weekday restriction

curl -X POST https://app.getera.io/api/v1/service_available_days/actions/set_item_days \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.item_days_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.serviceAvailableDays.setItemDays({
  itemId: "ITEM_ID"
})
era service_available_days set_item_days \
  --item-id "ITEM_ID"
tools/call
{
  "name": "era__availability__set_item_days",
  "arguments": {
    "itemId": "ITEM_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, invalid_weekday · 429 çok sık istek

availability.set_item_providers

Kimin yapabileceğini belirle — Bir katalog kaydını verebilecek ekip üyelerini değiştirir.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/service_providers/actions/set_item_providers
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.set_item_providers

Girdi

AlanTürZorunluAçıklama
itemIduuidevetKalem · kimliği: item
userIdsstringEkip üyeleri · Virgülle ayrılmış kullanıcı kimlikleri. Kimseyi atamamak için boş bırakın. · en çok 2000
forcebooleanYine de ata

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
not_foundKatalog kaydı bulunmalı.
not_a_memberAtanan herkes burada aktif bir üye olmalı.
clashes_with_appointmentsHâlâ çıkarılan kişiyi belirten randevular listelenir.

Yayımladığı olaylar: availability.item_providers_changed

Neye yazar: service_provider (upsert) — Replaces the assignment list

curl -X POST https://app.getera.io/api/v1/service_providers/actions/set_item_providers \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"itemId":"ITEM_ID"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.item_providers_changed"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.serviceProviders.setItemProviders({
  itemId: "ITEM_ID"
})
era service_providers set_item_providers \
  --item-id "ITEM_ID"
tools/call
{
  "name": "era__availability__set_item_providers",
  "arguments": {
    "itemId": "ITEM_ID"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_a_member, clashes_with_appointments · 429 çok sık istek

availability.set_override

Özel gün belirle — Tek bir tarih için haftalık saatleri geçersiz kılar — bir tatil ya da tek seferlik bir açılış.

Gereken izin availability:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/working_hour_overrides/actions/set_override
API anahtarı ya da OAuth token · availability:manage
  • Asıl adres: POST /api/v1/actions/availability.set_override

Girdi

AlanTürZorunluAçıklama
overrideDatedateevetTarih
titlestringevetNeden · en çok 120
userIduuidEkip üyesi · Tüm çalışma alanı için boş bırakın.
isWorkingDaybooleanO günü aç
startsAtstringAçılış · en çok 8
endsAtstringKapanış · en çok 8
forcebooleanYine de ayarla

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
hours_requiredAçık bir gün iki saati de gerektirir.
invalid_rangeKapanış açılıştan sonra olmalı.
clashes_with_appointmentsO gün zaten alınmış randevular belirtilir.

Yayımladığı olaylar: availability.override_set

Neye yazar: working_hour_override (upsert) — Replaces that date’s exception

curl -X POST https://app.getera.io/api/v1/working_hour_overrides/actions/set_override \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"overrideDate":"2026-11-02","title":"Why"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "availability.override_set"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workingHourOverrides.setOverride({
  overrideDate: "2026-11-02",
  title: "Why"
})
era working_hour_overrides set_override \
  --override-date "2026-11-02" \
  --title "Why"
tools/call
{
  "name": "era__availability__set_override",
  "arguments": {
    "overrideDate": "2026-11-02",
    "title": "Why"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde availability:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 hours_required, invalid_range, clashes_with_appointments · 429 çok sık istek

Veri modelleri

LeaveAllowance

Tablo leave_allowance · Kaynak leave_allowances

  • GET /api/v1/leave_allowances
  • GET /api/v1/leave_allowances/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidapp_user
leave_type_codestring · text
yearinteger · int4
carried_overstring (decimal) · numeric
adjustmentstring (decimal) · numeric
notestring · textevet
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, user_id, leave_type_code, year

Denetimler:

  • CHECK ((carried_over >= (0)::numeric))
  • CHECK (((year >= 2000) AND (year <= 2100)))

LeavePeriod

Tablo leave_period · Kaynak leave_periods

  • GET /api/v1/leave_periods
  • GET /api/v1/leave_periods/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidevetapp_user
leave_typestring · text
titlestring · text
descriptionstring · textevet
start_datestring (date) · date
end_datestring (date) · date
is_all_dayboolean · bool
start_timestring (time) · timeevet
end_timestring (time) · timeevet
statusstring · textrequested, approved, rejected, cancelled
created_atstring (date-time) · timestamptz
daysstring (decimal) · numericevet
requested_by_user_idstring (uuid) · uuidevetapp_user
decided_by_user_idstring (uuid) · uuidevetapp_user
decided_atstring (date-time) · timestamptzevet
decision_notestring · textevet

Birincil anahtar: id

Denetimler:

  • CHECK ((end_date >= start_date))
  • CHECK ((is_all_day OR ((start_time IS NOT NULL) AND (end_time IS NOT NULL) AND (end_time > start_time))))

LeaveType

Tablo leave_type · Kaynak leave_types

  • GET /api/v1/leave_types
  • GET /api/v1/leave_types/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
codestring · text
labelstring · text
colourstring · text
is_paidboolean · bool
accrual_periodstring · textnone, year, month
accrual_daysstring (decimal) · numeric
carry_over_maxstring (decimal) · numeric
max_balancestring (decimal) · numericevet
allow_negativeboolean · bool
is_activeboolean · bool
sort_orderinteger · int4
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, code

Denetimler:

  • CHECK ((accrual_days >= (0)::numeric))
  • CHECK ((carry_over_max >= (0)::numeric))
  • CHECK ((code ~ '^[a-z][a-z0-9_]{0,39}$'::text))
  • CHECK ((length(TRIM(BOTH FROM label)) > 0))
  • CHECK (((max_balance IS NULL) OR (max_balance > (0)::numeric)))

ServiceAvailableDay

Tablo service_available_day · Kaynak service_available_days

  • GET /api/v1/service_available_days
  • GET /api/v1/service_available_days/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
item_idstring (uuid) · uuiditem
day_of_weekinteger · int2

Birincil anahtar: id

Tekil: item_id, day_of_week

Denetimler:

  • CHECK (((day_of_week >= 0) AND (day_of_week <= 6)))

ServiceProvider

Tablo service_provider · Kaynak service_providers

  • GET /api/v1/service_providers
  • GET /api/v1/service_providers/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
item_idstring (uuid) · uuiditem
user_idstring (uuid) · uuidapp_user

Birincil anahtar: id

Tekil: item_id, user_id

WorkingHourOverride

Tablo working_hour_override · Kaynak working_hour_overrides

  • GET /api/v1/working_hour_overrides
  • GET /api/v1/working_hour_overrides/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidevetapp_user
override_datestring (date) · date
titlestring · text
is_working_dayboolean · bool
starts_atstring (time) · timeevet
ends_atstring (time) · timeevet
created_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK (((is_working_day AND (starts_at IS NOT NULL) AND (ends_at IS NOT NULL) AND (ends_at > starts_at)) OR (NOT is_working_day)))
  • CHECK ((override_date IS NOT NULL))

WorkingHour

Tablo working_hour · Kaynak working_hours

  • GET /api/v1/working_hours
  • GET /api/v1/working_hours/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidevetapp_user
weekdayinteger · int2
is_working_dayboolean · bool
starts_atstring (time) · timeevet
ends_atstring (time) · timeevet

Birincil anahtar: id

Tekil: workspace_id, user_id, weekday, starts_at

Denetimler:

  • CHECK (((is_working_day AND (starts_at IS NOT NULL) AND (ends_at IS NOT NULL) AND (ends_at > starts_at)) OR (NOT is_working_day)))
  • CHECK (((weekday >= 0) AND (weekday <= 6)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
availability.allowance_adjustedBirinin izin bakiyesi elle düzeltildi.id, userId, leaveType, year, adjustment, recipientUserId
availability.hours_changedÇalışma saatleri değiştirildi.weekday
availability.item_days_changedBir katalog kaydının verildiği hafta günleri değişti.id, days
availability.item_providers_changedBir katalog kaydını kimlerin verebileceği değişti.id, userIds
availability.leave_approvedİzin onaylandı ve artık randevuları engelliyor.id, userId, clashes, recipientUserId
availability.leave_cancelledİzin geri çekildi.id, userId, recipientUserId
availability.leave_carried_overBir izin yılı kapatıldı ve kullanılmayan günler devredildi.year, balances, moved
availability.leave_rejectedBir izin isteği reddedildi.id, userId, note, recipientUserId
availability.leave_requestedBiri izin istedi. Yöneticisine yönlendirilir.id, userId, leaveType, startDate, endDate, days, recipientUserId
availability.leave_type_savedBir izin türü ya da politikası değişti.id, code
availability.override_clearedBir tarih haftalık saatlere döndü.id, overrideDate
availability.override_setBir tarih için özel çalışma saatleri tanımlandı.id, overrideDate, isWorkingDay
Bu sayfa yardımcı oldu mu?