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

# Plantilla de Rango de Tiempo

> Rastrear el consumo de recursos basado en el tiempo transcurrido para computación, funciones sin servidor, contenedores y facturación por tiempo de ejecución.

## Casos de Uso

Explora escenarios comunes soportados por la Plantilla de Rango de Tiempo:

<CardGroup cols={2}>
  <Card title="Serverless Functions" icon="function">
    Facture en función del tiempo de ejecución de la función y del uso de memoria.
  </Card>

  <Card title="Container Runtime" icon="container-storage">
    Realice un seguimiento del tiempo de ejecución del contenedor para la facturación basada en el uso.
  </Card>

  <Card title="Compute Instances" icon="server">
    Supervise el tiempo de ejecución de la máquina virtual y cargue por minuto u hora.
  </Card>

  <Card title="Background Jobs" icon="briefcase">
    Realice un seguimiento del tiempo de procesamiento de exportaciones de datos, informes y trabajos por lotes.
  </Card>
</CardGroup>

<Info>
  Perfecto para la facturación basada en tiempo de cómputo, duración de ejecución de funciones, tiempo de ejecución de contenedores o cualquier uso basado en el tiempo.
</Info>

## Inicio Rápido

Rastrear el uso de recursos por duración de tiempo:

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

  <Step title="Get Your API Keys">
    * **Dodo Payments API Key**: Obténla desde el [Dodo Payments Dashboard](https://app.dodopayments.com/developer/api-keys)
  </Step>

  <Step title="Create a Meter">
    Crea un medidor en tu [Dodo Payments Dashboard](https://app.dodopayments.com/):

    * **Event Name**: `time_range_usage` (o el nombre que prefieras)
    * **Aggregation Type**: `sum` para realizar un seguimiento de la duración total
    * **Over Property**: `durationSeconds`, `durationMinutes` o `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>

## Configuración

### Configuración de Ingesta

<ParamField path="apiKey" type="string" required>
  Tu clave de API de Dodo Payments desde el panel de control.
</ParamField>

<ParamField path="environment" type="string" required>
  Modo de entorno: `test_mode` o `live_mode`.
</ParamField>

<ParamField path="eventName" type="string" required>
  Nombre de evento que coincida con la configuración de tu medidor.
</ParamField>

### Opciones de Rango de Tiempo a Rastrear

<ParamField path="customerId" type="string" required>
  El ID del cliente para la atribución de facturación.
</ParamField>

<ParamField path="durationMs" type="number">
  Duración en milisegundos. Úsala para precisión subsegundo.
</ParamField>

<ParamField path="durationSeconds" type="number">
  Duración en segundos. Lo más común para la ejecución de funciones y tareas breves.
</ParamField>

<ParamField path="durationMinutes" type="number">
  Duración en minutos. Útil para recursos de ejecución prolongada como máquinas virtuales.
</ParamField>

<ParamField path="metadata" type="object">
  Metadatos opcionales sobre el recurso, como CPU, memoria, región, etc.
</ParamField>

## Mejores Prácticas

<Tip>
  **Elige la unidad adecuada**: usa milisegundos para operaciones breves, segundos para funciones y minutos para recursos de ejecución prolongada.
</Tip>

<Warning>
  **Cronometraje preciso**: utiliza `Date.now()` o `performance.now()` para un seguimiento temporal preciso, especialmente para funciones sin servidor.
</Warning>
