الترقيم والحدود
كيف تُقسَّم نتائج القوائم إلى صفحات، وحدود الحجم والوقت والمعدّل في الواجهة البرمجية.
تعيد نقاط نهاية القوائم صفحة واحدة في كل مرة، ولكل طلب حدود للحجم والوقت. صمّم ربطك مع أوكتا فيديو على أساسها من البداية.
شكل الاستجابة
تضع الاستجابة الناجحة محتواها داخل data. وتضيف القوائم الحقل meta:
{
"data": [
{ "id": "6f1c2b9e-4a7d-4f3e-9b8a-2d5c7e1f0a34", "title": "Lesson 26", "encoding_status": "ready" }
],
"meta": { "page": 2, "per_page": 25, "total": 137 }
}الترقيم
| معامل الاستعلام | الافتراضي | المسموح |
|---|---|---|
page | 1 | 1 أو أكثر |
per_page | 25 | من 1 إلى 100 |
يعدّ meta.total كل العناصر في كل الصفحات، فتكون الصفحة الأخيرة هي ceil(total / per_page). وتعيد الصفحة التي تتجاوز النهاية قائمة data فارغة.
const base = 'https://api.octavideo.tech/api/v1';
const headers = { AccessKey: process.env.OCTAVIDEO_KEY };
const videos = [];
for (let page = 1; ; page++) {
const res = await fetch(`${base}/videos?page=${page}&per_page=100`, { headers });
if (!res.ok) throw new Error(`OctaVideo ${res.status}`);
const { data, meta } = await res.json();
videos.push(...data);
if (page * meta.per_page >= meta.total) break;
}الحدود
| الحد | القيمة | الخطأ عند تجاوزه |
|---|---|---|
| جسم طلب JSON | 1 MiB | 413 payload_too_large |
| ملف الرفع | 10 GiB | 413 payload_too_large |
| مدة الطلب | 30 ثانية | 504 Gateway Timeout (دون جسم JSON) |
| مدة الرفع | ساعتان | يُغلق الاتصال |
| العناصر في الصفحة | 100 | 400 validation_failed |
| الفصول في الفيديو | 200 | 400 validation_failed |
| الفيديوهات المضافة إلى مجموعة في طلب واحد | 100 | 400 validation_failed |
عمر رمز OTP (ttl_seconds) | من ثانية واحدة إلى 24 ساعة، و5 دقائق افتراضيًا | 400 validation_failed |
حدود المعدّل
عندما ترسل طلبات كثيرة جدًا تجيب الواجهة بـ 429 rate_limited مع ترويسة Retry-After بعدد الثواني. انتظر هذه المدة ثم أعد المحاولة. ويُحدّ تفويض التشغيل في المشغّل لكل مكتبة ولكل عنوان IP للمشاهد، وهذا يحمي فيديوهاتك من الإساءة الآلية.
قد تتغيّر حدود المعدّل الدقيقة خلال البيتا الخاصة. اجعل عميلك يلتزم بقيمة Retry-After بدلًا من رقم ثابت.
JSON صارم
ترفض الواجهة البرمجية أجسام JSON التي تحتوي حقولًا غير معروفة أو بيانات زائدة أو أكثر من قيمة، وتعيد 400 bad_request. أرسل الحقول الموثّقة فقط، واضبط Content-Type: application/json.