> ## 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.

# فحص حالة الخدمة

> التحقق من حالة خدمة API وتوفر المشغلين

<div dir="rtl">
  ## نظرة عامة

  يتيح لك endpoint فحص الحالة التحقق من حالة خدمة API والتحقق من توفر كل مشغّل هاتف محمول.

  ## الاستجابة

  <ResponseField name="success" type="boolean" required>
    دائمًا `true` إذا كانت API تعمل بشكل صحيح
  </ResponseField>

  <ResponseField name="data" type="object" required>
    <Expandable title="properties">
      <ResponseField name="api" type="string">
        حالة الخدمة: `"ok"` أو `"error"`
      </ResponseField>

      <ResponseField name="operators" type="object">
        حالة كل مشغّل

        <Expandable title="properties">
          <ResponseField name="mobilis" type="string">
            حالة مشغّل Mobilis: `"up"` أو `"down"`
          </ResponseField>

          <ResponseField name="ooredoo" type="string">
            حالة مشغّل Ooredoo: `"up"` أو `"down"`
          </ResponseField>

          <ResponseField name="djezzy" type="string">
            حالة مشغّل Djezzy: `"up"` أو `"down"`
          </ResponseField>

          <ResponseField name="mobilisFixedPlans" type="string">
            حالة الخطط الثابتة لـ Mobilis (Sama | Pixx): `"up"` أو `"down"`
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="meta" type="object">
    <Expandable title="properties">
      <ResponseField name="timestamp" type="string">
        الطابع الزمني الحالي للخادم (تنسيق ISO 8601)
      </ResponseField>
    </Expandable>
  </ResponseField>

  ## مثال على الطلب

  <CodeGroup>
    ```bash cURL theme={null}
    curl --request GET \
      --url https://api.oneclickdz.com/v3/ping
    ```

    ```bash cURL (with authentication) theme={null}
    curl --request GET \
      --url https://api.oneclickdz.com/v3/ping \
      --header 'X-Access-Token: your_api_key_here'
    ```

    ```javascript Node.js theme={null}
    const response = await fetch("https://api.oneclickdz.com/v3/ping");
    const data = await response.json();

    console.log("API Status:", data.data.api);
    console.log("Operators:", data.data.operators);
    ```

    ```javascript Node.js (with authentication) theme={null}
    const response = await fetch("https://api.oneclickdz.com/v3/ping", {
      headers: {
        'X-Access-Token': 'your_api_key_here'
      }
    });
    const data = await response.json();

    console.log("API Status:", data.data.api);
    console.log("Operators:", data.data.operators);
    ```

    ```python Python theme={null}
    import requests

    response = requests.get('https://api.oneclickdz.com/v3/ping')
    data = response.json()

    print
    {
      "success": true,
      "data": {
        "api": "ok",
        "operators": {
          "mobilis": "up",
          "ooredoo": "up",
          "djezzy": "up",
          "mobilisFixedPlans": "up"
        }
      },
      "meta": {
        "timestamp": "2025-10-29T00:35:58.557Z"
      }
    }
    ```
  </CodeGroup>

  ## حالات الاستخدام

  <CardGroup cols={2}>
    <Card title="مراقبة الخدمة" icon="chart-line">
      راقب توفر API وحالة المشغّلين لتتبع وقت التشغيل
    </Card>

    <Card title="فحوصات ما قبل الطيران" icon="plane-departure">
      تحقق من أن الخدمة تعمل قبل معالجة المعاملات
    </Card>

    <Card title="تصفية المشغّلين" icon="filter">
      أخفِ المشغّلين غير المتاحين من واجهة المستخدم
    </Card>

    <Card title="لوحة تحكم الحالة" icon="heart-pulse">
      أنشئ لوحة تحكم للحالة لفريق العمليات
    </Card>
  </CardGroup>

  ## مثال على التكامل

  ```javascript theme={null}
  // Check service health before processing orders
  async function canProcessOrders() {
    try {
      const response = await fetch("https://api.oneclickdz.com/v3/ping");
      const data = await response.json();

      if (data.data.api !== "ok") {
        console.error("API service is down");
        return false;
      }

      return true;
    } catch (error) {
      console.error("Health check failed:", error);
      return false;
    }
  }

  // Check specific operator availability
  async function isOperatorAvailable(operator) {
    const response = await fetch("https://api.oneclickdz.com/v3/ping");
    const data = await response.json();

    const operatorMap = {
      Mobilis: "mobilis",
      Ooredoo: "ooredoo",
      Djezzy: "djezzy",
      Pixx: "mobilisFixedPlans",
    };

    const operatorKey = operatorMap[operator];
    return data.data.operators[operatorKey] === "up";
  }
  ```

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

  <AccordionGroup>
    <Accordion title="الاستعلام الدوري" icon="clock">
      تحقق من endpoint الصحة كل 30 إلى 60 ثانية للحفاظ على رؤية محدّثة لحالة الخدمة.

      ```javascript theme={null}
      setInterval(async () => {
        const response = await fetch('https://api.oneclickdz.com/v3/ping');
        const data = await response.json();
        updateServiceStatus(data.data);
      }, 30000); // Check every 30 seconds
      ```
    </Accordion>

    <Accordion title="تخزين الحالة مؤقتًا" icon="database">
      خزّن الحالة مؤقتًا لمدة 30 إلى 60 ثانية لتجنب الطلبات المفرطة

      ```javascript theme={null}
      let cachedStatus = null;
      let lastCheck = 0;

      async function getServiceStatus() {
        const now = Date.now();
        
        if (cachedStatus && (now - lastCheck) < 30000) {
          return cachedStatus;
        }
        
        const response = await fetch('https://api.oneclickdz.com/v3/ping');
        cachedStatus = await response.json();
        lastCheck = now;
        
        return cachedStatus;
      }
      ```
    </Accordion>

    <Accordion title="التعامل مع الحالة المتدهورة" icon="triangle-exclamation">
      عندما يكون أحد المشغّلين خارج الخدمة، أبلغ المستخدمين واقترح بدائل

      ```javascript theme={null}
      if (data.data.operators.djezzy === 'down') {
        showNotification('Djezzy service temporarily unavailable. Try Mobilis or Ooredoo.');
      }
      ```
    </Accordion>
  </AccordionGroup>
</div>
