Uzaktan Defter Tutma API
Son güncelleme: 10 Mayıs 2026
cURL, iOS Kısayolları veya otomasyon betiklerinden kişisel API tokenı ile kayıt ekleyin. Token yalnızca yazma kapsamındadır — işlem ekleyebilir ve kategori / etiket listelerini okuyabilir, ancak işlem verisi okuyamaz veya silemez.
1. Token alma
Admin olarak giriş yapın, Ayarlar → 🔑 Uzaktan Defter Tutma API'yi açın ve "Token oluştur"a tıklayın.
Düz metin token yalnızca bir kez gösterilir — hemen kopyalayın. Sunucu yalnızca SHA-256 hash'ini saklar, kaybolan bir token ancak rotasyonla (eskisini geçersiz kılarak) yenilenebilir.
Token biçimi: bb_<userId>_<secret>. Her istekte Authorization: Bearer <token> olarak gönderin.
2. POST /api/ingest — bir işlem ekle
İstek gövdesi şu alanlara sahip bir JSON nesnesidir:
title(string, zorunlu) — işlem adıamount(number, zorunlu) — pozitif olmalıtype(string, isteğe bağlı, varsayılanexpense) —expense/income/prepaid_expense/pending_incomecategory(string, isteğe bağlı) — kategori adınote(string, isteğe bağlı) — serbest notcreated_at(string, isteğe bağlı) — ISO 8601; varsayılan şu an
curl -X POST https://billbook.me/api/ingest \
-H "Authorization: Bearer bb_<userId>_<secret>" \
-H "Content-Type: application/json" \
-d '{"title":"Coffee","amount":120,"type":"expense","category":"Food"}'
# response: 201
{ "id": "...", "created_at": "..." }3. GET /api/ingest/categories — kategori listesi
Admin'in kategori adlarını panodaki açılır menü sırasıyla döndürür. Yanıt yalnızca adları içerir — id, user id veya işlem verisi yoktur.
curl https://billbook.me/api/ingest/categories \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "categories": ["Food", "Rent", "..."] }4. GET /api/ingest/tags — son kullanılan etiketler
En son güncellenen etiket öneklerini (#XXX işaretleri) döndürür. Varsayılan 20; üzerine yazmak için ?limit= kullanın (en fazla 100).
tag_prefixes tablosu henüz yoksa hata yerine boş dizi döner.
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. Hata kodları
Tüm hatalar JSON'dur: { "error": "mesaj" }.
401— yetkilendirme eksik, biçim hatası, iptal edilmiş veya eşleşmiyor402— abonelik sona erdi; yazmak için yenileme gerek405— metot desteklenmiyor (örn./api/ingest'a GET)501— sunucudaSUPABASE_SERVICE_ROLE_KEYyok500— başka bir iç hata
6. Güvenlik ve sınırlar
Tasarım gereği token yalnızca kendi organizasyonuna yazabilir — başka org'ları taklit edemez veya mevcut veriyi okuyamaz:
user_idher zaman token sahibidir; sahtekarlık yapılamazorg_idher zaman sahibin org'udur; org'lar arası yazma imkânsız- Tokenlar yalnızca admin rolüne verilir (manager / staff 403 alır)
- Yanıtlar başka satırı sızdırmaz — yalnızca
{ id, created_at }döner - İptal anında etkilidir; Ayarlardan istediğiniz zaman rotasyon yapın
7. iOS Kısayol örneği
"URL içeriklerini al" eylemi ekleyin, URL https://billbook.me/api/ingest, metot POST, başlıklar Authorization: Bearer bb_... ve Content-Type: application/json, gövde JSON: {"title":"Kahve","amount":120,"type":"expense"}. title ve amount'ı Kısayol girişi veya "Her Seferinde Sor" değişkenlerine bağlayın.
Bu belge hızlı bir başvuru kaynağıdır; gerçek davranış için backend kodu esas alınmalıdır.