API לרישום חשבונאי מרחוק
עודכן לאחרונה: 10 במאי 2026
רשום ערכים מ-cURL, קיצורי דרך ל-iOS או סקריפטי אוטומציה באמצעות טוקן API אישי. הטוקן הוא לכתיבה בלבד — יכול להוסיף עסקאות ולקרוא רשימות קטגוריות / תגיות, אך אינו יכול לקרוא או למחוק נתוני עסקה כלשהם.
1. קבלת טוקן
התחבר כ-admin, פתח הגדרות → 🔑 API לרישום חשבונאי מרחוק ולחץ "צור טוקן".
הטוקן בטקסט גלוי מוצג פעם אחת בלבד — העתק מיד. השרת שומר רק את ה-hash מסוג SHA-256, ולכן ניתן להחליף טוקן אבוד רק באמצעות החלפה (שמבטלת את הישן).
פורמט הטוקן: bb_<userId>_<secret>. שלח בכל בקשה בתור Authorization: Bearer <token>.
2. POST /api/ingest — הוספת עסקה אחת
גוף הבקשה הוא אובייקט JSON עם השדות הבאים:
title(string, חובה) — שם העסקהamount(number, חובה) — חייב להיות חיוביtype(string, אופציונלי, ברירת מחדלexpense) — אחד מ-expense/income/prepaid_expense/pending_incomecategory(string, אופציונלי) — שם הקטגוריהnote(string, אופציונלי) — הערה חופשיתcreated_at(string, אופציונלי) — ISO 8601; ברירת המחדל היא עכשיו
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 — רשימת קטגוריות
מחזיר את שמות הקטגוריות של ה-admin בסדר הרשימה הנפתחת בלוח הבקרה. התגובה מכילה רק שמות — ללא ids, user ids או נתוני עסקה.
curl https://billbook.me/api/ingest/categories \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "categories": ["Food", "Rent", "..."] }4. GET /api/ingest/tags — תגיות שהשתמשו בהן לאחרונה
מחזיר את תחיליות התגיות שעודכנו לאחרונה (סימני #XXX המוטמעים בכותרות). ברירת מחדל 20; השתמש ב-?limit= כדי לעקוף (מקסימום 100).
מחזיר מערך ריק במקום שגיאה אם הטבלה tag_prefixes עדיין לא קיימת.
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. קודי שגיאה
כל השגיאות הן בפורמט JSON: { "error": "הודעה" }.
401— חסר אישור, פורמט טוקן שגוי, בוטל או לא תואם402— תוקף המנוי פג; חידוש נדרש לכתיבה405— שיטה לא נתמכת (למשל GET על/api/ingest)501— לשרת חסרSUPABASE_SERVICE_ROLE_KEY500— שגיאה פנימית אחרת
6. אבטחה ומגבלות
מתכנן, הטוקן יכול לכתוב רק לארגון שלו — לא יכול להתחזות ל-orgs אחרים או לקרוא נתונים קיימים:
user_idתמיד שייך לבעל הטוקן; לא ניתן לזייףorg_idתמיד שייך ל-org של הבעלים; כתיבה בין orgs היא בלתי אפשרית- טוקנים מונפקים רק לתפקיד admin (manager / staff מקבלים 403)
- התגובות לא חושפות שורות אחרות — רק
{ id, created_at }מוחזר - הביטול מיידי; ניתן לסובב בכל עת מההגדרות
7. דוגמת קיצור דרך ל-iOS
הוסף פעולת "Get Contents of URL", URL https://billbook.me/api/ingest, שיטה POST, כותרות Authorization: Bearer bb_... ו-Content-Type: application/json, וגוף JSON: {"title":"קפה","amount":120,"type":"expense"}. חבר את title ו-amount לקלט הקיצור או למשתני "שאל בכל פעם".
מסמך זה הוא הפניה מהירה; קוד ה-backend הוא מקור האמת להתנהגות בפועל.