အဝေးမှ စာရင်းကိုင် API
နောက်ဆုံးအပ်ဒိတ်: ၂၀၂၆ မေ ၁၀
ကိုယ်ပိုင် API token ကိုအသုံးပြု၍ cURL, iOS Shortcuts သို့မဟုတ် အလိုအလျောက်စကရစ်များမှ စာရင်းသွင်းမှုများ ရေးသွင်းပါ။ token သည် ရေးသားရန်သာ ဖြစ်သည် — ၎င်းသည် ငွေသွင်းငွေထုတ်များ ထည့်သွင်းနိုင်ပြီး အမျိုးအစား / tag စာရင်းများ ဖတ်နိုင်သော်လည်း မည်သည့် ငွေသွင်းငွေထုတ် ဒေတာကိုမျှ မဖတ်နိုင် မဖျက်နိုင်ပါ။
1. token ရယူပါ
admin အဖြစ် ဝင်ရောက်ပြီး ဆက်တင်များ → 🔑 အဝေးမှ စာရင်းကိုင် API ကိုဖွင့်ကာ "token ထုတ်ရန်" ကိုနှိပ်ပါ။
စာသားအတိုင်း token ကို တစ်ကြိမ်တည်းသာ ပြသသည် — ချက်ချင်းကူးယူပါ။ ဆာဗာသည် ၎င်း၏ SHA-256 hash ကိုသာ သိမ်းဆည်းသဖြင့် ပျောက်ဆုံးသွားသော token ကို လှည့်ပတ်ခြင်း (အဟောင်းကို ပျက်ပြယ်စေသည်) ဖြင့်သာ အစားထိုးနိုင်သည်။
token ပုံစံ: bb_<userId>_<secret>။ တောင်းဆိုမှုတိုင်းတွင် Authorization: Bearer <token> အဖြစ် ပို့ပါ။
2. POST /api/ingest — ငွေသွင်းငွေထုတ်တစ်ခု ထည့်ရန်
တောင်းဆိုမှု body သည် ဤအကွက်များပါသော JSON object ဖြစ်သည်:
title(string, မဖြစ်မနေ) — ငွေသွင်းငွေထုတ်အမည်amount(number, မဖြစ်မနေ) — အပေါင်းဖြစ်ရမည်type(string, ရွေးချယ်နိုင်, မူရင်းexpense) —expense/income/prepaid_expense/pending_incomeထဲမှ တစ်ခုcategory(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 ၏ အမျိုးအစားအမည်များကို dashboard dropdown အစီအစဉ်အတိုင်း ပြန်ပေးသည်။ တုံ့ပြန်မှုတွင် အမည်များသာ ပါဝင်သည် — 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 — မကြာသေးမီက သုံးခဲ့သော tag များ
လတ်တလော အပ်ဒိတ်လုပ်ထားသော tag ရှေ့ဆက်များ (ခေါင်းစဉ်များတွင် ထည့်သွင်းထားသော #XXX အမှတ်အသားများ) ကို ပြန်ပေးသည်။ မူရင်း ၂၀; ကျော်လွှားရန် ?limit= ပို့ပါ (အများဆုံး ၁၀၀)။
tag_prefixes ဇယား မရှိသေးပါက အမှားအစား ဗလာ array ကို ပြန်ပေးသည်။
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. အမှားကုဒ်များ
အမှားအားလုံးသည် JSON ဖြစ်သည်: { "error": "message" }။
401— ခွင့်ပြုချက် မရှိ၊ token ပုံစံ မှားယွင်း၊ ရုပ်သိမ်းပြီး သို့မဟုတ် မကိုက်ညီ402— subscription သက်တမ်းကုန်; ရေးသားရန် သက်တမ်းတိုးရန် လိုအပ်405— method မပံ့ပိုး (ဥပမာ/api/ingestတွင် GET)501— ဆာဗာတွင်SUPABASE_SERVICE_ROLE_KEYမရှိ500— အခြား အတွင်းပိုင်း အမှား
6. လုံခြုံရေးနှင့် ကန့်သတ်ချက်များ
ဒီဇိုင်းအရ token သည် ၎င်း၏ ကိုယ်ပိုင်အဖွဲ့အစည်းသို့သာ ရေးသားနိုင်သည် — အခြား orgs အဖြစ် အယောင်ဆောင်ခြင်း သို့မဟုတ် ရှိပြီးသား ဒေတာ ဖတ်ခြင်း မပြုနိုင်ပါ:
user_idသည် အမြဲ token ပိုင်ရှင်; အတုလုပ်၍ မရorg_idသည် အမြဲ ပိုင်ရှင်၏ org; orgs အကြား ရေးသားခြင်း မဖြစ်နိုင်- token များကို admin အခန်းကဏ္ဍသို့သာ ထုတ်ပေး (manager / staff သည် 403 ရသည်)
- တုံ့ပြန်မှုများသည် အခြားအတန်းများကို ဘယ်တော့မှ မပေါက်ကြား —
{ id, created_at }သာ ပြန်ပေးသည် - ရုပ်သိမ်းမှုသည် ချက်ချင်း; ဆက်တင်များမှ အချိန်မရွေး လှည့်ပတ်ပါ
7. iOS Shortcut ဥပမာ
"Get Contents of URL" လုပ်ဆောင်ချက်တစ်ခု ထည့်ပါ၊ URL https://billbook.me/api/ingest၊ method POST၊ header များ Authorization: Bearer bb_... နှင့် Content-Type: application/json၊ နှင့် တောင်းဆိုမှု body ကို JSON အဖြစ်: {"title":"ကော်ဖီ","amount":120,"type":"expense"} ဟု သတ်မှတ်ပါ။ title နှင့် amount ကို Shortcut input သို့မဟုတ် "အကြိမ်တိုင်းမေးရန်" variable များနှင့် ချိတ်ဆက်ပါ။
ဤစာရွက်စာတမ်းသည် အမြန်ကိုးကားချက်ဖြစ်သည်; အမှန်တကယ် အပြုအမူအတွက် backend ကုဒ်သည် အမှန်တရား၏ အရင်းအမြစ်ဖြစ်သည်။