Entegrasyon API'si
Çalışan listesini, günlük puantajı, aylık ücret özetini, ham okutmaları ve izinleri bordro, ERP veya İK sisteminize Excel'siz aktarın. Rakamlar Burdaa panelindeki raporla ve ücret hesabıyla birebir aynı hesaptan gelir.
Hızlı başlangıç
API'yi şirketin bilgi işlem ekibi ya da entegrasyonu kuran danışman kullanır. Burdaa tarafında kurulum gerekmez:
- Burdaa panelinde Şirket Ayarları → Entegrasyonlar → API anahtarları bölümünden anahtar oluşturun. Anahtar yalnızca bir kez gösterilir.
- Her isteğe anahtarı başlık olarak ekleyin.
- Cevaplar JSON; kayıtlar
dataalanında, sayfa sayfa gelir (bkz. sayfalama).
curl "https://app.burdaa.co/api/v1/timesheet?from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer brd_..."Kimlik doğrulama
Her istekte Authorization: Bearer <anahtar> başlığı gönderilir. Anahtarlar brd_ ile başlar ve şirkete özeldir: yalnızca o şirketin verisini döndürür.
- Burdaa anahtarın kendisini saklamaz, yalnızca özetini (SHA-256) tutar.
- Ücret verisi ayrı izindir: anahtar oluşturulurken "Ücret özetini de okuyabilsin" işaretlenmezse
/pay-summary403 döner. - Anahtar panelden iptal edildiği anda çalışmaz; son kullanım zamanı panelde görünür.
Hız sınırı
Anahtar başına dakikada 60 istek. Aşılırsa 429 ve Retry-After: 60 döner; bekleyip tekrar deneyin. Günlük ya da aylık toplu çekim için bu sınır fazlasıyla yeterlidir.
Sayfalama
Tüm liste uçları aynı biçimde döner. Sayfa başına varsayılan 1000 kayıt gelir; limit ile 5000'e kadar artırabilirsiniz. has_more true ise aynı isteği offset=next_offset ile tekrarlayın. Sıralama sabittir, sayfalar arasında kayıt kaymaz.
{
"data": [ … ],
"has_more": true,
"next_offset": 1000
}import requests
def fetch_all(path, **params):
rows, offset = [], 0
while True:
r = requests.get(f"https://app.burdaa.co/api/v1{path}", params={**params, "offset": offset},
headers={"Authorization": "Bearer brd_..."})
r.raise_for_status()
page = r.json()
rows += page["data"]
if not page["has_more"]:
return rows
offset = page["next_offset"]
timesheet = fetch_all("/timesheet", **{"from": "2026-09-01", "to": "2026-09-30"})Çalışanlar
Şirketin tüm çalışanları. İşten ayrılanlar da gelir; is_active ile ayırın. Kendi sisteminizdeki kayıtla employee_code (sicil no) üzerinden eşleştirin.
| Alan | Tür | Açıklama |
|---|---|---|
| employee_id | uuid | Burdaa çalışan kimliği |
| full_name | string | Ad soyad |
| employee_code | string | null | Sicil no |
| department | string | null | Departman |
| location_name | string | null | Bağlı olduğu lokasyon / mağaza |
| store_code | string | null | Mağaza kodu |
| pay_type | string | salaried (aylık) | hourly (saatlik) |
| hire_date | date | null | İşe giriş tarihi |
| is_active | boolean | Çalışıyor mu |
| deactivated_at | datetime | null | İşten ayrılış zamanı |
Günlük puantaj
Kişi × gün puantajı: giriş-çıkış, çalışılan süre, geç kalma, mesai. Süreler dakika cinsinden.
- Yalnızca kapanmış günler:
tobugünden önce olmalı. Gün içindeki anlık durum için webhook kullanın. - İstek başına en fazla 63 gün.
| Alan | Tür | Açıklama |
|---|---|---|
| employee_id | uuid | |
| employee_code | string | null | Sicil no |
| full_name | string | |
| work_date | date | Çalışma günü (şirketin saat diliminde) |
| day_type | string | Aşağıdaki gün tiplerinden biri |
| location_name / store_code | string | null | Okutulan lokasyon |
| shift_start / shift_end | time | null | Planlanan vardiya (yerel saat) |
| check_in / check_out | datetime | null | İlk giriş, son çıkış (UTC) |
| worked_minutes | integer | Çalışılan süre |
| late_minutes | integer | Geç kalma |
| early_leave_minutes | integer | Erken çıkış |
| overtime_minutes | integer | Fazla mesai |
| shortfall_minutes | integer | Vardiyaya göre eksik çalışma |
| day_type | Anlamı |
|---|---|
| worked | Çalıştı |
| absent | Vardiyası vardı, gelmedi |
| missing_punch | Giriş ya da çıkıştan biri eksik |
| off_day / off_day_worked | Vardiyasız gün / vardiyasız günde çalıştı |
| holiday / holiday_worked | Resmi tatil / resmi tatilde çalıştı |
| leave_<tür> | İzinli; tür /leaves'teki type değeri (ör. leave_annual, leave_sick) |
{
"data": [
{
"employee_id": "3f6c…",
"employee_code": "1042",
"full_name": "Ayşe Yılmaz",
"work_date": "2026-09-01",
"day_type": "worked",
"location_name": "Kadıköy",
"store_code": "M012",
"shift_start": "09:00:00",
"shift_end": "18:00:00",
"check_in": "2026-09-01T06:12:00+00:00",
"check_out": "2026-09-01T15:31:00+00:00",
"worked_minutes": 559,
"late_minutes": 12,
"early_leave_minutes": 0,
"overtime_minutes": 0,
"shortfall_minutes": 0
}
]
}Aylık ücret özeti
Burdaa'nın ücret hesabının özeti: maaş, mesai ücretleri, kesintiler, avans ve net tutar. Yalnızca ücret izni verilmiş anahtarla. Vergi ve SGK içermez; bordro programınız için girdidir.
| Alan | Tür | Açıklama |
|---|---|---|
| employee_id / employee_code / full_name | ||
| is_active | boolean | |
| base_salary | number | Dönem maaşı |
| worked_minutes | integer | Ay içinde çalışılan süre |
| absent_days / holiday_days | integer | Gelmediği gün / resmi tatil günü |
| weekday_overtime_pay | number | Hafta içi mesai ücreti |
| saturday_overtime_pay / sunday_overtime_pay | number | Cumartesi / pazar mesai ücreti |
| absent_deduction / long_absence_deduction | number | Devamsızlık kesintileri |
| deactivation_deduction | number | Ay içinde ayrılanlar için kesinti |
| shortfall_deduction | number | Eksik çalışma kesintisi |
| total_advance | number | Verilen avanslar |
| net_amount | number | Net tutar |
Ham okutmalar
Giriş-çıkış okutmalarının kendisi, zaman sırasıyla. Puantajın aksine bugün de alınabilir. Alanlar webhook bildirimindeki data ile aynıdır; webhook'ta kaçırılan bir olayı bu uçla telafi edebilirsiniz.
- Gün sınırları şirketin saat dilimine göredir. İstek başına en fazla 63 gün.
- Silinen okutmalar listede yer almaz; düzeltilen okutma son haliyle gelir.
| Alan | Tür | Açıklama |
|---|---|---|
| punch_id | uuid | Okutma kimliği |
| employee_id / employee_code / full_name | ||
| type | string | check_in | check_out |
| method | string | qr_dynamic, qr_static (QR) ya da manual (yönetici girişi) |
| occurred_at | datetime | Okutma zamanı (UTC) |
| location_id / location_name / store_code | Okutulan lokasyon |
İzinler
Tarih aralığıyla kesişen izin kayıtları. Puantajdaki day_type izni yalnızca geçmiş günlerde gösterir; bu uç nokta ileri tarihli ve onay bekleyen izinleri de verir. Değişiklikleri anında almak için izin webhook olaylarını kullanın.
- İstek başına en fazla 366 gün; gelecek tarihler serbest.
- Çalışan ve yönetici notları ile ekler (ör. rapor) gizlilik nedeniyle verilmez.
| Alan | Tür | Açıklama |
|---|---|---|
| leave_id | uuid | İzin kimliği |
| employee_id / employee_code / full_name | ||
| type | string | annual (yıllık), sick (hastalık raporu), unpaid (ücretsiz), marriage (evlilik), bereavement (ölüm), paternity (babalık), maternity (doğum), work_accident (iş kazası raporu), other (diğer / mazeret) |
| status | string | pending (onay bekliyor), approved (onaylandı), rejected (reddedildi) |
| start_date / end_date | date | İlk ve son izin günü (dahil) |
| days | integer | Takvim günü sayısı |
| deduct_from_pay | boolean | Ücretten düşülecek mi |
| created_at | datetime | Talep / kayıt zamanı |
Hata kodları
Hatalar { "error": { "code": "…", "message": "…" } } biçiminde döner. code sabittir, kodunuzda onu kontrol edin.
| Kod | Anlamı |
|---|---|
| 401 INVALID_API_KEY | Anahtar yok, yanlış ya da iptal edilmiş |
| 403 API_KEY_FORBIDDEN | Anahtarın ücret verisi izni yok |
| 400 INVALID_RANGE | from / to eksik ya da hatalı (YYYY-MM-DD, from ≤ to) |
| 400 RANGE_NOT_CLOSED | to bugün ya da ileri bir tarih |
| 400 RANGE_TOO_LONG | Aralık çok uzun: puantaj ve okutmalarda 63, izinlerde 366 gün |
| 400 INVALID_PERIOD | year / month hatalı ya da gelecek ay |
| 400 INVALID_PAGINATION | limit 1-5000, offset 0 veya üstü olmalı |
| 429 RATE_LIMITED | Dakikada 60 istek aşıldı; Retry-After kadar bekleyin |
Notlar
- Zamanlar ISO 8601, UTC.
work_dateve vardiya saatleri şirketin yerel saatindedir (Türkiye için Europe/Istanbul). - Sürümleme: adresler
/v1altındadır. Alan eklemek geriye dönük uyumlu kabul edilir; kırıcı bir değişiklik olursa yeni sürüm açılır, eskisi çalışmaya devam eder. - Logo, Mikro gibi masaüstü bordro programları için dosya aktarımı ya da özel bir entegrasyon ihtiyacınız varsa bize yazın.
