الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt

Use this file to discover all available pages before exploring further.

البنية الموحدة

تتبع جميع endpoints في OneClickDz Flexy API v3 بنية استجابة متسقة، مما يسهّل التعامل مع الاستجابات في تطبيقك.

استجابة النجاح

عند نجاح الطلب، تتبع الاستجابة هذه البنية:
{
  "success": true,
  "data": {
    // endpoint-specific data
  },
  "meta": {
    "timestamp": "2025-10-29T00:00:00.000Z"
    // additional metadata (pagination, etc.)
  },
  "requestId": "req_1234567890_abc123"
}

الحقول

success
boolean
مطلوب
دائمًا true للاستجابات الناجحة
data
object
مطلوب
يحتوي على محتوى الاستجابة. تختلف البنية حسب كل endpoint.
meta
object
بيانات وصفية إضافية حول الاستجابة
requestId
string
معرّف فريد لهذا الطلب. استخدمه عند التواصل مع الدعم الفني.

استجابة الخطأ

عند فشل الطلب، تتبع الاستجابة هذه البنية:
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "details": {
      // additional error context
    }
  },
  "requestId": "req_1234567890_abc123"
}

الحقول

success
boolean
مطلوب
دائمًا false لاستجابات الخطأ
error
object
مطلوب
يحتوي على معلومات الخطأ
requestId
string
معرّف فريد لهذا الطلب. أدرجه عند الإبلاغ عن المشكلات.

أمثلة على الاستجابة

رصيد الحساب

{
  "success": true,
  "data": {
    "balance": 1326.13
  },
  "meta": {
    "timestamp": "2025-10-29T00:35:58.710Z"
  }
}

إرسال شحن الهاتف المحمول

{
  "success": true,
  "data": {
    "topupId": "6901616fe9e88196b4eb64b0",
    "topupRef": "my-order-123",
    "newBalance": 826.13
  },
  "meta": {
    "timestamp": "2025-10-29T00:35:59.454Z"
  }
}

قائمة المعاملات (مع التصفح بالصفحات)

{
  "success": true,
  "data": {
    "items": [
      {
        "type": "FLEXY",
        "amount": 500,
        "time": "2025-10-29T00:00:00.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "pageSize": 20,
      "totalPages": 10,
      "totalResults": 195
    }
  },
  "meta": {
    "timestamp": "2025-10-29T00:35:58.852Z"
  }
}

التصفح بالصفحات

تتضمن endpoints القوائم بيانات التصفح بالصفحات في الاستجابة:
{
  "success": true,
  "data": {
    "items": [...],
    "pagination": {
      "page": 1,
      "pageSize": 20,
      "totalPages": 10,
      "totalResults": 195
    }
  }
}

حقول التصفح بالصفحات

page
integer
رقم الصفحة الحالية (مفهرسة من 1)
pageSize
integer
عدد العناصر في كل صفحة
totalPages
integer
العدد الإجمالي للصفحات المتاحة
totalResults
integer
العدد الإجمالي للعناصر في جميع الصفحات

معلمات الاستعلام للتصفح بالصفحات

تحكّم في التصفح بالصفحات باستخدام هذه المعلمات:
المعلمةالنوعالافتراضيالوصف
pageinteger1رقم الصفحة (الحد الأدنى: 1)
pageSizeinteger20العناصر في الصفحة (الأدنى: 1، الأقصى: 100)
تحقق دائمًا من totalPages لمعرفة متى تتوقف عن التصفح.

رموز حالة HTTP

تستخدم API رموز حالة HTTP المعيارية:
رمز الحالةالمعنى
200نجاح - اكتمل الطلب بنجاح
400طلب غير صحيح - معلمات غير صالحة أو خطأ في التحقق
401غير مصرح - مفتاح API غير صالح أو مفقود
403محظور - رصيد أو صلاحيات غير كافية
404غير موجود - المورد غير موجود
429طلبات كثيرة جدًا - تجاوز حد المعدل
500خطأ داخلي في الخادم - حدث خطأ من جانبنا
503الخدمة غير متاحة - انقطاع مؤقت في الخدمة
حتى لرموز الحالة غير 200، تتبع الاستجابة تنسيق الخطأ القياسي.

معرّف الطلب (Request ID)

تتضمن كل استجابة requestId فريدًا:
{
  "success": true,
  "data": {...},
  "requestId": "req_1761698159_abc123xyz"
}

استخدامات Request ID

التصحيح

تتبع الطلبات عبر السجلات وتحديد المشكلات

الدعم الفني

إدراجه في تذاكر الدعم للحصول على حل أسرع

التدقيق

ربط الطلبات بالمعاملات

المراقبة

تتبع تدفق الطلبات عبر الأنظمة
سجّل دائمًا requestId لكل استدعاء API تجريه. إنه لا يُقدّر بثمن للتصحيح.

نوع المحتوى

تستخدم جميع الطلبات والاستجابات JSON:

ترويسات الطلب

Content-Type: application/json
X-Access-Token: YOUR_API_KEY

ترويسات الاستجابة

Content-Type: application/json; charset=utf-8
X-Request-ID: req_1761698159_abc123xyz
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 115
X-RateLimit-Reset: 1761698219

التعامل مع الاستجابات

أفضل الممارسات

const response = await fetch(url, options);
const data = await response.json();

if (data.success) {
  // Handle success
  console.log(data.data);
} else {
  // Handle error
  console.error(data.error.code, data.error.message);
}
console.log(`Request ${data.requestId}: ${data.success ? 'Success' : 'Failed'}`);

if (!data.success) {
  console.error(`Error ${data.error.code}: ${data.error.message}`);
}
let page = 1;
let allItems = [];

while (true) {
  const response = await fetch(`${url}?page=${page}&pageSize=100`);
  const data = await response.json();
  
  if (!data.success) break;
  
  allItems.push(...data.data.items);
  
  if (page >= data.data.pagination.totalPages) break;
  page++;
}
const timestamp = new Date(data.meta.timestamp);
console.log(`Response generated at: ${timestamp.toLocaleString()}`);

الخطوات التالية

معالجة الأخطاء

تعلّم كيفية التعامل مع الأخطاء بفعالية

Endpoints الأساسية

استكشف جميع الـ endpoints المتاحة