← Billbook'a dön

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ılan expense) — expense / income / prepaid_expense / pending_income
  • category (string, isteğe bağlı) — kategori adı
  • note (string, isteğe bağlı) — serbest not
  • created_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şmiyor
  • 402 — abonelik sona erdi; yazmak için yenileme gerek
  • 405 — metot desteklenmiyor (örn. /api/ingest'a GET)
  • 501 — sunucuda SUPABASE_SERVICE_ROLE_KEY yok
  • 500 — 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_id her zaman token sahibidir; sahtekarlık yapılamaz
  • org_id her 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.