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

# Modèle de Plage Horaire

> Suivez la consommation des ressources en fonction du temps écoulé pour le calcul, les fonctions sans serveur, les conteneurs et la facturation au runtime.

## Cas d'Utilisation

Explorez les scénarios courants pris en charge par le Modèle de Plage Horaire :

<CardGroup cols={2}>
  <Card title="Serverless Functions" icon="function">
    Facturez en fonction du temps d'exécution des fonctions et de l'utilisation de la mémoire.
  </Card>

  <Card title="Container Runtime" icon="container-storage">
    Suivez le temps d'exécution des conteneurs pour la facturation à l'utilisation.
  </Card>

  <Card title="Compute Instances" icon="server">
    Surveillez le temps d'exécution des VM et facturez à la minute ou à l'heure.
  </Card>

  <Card title="Background Jobs" icon="briefcase">
    Suivez le temps de traitement des exportations de données, rapports et tâches par lots.
  </Card>
</CardGroup>

<Info>
  Parfait pour la facturation basée sur le temps de calcul, la durée d'exécution des fonctions, le temps d'exécution des conteneurs ou toute utilisation basée sur la durée.
</Info>

## Démarrage Rapide

Suivez l'utilisation des ressources par durée :

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

  <Step title="Get Your API Keys">
    * **Clé API Dodo Payments** : Obtenez-la depuis [Dodo Payments Dashboard](https://app.dodopayments.com/developer/api-keys)
  </Step>

  <Step title="Create a Meter">
    Créez un compteur dans votre [Dodo Payments Dashboard](https://app.dodopayments.com/):

    * **Event Name** : `time_range_usage` (ou le nom de votre choix)
    * **Aggregation Type** : `sum` pour suivre la durée totale
    * **Over Property** : `durationSeconds`, `durationMinutes` ou `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>

## Configuration

### Configuration d'Ingestion

<ParamField path="apiKey" type="string" required>
  Votre clé API Dodo Payments depuis le tableau de bord.
</ParamField>

<ParamField path="environment" type="string" required>
  Mode d'environnement : `test_mode` ou `live_mode`.
</ParamField>

<ParamField path="eventName" type="string" required>
  Nom de l'événement correspondant à la configuration de votre compteur.
</ParamField>

### Options de Suivi de Plage Horaire

<ParamField path="customerId" type="string" required>
  L'ID client pour l'attribution de facturation.
</ParamField>

<ParamField path="durationMs" type="number">
  Durée en millisecondes. À utiliser pour une précision sub-seconde.
</ParamField>

<ParamField path="durationSeconds" type="number">
  Durée en secondes. Le plus courant pour l'exécution de fonctions et les tâches courtes.
</ParamField>

<ParamField path="durationMinutes" type="number">
  Durée en minutes. Utile pour les ressources de longue durée comme les VM.
</ParamField>

<ParamField path="metadata" type="object">
  Métadonnées facultatives sur la ressource telles que CPU, mémoire, région, etc.
</ParamField>

## Meilleures Pratiques

<Tip>
  **Choisissez la bonne unité** : utilisez les millisecondes pour les opérations courtes, les secondes pour les fonctions et les minutes pour les ressources de longue durée.
</Tip>

<Warning>
  **Chronométrage précis** : utilisez `Date.now()` ou `performance.now()` pour un suivi temporel précis, en particulier pour les fonctions serverless.
</Warning>
