Ekip API
Ekip modülünün tüm işlemleri (4) ve veri modelleri (1): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Ekip rehberi ve personel dosyaları — işe alım, oryantasyon ve ayrılış.
Modül kodu employees · 4 işlem · 1 veri modeli · 4 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ı: employees (hepsi), employees:read (yalnız okuma) ya da employees:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
employments | employment | /api/v1/employments |
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 |
|---|---|---|
employees.activate | employees:manage | Oryantasyonu bitir |
employees.end_employment | employees:manage | İşten ayrılışı kaydet |
employees.hire | employees:manage | İşe al |
employees.update | employees:manage | İstihdam bilgilerini düzenle |
employees.activate
Oryantasyonu bitir — Oryantasyondaki bir çalışanı aktif yapar.
Gereken izin employees:manage · veriyi değiştirir
https://app.getera.io/api/v1/employments/actions/activate- Asıl adres:
POST /api/v1/actions/employees.activate
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
userId | uuid | evet | Üye · kimliği: app_user |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_employed | Bir istihdam kaydı olmalı. |
not_onboarding | Yalnızca oryantasyondaki bir çalışan aktifleştirilebilir. |
Yayımladığı olaylar: employees.activated
Neye yazar: employment (update) — Sets the status to active
curl -X POST https://app.getera.io/api/v1/employments/actions/activate \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"userId":"APP_USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"employees.activated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.employments.activate({
userId: "APP_USER_ID"
})era employments activate \
--user-id "APP_USER_ID"{
"name": "era__employees__activate",
"arguments": {
"userId": "APP_USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde employees:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_employed, not_onboarding · 429 çok sık istek
employees.end_employment
İşten ayrılışı kaydet — Son günü ve nedeni kaydeder; devredilebilmesi için hâlâ üzerinde olan her şeyi listeler.
Gereken izin employees: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/employments/actions/end_employment- Asıl adres:
POST /api/v1/actions/employees.end_employment
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
userId | uuid | evet | Üye · kimliği: app_user |
endDate | date | evet | Son gün |
reason | string (enum) | evet | Neden · İzin verilen değerler: resigned, terminated, retired, contract_ended, other |
note | string | Not · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
cannot_end_self | Kendi işten ayrılışınızı kaydedemezsiniz. |
not_employed | Bir istihdam kaydı olmalı. |
already_ended | İstihdamları zaten sona ermiş olmamalı. |
end_before_hire | Son gün işe giriş tarihinden önce olamaz. |
Yayımladığı olaylar: employees.employment_ended
Neye yazar: employment (update) — Closes the personnel file
curl -X POST https://app.getera.io/api/v1/employments/actions/end_employment \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"userId":"APP_USER_ID","endDate":"2026-11-02","reason":"resigned"}'{
"ok": true,
"result": "…",
"events": [
"employees.employment_ended"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.employments.endEmployment({
userId: "APP_USER_ID",
endDate: "2026-11-02",
reason: "resigned"
})era employments end_employment \
--user-id "APP_USER_ID" \
--end-date "2026-11-02" \
--reason "resigned"{
"name": "era__employees__end_employment",
"arguments": {
"userId": "APP_USER_ID",
"endDate": "2026-11-02",
"reason": "resigned"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde employees:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 cannot_end_self, not_employed, already_ended, end_before_hire · 429 çok sık istek
employees.hire
İşe al — Bir çalışma alanı üyesi için özlük dosyası açar — önce oryantasyon ya da doğrudan aktif.
Gereken izin employees:manage · veriyi değiştirir
https://app.getera.io/api/v1/employments/actions/hire- Asıl adres:
POST /api/v1/actions/employees.hire
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
userId | uuid | evet | Üye · kimliği: app_user |
hireDate | date | evet | İşe başlama tarihi |
employmentType | string (enum) | İstihdam türü · İzin verilen değerler: full_time, part_time, contractor, intern, temporary | |
startActive | boolean | Kurulumu atla | |
workPhone | string | İş telefonu · en çok 40 | |
emergencyContactName | string | Acil durumda aranacak kişi · en çok 120 | |
emergencyContactPhone | string | Acil durum telefonu · en çok 40 | |
notes | string | Notlar · en çok 4000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_a_member | Zaten bu çalışma alanının üyesi olmalılar. |
already_employed | Açık bir istihdam kaydı olmamalı. |
Yayımladığı olaylar: employees.hired
Neye yazar: employment (upsert) — Opens (or re-opens) the personnel file
curl -X POST https://app.getera.io/api/v1/employments/actions/hire \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"userId":"APP_USER_ID","hireDate":"2026-11-02"}'{
"ok": true,
"result": "…",
"events": [
"employees.hired"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.employments.hire({
userId: "APP_USER_ID",
hireDate: "2026-11-02"
})era employments hire \
--user-id "APP_USER_ID" \
--hire-date "2026-11-02"{
"name": "era__employees__hire",
"arguments": {
"userId": "APP_USER_ID",
"hireDate": "2026-11-02"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde employees:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_a_member, already_employed · 429 çok sık istek
employees.update
İstihdam bilgilerini düzenle — İşe giriş tarihi, çalışma türü ve iş iletişim bilgisi.
Gereken izin employees:manage · veriyi değiştirir
https://app.getera.io/api/v1/employments/actions/update- Asıl adres:
POST /api/v1/actions/employees.update
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
userId | uuid | evet | Üye · kimliği: app_user |
hireDate | date | İşe başlama tarihi | |
employmentType | string (enum) | İstihdam türü · İzin verilen değerler: full_time, part_time, contractor, intern, temporary | |
workPhone | string | İş telefonu · en çok 40 | |
emergencyContactName | string | Acil durumda aranacak kişi · en çok 120 | |
emergencyContactPhone | string | Acil durum telefonu · en çok 40 | |
notes | string | Notlar · en çok 4000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_employed | Bir istihdam kaydı olmalı. |
Yayımladığı olaylar: employees.updated
Neye yazar: employment (update) — Rewrites the given fields
curl -X POST https://app.getera.io/api/v1/employments/actions/update \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"userId":"APP_USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"employees.updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.employments.update({
userId: "APP_USER_ID"
})era employments update \
--user-id "APP_USER_ID"{
"name": "era__employees__update",
"arguments": {
"userId": "APP_USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde employees:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_employed · 429 çok sık istek
Veri modelleri
Employment
Tablo employment · Kaynak employments
GET /api/v1/employmentsGET /api/v1/employments/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
user_id | string (uuid) · uuid | app_user | ||
status | string · text | onboarding, active, terminated | ||
employment_type | string · text | full_time, part_time, contractor, intern, temporary | ||
hire_date | string (date) · date | |||
activated_at | string (date-time) · timestamptz | evet | ||
end_date | string (date) · date | evet | ||
end_reason | string · text | evet | ||
end_note | string · text | evet | ||
ended_by_user_id | string (uuid) · uuid | evet | app_user | |
work_phone | string · text | evet | ||
emergency_contact_name | string · text | evet | ||
emergency_contact_phone | string · text | evet | ||
notes | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: workspace_id, user_id
Denetimler:
CHECK (((end_date IS NULL) OR (end_date >= hire_date)))CHECK (((status = 'terminated'::text) = ((end_date IS NOT NULL) AND (end_reason IS NOT NULL))))CHECK (((end_reason IS NULL) OR (end_reason = ANY (ARRAY['resigned'::text, 'terminated'::text, 'retired'::text, 'contract_ended'::text, 'other'::text]))))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
employees.activated | Bir çalışanın oryantasyonu tamamlandı. | user_id, recipientUserId |
employees.employment_ended | Birinin istihdamı sona erdi. Üzerindeki kayıtlar devredilecek kişiye yönlendirilir (dosyasındaki Devir sekmesi). | user_id, name, endDate, reason, ownerUserId, recipientUserId |
employees.hired | Biri için personel dosyası açıldı. | user_id, status, hireDate, recipientUserId |
employees.updated | İstihdam bilgileri değiştirildi. | user_id |