Edge Functions مرجع HTTP API
سطح HTTP الكامل لخدمة الوظائف، مع الدور الذي يتطلبه كل مسار.
1. الاتفاقيات
عنوان URL الأساسي. عنوان URL لمشروعك، على سبيل المثال https://my-app.aurabase.cloud. يتم تعريف المشروع من قبل المضيف، وبالتالي فإن المسارات أدناه لا تحمل معرف المشروع. يتم قبول النموذج الطويل /v1/functions/{project_id}/… أيضًا.
المصادقة. أرسل مفتاحك في رأس apikey. أضف Authorization: Bearer <JWT> للاتصال كمستخدم مسجل الدخول. يستدعي الاستوديو نفس المسارات باستخدام رمز جلسة وحدة التحكم، مما يمنحه الدور admin.
| الدور | كيف تحصل عليه | قد يتصل |
|---|---|---|
anon | المفتاح العام للمشروع | POST …/invoke |
authenticated | المفتاح العام بالإضافة إلى JWT الخاص بالمستخدم | POST …/invoke |
service_role | المفتاح service_role (الخادم فقط) | كل طريق أدناه |
admin | جلسة وحدة التحكم (الاستوديو) | كل طريق أدناه |
أي مسار آخر يجيب على 403 إلى anon و authenticated:
التنسيق. الأجسام هي JSON وتحتاج إلى Content-Type: application/json. النجاح هو { "data": …, "meta": null }. الفشل هو { "error": { "code", "message", "type", "request_id" } }.
كائن الوظيفة.
| الميدان | اكتب | |
|---|---|---|
id, project_id, name | سلسلة | |
runtime | "deno" أو "wasm" | |
code | سلسلة | مصدر deno; base64 من الملف الثنائي المترجم لـ wasm |
code_hash | سلسلة | SHA-256 من code |
env_vars | كائن | مفتاح القيمة |
permissions | كائن | allow_net (صفيف سلسلة)، memory_mb، timeout_secs |
is_active | منطقية | |
created_at, updated_at | ايزو 8601 |
2. الوظائف
| الطريقة والمسار | الدور | الجسم | الاستجابة |
|---|---|---|---|
GET /v1/functions | Service_role | لا شيء | مجموعة من الكائنات الوظيفية |
POST /v1/functions | Service_role | { name, runtime, code, env_vars? } | كائن الوظيفة |
GET /v1/functions/{name} | Service_role | لا شيء | كائن الوظيفة. {name} هو الاسم أو المعرف عندما لا توجد وظيفة تحمل هذا الاسم. |
PATCH /v1/functions/{name} | Service_role | { code?, env_vars?, is_active?, permissions? } | كائن الوظيفة |
DELETE /v1/functions/{name} | Service_role | لا شيء | { "data": null } |
GET /v1/functions/{name}/code | Service_role | لا شيء | { "data": { "code": "…" } } |
GET /v1/functions/{name}/env | Service_role | لا شيء | { "data": [ { "key", "value" } ] }، تم فك تشفير القيم |
PUT /v1/functions/{name}/env | Service_role | { "vars": [ { "key", "value" } ] } | { "data": null } |
ملاحظات:
POSTعبارة عن رسالة مزعجة علىname: يؤدي نشر اسم موجود إلى استبدال الكود الخاص به. يستبدل الحقلenv_varsفي هذا النص المتغيرات الموجودة؛ تجاهلها للحفاظ عليها.- في
PATCH، يتم دمجpermissionsحقلاً تلو الآخر:{ "permissions": { "timeout_secs": 60 } }يحتفظ بـallow_netوmemory_mb. يُرجع الحقل الموجود خارج حدوده400. PUT …/envيستبدل مجموعة المتغيرات بأكملها وهو المسار الوحيد الذي يقوم بتشفيرها. شاهد أسرار.- لم يتم العثور على دالة ذات
is_active: falseبواسطةinvokeأو بواسطة المهام.
3. الاستدعاء
POST /v1/functions/{name}/invoke. الدور: anon أو authenticated أو service_role.
| الميدان | اكتب | الافتراضي | |
|---|---|---|---|
method | سلسلة | POST | طريقة HTTP التي تراها الوظيفة |
path | سلسلة | / | المسار الذي تراه الوظيفة |
headers | كائن | لا شيء | الرؤوس المعطاة للوظيفة. يتم إسقاط الرؤوس المحجوزة. |
body | أي JSON | لا شيء | الجسم المعطى للوظيفة |
| رأس الطلب | |
|---|---|
apikey | مطلوب |
Content-Type: application/json | مطلوب |
Authorization: Bearer <JWT> | اختياري: اتصل بهذا المستخدم |
X-Aurabase-Invoke-Mode: raw | اختياري: قم بإرجاع الاستجابة الخاصة بالوظيفة |
الاستجابة الافتراضية، دائمًا 200:
status هي حالة وظيفتك. logs فارغ لـ deno. في الوضع الأولي، تكون الاستجابة خاصة بوظيفتك: الحالة، content-type، بايت، بالإضافة إلى x-aurabase-invoke-origin: function.
| الفشل | الحالة | error.code |
|---|---|---|
| لم يتم العثور على الوظيفة أو أنها غير نشطة | 404 | NOT_FOUND |
| وقت التشغيل غير قابل للوصول | 503 | SERVICE_UNAVAILABLE |
توقفت المنصة عن انتظار وقت التشغيل (بعد timeout_secs بالإضافة إلى الهامش) | 504 | TIMEOUT |
| استنفدت حصة الخطة | 403 | QUOTA_EXCEEDED |
| عدد كبير جدًا من المكالمات من عميل واحد | 429 | rate_limit_exceeded |
| الجسم فوق حوالي 256 كيلو بايت | 503 | SERVICE_UNAVAILABLE |
4. الوظائف وقائمة انتظار الرسائل الميتة
| الطريقة والمسار | الدور | نص أو استعلام | الاستجابة |
|---|---|---|---|
POST /v1/functions/jobs | Service_role | { function_name, payload?, delay_secs?, max_attempts? } | الوظيفة |
GET /v1/functions/jobs | Service_role | ?status=&limit= (1 إلى 500، الافتراضي 50) | مجموعة من الوظائف |
GET /v1/functions/jobs/{id} | Service_role | لا شيء | الوظيفة |
POST /v1/functions/jobs/{id}/retry | Service_role | لا شيء | المهمة، العودة إلى pending |
GET /v1/functions/jobs/dlq | Service_role | ?limit= | مجموعة من الوظائف الميتة |
POST /v1/functions/jobs/dlq/requeue | Service_role | لا شيء | { "data": { "requeued": 1 } } |
كائن الوظيفة: id, project_id, function_name, payload, status (pending, running, completed, failed, dead), attempts, max_attempts, error, scheduled_at, started_at, completed_at, created_at. السلوك: الوظائف والكرون وقائمة انتظار الحروف الميتة.
5. كرون
| الطريقة والمسار | الدور | الجسم | الاستجابة |
|---|---|---|---|
POST /v1/functions/cron | Service_role | { name, schedule, function_name, payload? } | دخول كرون |
GET /v1/functions/cron | Service_role | لا شيء | مجموعة من الإدخالات |
DELETE /v1/functions/cron/{name} | Service_role | لا شيء | { "data": null } أو 404 لاسم غير معروف |
الإدخال: id, project_id, name, schedule (مخزن مع 6 حقول)، function_name, payload, is_active, last_run, next_run, created_at.
6. التنبيهات
| الطريقة والمسار | الدور | نص أو استعلام |
|---|---|---|
POST /v1/functions/alerts | Service_role | { name, metric, condition, threshold, channel, destination } |
GET /v1/functions/alerts | Service_role | لا شيء |
PATCH /v1/functions/alerts/{id} | Service_role | { "enabled": true } |
DELETE /v1/functions/alerts/{id} | Service_role | لا شيء |
GET /v1/functions/alerts/{id}/events | Service_role | ?limit=&offset= |
GET /v1/functions/alerts/events | Service_role | ?limit=&offset= |
القيم والسلوك: التنبيهات.