مرجع REST API
الـ REST API في صدى خمسة مسارات تحت https://sada.g4t.io/api/v1، موثّقة بمفتاحك السري. JSON في الطلب وJSON في الرد.
01الأساسيات
كل الطلبات تحمل Authorization: Bearer sk_… وContent-Type: application/json. المفتاح يحدّد التطبيق والبيئة. الاستجابات JSON؛ والأخطاء تحمل دائماً message.
| العنصر | القيمة |
|---|---|
| الرابط الأساسي |
https://sada.g4t.io/api/v1
|
| التوثيق |
Authorization: Bearer sk_test_… أو sk_live_…
|
| الصيغة | أجسام طلبات واستجابات JSON؛ الأوقات بتوقيت UTC بصيغة ISO 8601. |
| المعرّفات |
المكالمات call_ + 10 أحرف وأرقام صغيرة؛ الأحداث evt_….
|
| الإصدار |
المسار يحمل الإصدار (/v1). الحقول تُضاف فقط ولا تُحذف.
|
02حدّ الطلبات
لكل مفتاح سري 120 طلباً في الدقيقة. فوق الحد يردّ الـ API بـ 429 مع Retry-After؛ وترويسات X-RateLimit-* المعتادة على كل استجابة. الطلبات بلا مفتاح صالح تُحدّ بحسب IP.
03المسارات
المفتاح لا يرى إلا مكالمات تطبيقه وبيئته؛ أي شيء آخر 404.
| الطريقة | المسار | الوصف |
|---|---|---|
POST
|
/calls
|
إنشاء مكالمة. |
GET
|
/calls
|
قائمة المكالمات، الأحدث أولاً، مقسّمة صفحات. |
GET
|
/calls/{call_id}
|
مكالمة واحدة بمشاركيها وخطها الزمني. |
POST
|
/calls/{call_id}/tokens
|
إصدار رمز انضمام لمشارك. |
POST
|
/calls/{call_id}/end
|
إنهاء مكالمة حيّة. |
04إنشاء مكالمةPOST /calls
يعيد 201 مع المكالمة. مع ring: true (الافتراضي) تبدأ المكالمة ringing؛ ومع ring: false تبدأ in_progress.
| الاسم | النوع | إلزامي | الافتراضي | الوصف |
|---|---|---|---|---|
type
|
string
|
لا |
one_to_one
|
one_to_one أو group.
|
ring
|
boolean
|
لا |
true
|
استدعاء المتلقي بالرنين الأصلي. |
region
|
string
|
لا |
auto
|
auto أو baghdad أو dubai أو istanbul. يستخدم auto المنطقة الرئيسية لمؤسستك.
|
metadata
|
object
|
لا |
—
|
حتى 20 مفتاحاً، يُعاد على المكالمة وفي الـ webhooks. |
05قائمة المكالماتGET /calls
الأحدث أولاً، 20 في الصفحة افتراضياً، مع participants. تقسيم Laravel القياسي: data وlinks وmeta؛ مرّر page للصفحة التالية.
| الاسم | النوع | إلزامي | الافتراضي | الوصف |
|---|---|---|---|---|
search
|
string
|
لا |
—
|
يطابق معرّف المكالمة أو اسم المشارك أو user_ref.
|
status
|
string
|
لا |
—
|
واحد من ringing أو in_progress أو completed أو missed أو declined أو failed.
|
type
|
string
|
لا |
—
|
one_to_one أو group.
|
per_page
|
integer
|
لا |
20
|
من 1 إلى 100. |
page
|
integer
|
لا |
1
|
رقم الصفحة. |
06جلب مكالمةGET /calls/{call_id}
المكالمة مع participants والخط الزمني events (call.created وcall.connected وcall.ended…). المعرّفات المجهولة ومكالمات التطبيقات الأخرى تردّ بـ 404 Call not found.
07إصدار رمز انضمامPOST /calls/{call_id}/tokens
يعيد 201 مع الرمز ووقت انتهائه والمشارك. راجع رموز الانضمام للحقول والقواعد.
| الاسم | النوع | إلزامي | الافتراضي | الوصف |
|---|---|---|---|---|
user_ref
|
string ≤ 120
|
نعم |
—
|
معرّفك للمستخدم. |
display_name
|
string ≤ 80
|
نعم |
—
|
يظهر لبقية المشاركين. |
ttl
|
integer 60–3600
|
لا |
300
|
العمر بالثواني. |
08إنهاء مكالمةPOST /calls/{call_id}/end
يفصل كل المشاركين ويفوتر المكالمة. يُرسل call.ended (أو call.missed إن لم يتصل أحد) إلى الـ webhooks. المكالمة غير الحيّة تردّ بـ 422 Call is not live.
09الكائنات
كائن المكالمة كما يعيده كل مسار.
| الحقل | النوع | الوصف |
|---|---|---|
call_id
|
string
|
المعرّف العام. |
env
|
test | live
|
بيئة المفتاح الذي أنشأها. |
type
|
one_to_one | group
|
نوع المكالمة. |
status
|
string
|
راجع الحالات أدناه. |
status_text
|
string
|
تسمية status بلغة لوحة التحكم.
|
region
|
string | null
|
منطقة الترحيل. |
ring
|
boolean
|
أُنشئت بالرنين الأصلي. |
metadata
|
object | null
|
بياناتك الوصفية. |
duration_seconds
|
integer
|
من started_at إلى ended_at، أو إلى الآن ما دامت حيّة.
|
participant_minutes
|
integer
|
الدقائق المفوترة؛ 0 حتى تنتهي المكالمة. |
avg_latency_ms
|
integer | null
|
متوسط زمن الاستجابة بين المشاركين. |
started_at
|
timestamp
|
وقت الإنشاء. |
connected_at
|
timestamp | null
|
حين حصل المشارك الثاني على رمز. |
ended_at
|
timestamp | null
|
حين انتهت المكالمة. |
participants
|
Participant[]
|
في استجابتي القائمة والجلب. |
events
|
Event[]
|
الخط الزمني؛ في استجابة الجلب فقط. |
created_at
|
timestamp
|
إنشاء الصف. |
updated_at
|
timestamp
|
آخر تغيير. |
المشارك
| الحقل | النوع | الوصف |
|---|---|---|
user_ref
|
string
|
معرّفك. |
display_name
|
string
|
الاسم الظاهر. |
platform
|
string | null
|
android أو ios أو web بعد اتصال الـ SDK.
|
muted
|
boolean
|
حالة الميكروفون. |
latency_ms
|
integer | null
|
متوسط زمن الذهاب والإياب. |
loss_pct
|
number | null
|
متوسط فقد الحزم، بالمئة. |
jitter_ms
|
integer | null
|
متوسط التذبذب. |
joined_at
|
timestamp | null
|
حين أُصدر الرمز. |
left_at
|
timestamp | null
|
حين غادر، أو null.
|
الحالات
| الحالة | المعنى |
|---|---|
ringing
|
بانتظار المتلقي. |
in_progress
|
متصلة، أو أُنشئت بلا رنين. |
completed
|
انتهت بعد الاتصال. |
missed
|
انتهت قبل الاتصال. |
declined
|
رفضها المتلقي. |
failed
|
تعذّر الاتصال. |