بيتا
أدر برامج بيتا خاصة وقوائم مختبريها. يتطلّب تفعيل ميزة بيتا للمشروع.
البرامج
GET/v1/beta/programs
| Parameter | Type | Description |
|---|---|---|
status | string | التصفية حسب الحالة: draft أو active أو closed. |
limit | integer | حجم الصفحة. الافتراضي 25. |
offset | integer | عدد العناصر المراد تخطّيها. الافتراضي 0. |
GET/v1/beta/programs/:id
POST/v1/beta/programs
| Parameter | Type | Description |
|---|---|---|
namerequired | string | اسم البرنامج. ويُشتق منه الـ slug في العنوان ويُجعل فريدًا داخل المشروع. |
version | string | إصدار semver قيد الاختبار (X.Y.Z). |
summary | string | وصف قصير للبيتا. |
access_url | string | من أين يصل المختبرون إلى النسخة (مثل رابط TestFlight). |
access_instructions | string | كيف يجهّز المختبرون أنفسهم. |
status | string | draft أو active أو closed. الافتراضي draft. |
allow_public_signup | boolean | السماح بالانضمام العام عبر رابط البوابة. الافتراضي false. |
feedback_deadline | string | طابع زمني ISO-8601 يُغلَق بعده استقبال الملاحظات. |
PATCH/v1/beta/programs/:id
| Parameter | Type | Description |
|---|---|---|
name | string | اسم البرنامج. |
version | string | إصدار semver قيد الاختبار (X.Y.Z). |
summary | string | وصف قصير للبيتا. |
access_url | string | من أين يصل المختبرون إلى النسخة. |
access_instructions | string | كيف يجهّز المختبرون أنفسهم. |
status | string | draft أو active أو closed. |
allow_public_signup | boolean | السماح بالانضمام العام عبر رابط البوابة. |
feedback_deadline | string | طابع زمني ISO-8601 يُغلَق بعده استقبال الملاحظات. |
DELETE/v1/beta/programs/:id
المختبرون
GET/v1/beta/programs/:programId/testers
| Parameter | Type | Description |
|---|---|---|
status | string | التصفية حسب الحالة: invited أو joined أو declined أو revoked. |
limit | integer | حجم الصفحة. الافتراضي 25. |
offset | integer | عدد العناصر المراد تخطّيها. الافتراضي 0. |
GET/v1/beta/programs/:programId/testers/:id
POST/v1/beta/programs/:programId/testers
| Parameter | Type | Description |
|---|---|---|
emailrequired | string | البريد الإلكتروني للمختبِر المراد تسجيله. |
DELETE/v1/beta/programs/:programId/testers/:id
تتطلّب الكتابات وصول API بخطة مدفوعة Pro. ويُشتق الـ slug من name
البرنامج ويُجعل فريدًا داخل المشروع. وتسجيل مختبِر عملية مُتماثلة (idempotent) بحسب البريد
الإلكتروني وتُعيد رمز القبول token — والـ API لا يرسل بريدًا، فاستخدمه لبناء رابط
الانضمام في البوابة (/beta/join?token=...) وسلّمه بنفسك. ويعيد DELETE الرمز 204؛
وحذف برنامج يحذف تسلسليًا مختبريه وملاحظاتهم، وحذف مختبِر نهائي.
سرد البرامج
curl "https://api.supdesk.app/v1/beta/programs?status=active&limit=10" \
-H "Authorization: Bearer sd_live_..."{
"data": [
{
"id": "bp_abc123",
"project_id": "prj_9f2a",
"name": "Mobile App v2",
"version": "2.0.0",
"slug": "mobile-app-v2",
"summary": "Early access to the new mobile experience.",
"access_url": "https://testflight.apple.com/join/abcd",
"access_instructions": "Install TestFlight, then open the invite link.",
"status": "active",
"allow_public_signup": true,
"feedback_deadline": "2026-08-01T00:00:00Z",
"created_at": "2026-07-01T09:12:00Z"
}
],
"pagination": { "limit": 25, "offset": 0, "has_more": false }
}إنشاء برنامج
curl -X POST https://api.supdesk.app/v1/beta/programs \
-H "Authorization: Bearer sd_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Mobile App v2",
"version": "2.0.0",
"summary": "Early access to the new mobile experience.",
"status": "active",
"allow_public_signup": true
}'{
"data": {
"id": "bp_abc123",
"project_id": "prj_9f2a",
"name": "Mobile App v2",
"version": "2.0.0",
"slug": "mobile-app-v2",
"summary": "Early access to the new mobile experience.",
"access_url": null,
"access_instructions": null,
"status": "active",
"allow_public_signup": true,
"feedback_deadline": null,
"created_at": "2026-07-01T09:12:00Z"
}
}تحديث برنامج
تتغيّر الحقول التي ترسلها وحدها؛ أما الحقول المحذوفة فتبقى دون مساس.
curl -X PATCH https://api.supdesk.app/v1/beta/programs/bp_abc123 \
-H "Authorization: Bearer sd_live_..." \
-H "Content-Type: application/json" \
-d '{ "status": "closed" }'{
"data": {
"id": "bp_abc123",
"project_id": "prj_9f2a",
"name": "Mobile App v2",
"version": "2.0.0",
"slug": "mobile-app-v2",
"summary": "Early access to the new mobile experience.",
"access_url": null,
"access_instructions": null,
"status": "closed",
"allow_public_signup": true,
"feedback_deadline": null,
"created_at": "2026-07-01T09:12:00Z"
}
}حذف برنامج
curl -X DELETE https://api.supdesk.app/v1/beta/programs/bp_abc123 \
-H "Authorization: Bearer sd_live_..."يعيد 204 No Content. ويحذف تسلسليًا مختبري البرنامج وملاحظاتهم.
سرد المختبرين
curl "https://api.supdesk.app/v1/beta/programs/bp_abc123/testers?status=invited" \
-H "Authorization: Bearer sd_live_..."{
"data": [
{
"id": "bt_def456",
"beta_program_id": "bp_abc123",
"email": "jamie@example.com",
"token": "9d8c7b...",
"source": "invite",
"status": "invited",
"end_user_id": null,
"invited_at": "2026-07-02T10:00:00Z",
"joined_at": null
}
],
"pagination": { "limit": 25, "offset": 0, "has_more": false }
}تسجيل مختبِر
عملية مُتماثلة بحسب البريد الإلكتروني: فتسجيل عنوان موجود بالفعل في البرنامج يعيد صفّه
الحالي بالرمز 200 بدلاً من 201.
curl -X POST https://api.supdesk.app/v1/beta/programs/bp_abc123/testers \
-H "Authorization: Bearer sd_live_..." \
-H "Content-Type: application/json" \
-d '{ "email": "jamie@example.com" }'{
"data": {
"id": "bt_def456",
"beta_program_id": "bp_abc123",
"email": "jamie@example.com",
"token": "9d8c7b...",
"source": "invite",
"status": "invited",
"end_user_id": null,
"invited_at": "2026-07-02T10:00:00Z",
"joined_at": null
}
}استخدم الـ token المُعاد لبناء رابط الانضمام في البوابة (/beta/join?token=...)
وأرسله بالبريد بنفسك.
إزالة مختبِر
curl -X DELETE https://api.supdesk.app/v1/beta/programs/bp_abc123/testers/bt_def456 \
-H "Authorization: Bearer sd_live_..."يعيد 204 No Content. وإزالة مختبِر نهائية وتحذف ملاحظات البيتا الخاصة به.