مرجع واجهة برمجة التطبيقات
مرجع تهيئة الوكلاء وواجهة SQL للوصول البرمجي إلى بياناتك المالية.
نظرة عامة
يوفّر Expense Budget Tracker واجهة برمجة تطبيقات عامة واحدة للوصول البرمجي عبر:
https://api.expense-budget-tracker.com/v1/
ويمكن استخدام هذه الواجهة بطريقتين:
- تهيئة مخصّصة للوكلاء تبدأ من
GET /v1/ - استخدام مباشر عبر HTTP باستخدام
ApiKeyطويل الأمد موجود مسبقًا
وتخضع جميع الطلبات لسياسات Postgres نفسها الخاصة بالأمان على مستوى الصفوف (Row Level Security) تمامًا كما في تطبيق الويب.
إذا كان عميلك يدعم MCP، فاستخدم موصّل MCP المستضاف على https://mcp.expense-budget-tracker.com/mcp وصرّح له بالوصول عبر OAuth في المتصفح. توثّق هذه الصفحة مسار Agent API المنفصل وعقد HTTP المباشر اللذين يستخدمان ApiKey طويل الأمد.
الاكتشاف والمصدر ومخطط وقت التشغيل
ابدأ من هنا:
https://api.expense-budget-tracker.com/v1/
توضّح استجابة الاكتشاف للوكلاء كيفية بدء المصادقة وما الطلبات التالية التي ينبغي إرسالها. كما تتضمن روابط إلى README ومصدر التنفيذ. وتوفّر الواجهة:
GET /v1/schemaGET /v1/openapi.jsonوGET /v1/swagger.jsonكنقطتَي فحص للتوافق توضّحان أن OpenAPI غير متاح وتعيدان العميل إلى الاكتشاف والمصدر
استخدم schema عندما تحتاج إلى القائمة الدقيقة للعلاقات والأعمدة التي تتيحها /v1/sql/query و/v1/sql/execute ونقطة التوافق /v1/sql.
التهيئة المخصّصة للوكلاء
إذا أردت أن يتصل Claude Code أو Codex أو OpenClaw أو أي وكيل آخر بنفسه، فابدأ من نقطة الاكتشاف واتبع الإجراءات التي يعيدها الخادم.
مسار المصادقة
GET https://api.expense-budget-tracker.com/v1/- اقرأ الإجراء
send_codeوbootstrapUrlاللذين تُعيدهما الاستجابة - أرسل بريد المستخدم الإلكتروني في طلب
POSTإلىhttps://auth.expense-budget-tracker.com/api/agent/send-code - استلم
otpSessionToken - اطلب من المستخدم الرمز المكوّن من 8 أرقام الذي وصله عبر البريد الإلكتروني
- أرسل
codeوotpSessionTokenوlabelفي طلبPOSTإلىhttps://auth.expense-budget-tracker.com/api/agent/verify-code - استلم
ApiKeyطويل الأمد - احفظ هذا المفتاح خارج سياق المحادثة
GET https://api.expense-budget-tracker.com/v1/meGET https://api.expense-budget-tracker.com/v1/workspaces- اختياريًا:
POST https://api.expense-budget-tracker.com/v1/workspacesلإنشاء مساحة عمل POST https://api.expense-budget-tracker.com/v1/workspaces/{workspaceId}/selectGET https://api.expense-budget-tracker.com/v1/schema- اقرأ البيانات عبر
POST https://api.expense-budget-tracker.com/v1/sql/queryوأرسل عمليات الكتابة الموافق عليها عبرPOST https://api.expense-budget-tracker.com/v1/sql/execute
ترويسة المصادقة
Authorization: ApiKey <key>
التعامل مع مساحة العمل
- يحفظ
POST /v1/workspaces/{workspaceId}/selectمساحة العمل الافتراضية لهذا المفتاح - بعد حفظ مساحة العمل، يمكن استدعاء
/v1/sql/queryو/v1/sql/executeونقطة التوافق/v1/sqlمن دونX-Workspace-Id - يظل
X-Workspace-Id: <workspaceId>مدعومًا إذا أردت تجاوز مساحة العمل المحفوظة لطلب واحد - إذا لم يكن للمفتاح اختيار محفوظ بعد وكان لدى المستخدم مساحة عمل واحدة فقط، فستحفظ الواجهة تلك المساحة تلقائيًا وتستخدمها
للاطلاع على دليل إرشادي خطوة بخطوة للمستخدم، راجع إعداد وكيل الذكاء الاصطناعي.
الاستخدام المباشر عبر HTTP بمفتاح موجود مسبقًا
يمكن للبرامج النصية، ومهام cron، ولوحات المعلومات، والتطبيقات المخصّصة استدعاء الواجهة نفسها مباشرةً إذا كانت تملك مسبقًا ApiKey طويل الأمد.
المصادقة
أرسل المفتاح ضمن ترويسة مصادقة من نوع ApiKey:
curl -X POST https://api.expense-budget-tracker.com/v1/sql/query \
-H "Authorization: ApiKey ebta_your_key_here" \
-H "X-Workspace-Id: workspace-id" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT * FROM ledger_entries ORDER BY ts DESC LIMIT 10"}'
يكون X-Workspace-Id مطلوبًا فقط إذا لم يكن للمفتاح مساحة عمل افتراضية محفوظة مسبقًا، أو إذا أردت تجاوز مساحة العمل المحفوظة لهذا الطلب.
Authorization: ApiKey ebta_your_key_hereX-Workspace-Id: <workspaceId>عند الحاجة
ملخص نقاط النهاية
GET /v1/— مستند الاكتشاف العامGET /v1/openapi.jsonوGET /v1/swagger.json— نقطتا فحص للتوافق واكتشاف المصدر، وليستا مواصفة APIGET /v1/me— معلومات الحساب بعد المصادقةGET /v1/workspaces— قائمة مساحات العمل المتاحة لمالك المفتاحPOST /v1/workspaces— إنشاء مساحة عملPOST /v1/workspaces/{workspaceId}/select— حفظ مساحة العمل الافتراضية لهذا المفتاحGET /v1/schema— فحص العلاقات والأعمدة المتاحة لاستخدامها في SQLPOST /v1/sql/query— تنفيذ عبارةSELECTأوWITH ... SELECTواحدة للقراءة فقطPOST /v1/sql/execute— تنفيذ عبارةINSERTأوUPDATEأوDELETEواحدة موافق عليهاPOST /v1/sql— نقطة توافق للبرامج النصية الذرية متعددة العبارات
سياسة SQL
تفصل نقاط النهاية الأساسية بين القراءة والكتابة عمدًا:
- يقبل
POST /v1/sql/queryعبارةSELECTأوWITH ... SELECTواحدة للقراءة فقط - يقبل
POST /v1/sql/executeعملية تغيير واحدة من نوعINSERTأوUPDATEأوDELETE، بما في ذلك صيغWITHالمدعومة - تقبل نقطة التوافق
POST /v1/sqlالبرامج النصية المقيّدة متعددة العبارات وتطبّقها ذريًا؛ استخدمها فقط عندما تحتاج إلى هذا السلوك الذري
الأنماط المحظورة أو المرفوضة:
- عبارات متعددة في نقطتَي النهاية الأساسيتين
/v1/sql/queryو/v1/sql/execute - أوامر DDL مثل
CREATEوDROPوALTER - أوامر المعاملات مثل
BEGINوCOMMITوROLLBACK set_config()- تعليقات SQL
- المعرّفات المحاطة بعلامتَي اقتباس
- السلاسل النصية بصيغة
dollar-quoted
ويفرض الخادم أيضًا قيودًا على العلاقات التي يمكن الاستعلام عنها. استخدم /v1/schema لفحص العلاقات والأعمدة المتاحة قبل توليد SQL.
العلاقات المتاحة حاليًا:
ledger_entriesbudget_linesworkspace_settingsaccount_metadataaccounts(للقراءة فقط)fx_rates_raw(للقراءة فقط)fx_rates_daily(للقراءة فقط)
الحدود
- 100 صف مُعاد كحد أقصى لكل طلب
- 100 صف متأثر كحد أقصى لكل عبارة تغيير ولكل طلب
- مهلة إجمالية قدرها 25 ثانية لكل طلب SQL
- 10 طلبات في الثانية، و10,000 طلب في اليوم لكل مفتاح
الأمان
- تُخزَّن مفاتيح API على هيئة تجزئات SHA-256، ولا تُحفَظ القيمة الأصلية للمفتاح مطلقًا
- تفرض سياسات الأمان على مستوى الصفوف (
RLS) عزل مساحات العمل على مستوى قاعدة البيانات - يمكن إبطال المفاتيح من داخل المنتج في أي وقت
- تؤدي إزالة عضو من مساحة العمل إلى إبطال جميع مفاتيحه تلقائيًا