> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# نموذج نطاق الوقت

> تتبع استهلاك الموارد بناءً على الوقت المنقضي للحوسبة، الوظائف بدون خادم، الحاويات، وفواتير وقت التشغيل.

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

استكشف السيناريوهات الشائعة المدعومة من نموذج نطاق الوقت:

<CardGroup cols={2}>
  <Card title="Serverless Functions" icon="function">
    فوتر بناءً على وقت تنفيذ الدالة واستخدام الذاكرة.
  </Card>

  <Card title="Container Runtime" icon="container-storage">
    تتبع وقت تشغيل الحاوية للفوترة بناءً على الاستخدام.
  </Card>

  <Card title="Compute Instances" icon="server">
    راقب وقت تشغيل VM واحتسب الرسوم حسب الدقيقة أو الساعة.
  </Card>

  <Card title="Background Jobs" icon="briefcase">
    تتبع وقت المعالجة لتصدير البيانات، التقارير، والمهام الدفعية.
  </Card>
</CardGroup>

<Info>
  مثالي للفوترة بناءً على وقت الحوسبة، مدة تنفيذ الدوال، وقت تشغيل الحاوية، أو أي استخدام يعتمد على الوقت.
</Info>

## البدء السريع

تتبع استخدام الموارد حسب مدة الوقت:

<Steps>
  <Step title="Install the SDK">
    ```bash theme={null}
    npm install @dodopayments/ingestion-blueprints
    ```
  </Step>

  <Step title="Get Your API Keys">
    * **مفتاح واجهة برمجة تطبيقات Dodo Payments**: احصل عليه من [Dodo Payments Dashboard](https://app.dodopayments.com/developer/api-keys)
  </Step>

  <Step title="Create a Meter">
    أنشئ عدادًا في [لوحة Dodo Payments](https://app.dodopayments.com/):

    * **اسم الحدث**: `time_range_usage` (أو الاسم المفضل لديك)
    * **نوع التجميع**: `sum` لتتبع المدة الإجمالية
    * **خاصية Over**: `durationSeconds`، `durationMinutes`، أو `durationMs`
  </Step>

  <Step title="Track Time Usage">
    <CodeGroup>
      ```javascript Serverless Functions theme={null}
      import { Ingestion, trackTimeRange } from '@dodopayments/ingestion-blueprints';

      const ingestion = new Ingestion({
        apiKey: process.env.DODO_PAYMENTS_API_KEY,
        environment: 'test_mode',
        eventName: 'function_execution'
      });

      // Track function execution time
      const startTime = Date.now();

      // Execute your function (example: image processing)
      const result = await yourImageProcessingLogic();

      const durationMs = Date.now() - startTime;

      await trackTimeRange(ingestion, {
        customerId: 'customer_123',
        durationMs: durationMs
      });
      ```

      ```javascript Container Runtime theme={null}
      import { Ingestion, trackTimeRange } from '@dodopayments/ingestion-blueprints';

      const ingestion = new Ingestion({
        apiKey: process.env.DODO_PAYMENTS_API_KEY,
        environment: 'test_mode',
        eventName: 'container_runtime'
      });

      // Track container runtime in seconds
      await trackTimeRange(ingestion, {
        customerId: 'customer_456',
        durationSeconds: 120
      });
      ```

      ```javascript VM Instance Runtime theme={null}
      import { Ingestion, trackTimeRange } from '@dodopayments/ingestion-blueprints';

      const ingestion = new Ingestion({
        apiKey: process.env.DODO_PAYMENTS_API_KEY,
        environment: 'test_mode',
        eventName: 'vm_runtime'
      });

      // Track VM runtime in minutes
      await trackTimeRange(ingestion, {
        customerId: 'customer_789',
        durationMinutes: 60
      });
      ```
    </CodeGroup>
  </Step>
</Steps>

## التكوين

### تكوين الإدخال

<ParamField path="apiKey" type="string" required>
  مفتاح واجهة برمجة تطبيقات Dodo Payments من اللوحة.
</ParamField>

<ParamField path="environment" type="string" required>
  وضع البيئة: `test_mode` أو `live_mode`.
</ParamField>

<ParamField path="eventName" type="string" required>
  اسم الحدث الذي يتطابق مع تكوين العداد الخاص بك.
</ParamField>

### خيارات تتبع نطاق الوقت

<ParamField path="customerId" type="string" required>
  معرّف العميل لنسب الفوترة.
</ParamField>

<ParamField path="durationMs" type="number">
  المدة بالمللي ثانية. استخدمها للدقة الفرعية للثانية.
</ParamField>

<ParamField path="durationSeconds" type="number">
  المدة بالثواني. الأكثر شيوعًا لتنفيذ الدالات والمهام القصيرة.
</ParamField>

<ParamField path="durationMinutes" type="number">
  المدة بالدقائق. مفيد للموارد ذات التشغيل الطويل مثل الآلات الافتراضية.
</ParamField>

<ParamField path="metadata" type="object">
  بيانات وصفية اختيارية حول المورد مثل وحدة المعالجة، الذاكرة، المنطقة، إلخ.
</ParamField>

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

<Tip>
  **اختر الوحدة المناسبة**: استخدم المللي ثانية للعمليات القصيرة، والثواني للدوال، والدقائق للموارد ذات التشغيل الطويل.
</Tip>

<Warning>
  **توقيت دقيق**: استخدم `Date.now()` أو `performance.now()` لتتبع الوقت بدقة، خاصةً للدوال بدون خوادم.
</Warning>
