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

# Eventos de sandbox

Los eventos de sandbox proporcionan una línea de tiempo consultable de las operaciones clave del ciclo de vida del sandbox. Puedes usar los eventos para la resolución de problemas, auditorías, análisis de uso y conciliación de facturación.

## Consultar eventos de sandbox

Usa la API de eventos para listar los eventos de sandbox de tu cuenta. Puedes filtrar eventos por sandbox, plantilla, tipo de evento, estado e intervalo de tiempo.

### Consultar eventos usando los SDK

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox'

  const result = await Sandbox.getEvents({
    sandboxID: 'iq721h44siv24wmyrh5oc',
    events: ['create', 'pause', 'resume', 'connect', 'timeout', 'delete'],
    limit: 10,
    offset: 0,
  })

  console.log('Events:', result.items)

  if (result.hasMore) {
    const nextPage = await Sandbox.getEvents({
      sandboxID: 'iq721h44siv24wmyrh5oc',
      limit: 10,
      offset: 10,
    })

    console.log('Next page:', nextPage.items)
  }
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.core import Sandbox

  result = Sandbox.get_events(
      sandbox_id="iq721h44siv24wmyrh5oc",
      events=["create", "pause", "resume", "connect", "timeout", "delete"],
      limit=10,
      offset=0,
  )

  print("Events:", result.items)

  if result.has_more:
      next_page = Sandbox.get_events(
          sandbox_id="iq721h44siv24wmyrh5oc",
          limit=10,
          offset=10,
      )

      print("Next page:", next_page.items)
  ```
</CodeGroup>

### Consultar eventos de una instancia de sandbox

Si ya tienes una instancia de sandbox, usa el método de eventos a nivel de instancia para consultar los eventos de ese sandbox.

<CodeGroup>
  ```js JavaScript & TypeScript icon="js" theme={"system"}
  import { Sandbox } from 'novita-sandbox'

  const sandbox = await Sandbox.create()
  const result = await sandbox.getEvents({
    events: ['create', 'pause', 'resume', 'connect', 'timeout', 'delete'],
    limit: 10,
  })

  console.log(result.items)
  ```

  ```python Python icon="python" theme={"system"}
  from novita_sandbox.core import Sandbox

  sandbox = Sandbox.create()
  result = sandbox.get_events(
      events=["create", "pause", "resume", "connect", "timeout", "delete"],
      limit=10,
  )

  print(result.items)
  ```
</CodeGroup>

## Filtrar eventos

Usa parámetros de consulta para acotar la línea de tiempo de eventos.

| Opción       | Tipo     | Obligatorio | Predeterminado / Límite                                 | Descripción                                                                                                                               |
| ------------ | -------- | ----------- | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `startTime`  | `int64`  | No          | El valor predeterminado es `endTime - 30 days`          | Hora de inicio de la consulta como marca de tiempo Unix en segundos. El intervalo es inclusivo.                                           |
| `endTime`    | `int64`  | No          | El valor predeterminado es la hora actual               | Hora de finalización de la consulta como marca de tiempo Unix en segundos. Debe ser mayor que `startTime`.                                |
| `sandboxID`  | `string` | No          | -                                                       | Filtrar por ID de sandbox. Se admite la coincidencia parcial.                                                                             |
| `templateID` | `string` | No          | -                                                       | Filtrar por ID de plantilla. Se admite la coincidencia parcial.                                                                           |
| `events`     | `string` | No          | El valor predeterminado es el conjunto de eventos clave | Tipos de evento separados por comas. El conjunto actual de eventos clave es `create`, `pause`, `resume`, `connect`, `timeout` y `delete`. |
| `state`      | `string` | No          | -                                                       | Filtrar por estado del evento, como `success` o un estado de error.                                                                       |
| `orderAsc`   | `bool`   | No          | `false`                                                 | Ordenar eventos por `recordAt` en orden ascendente. De forma predeterminada, los eventos se devuelven en orden descendente.               |
| `offset`     | `int32`  | No          | Predeterminado `0`, mínimo `0`                          | Número de eventos que se omitirán.                                                                                                        |
| `limit`      | `int32`  | No          | Predeterminado `10`, mínimo `1`, máximo `100`           | Número máximo de eventos que se devolverán.                                                                                               |

<Note>
  Los campos de tiempo usan marcas de tiempo Unix en segundos. No pases marcas de tiempo en milisegundos.

  El intervalo máximo de tiempo de consulta es de 60 días. Para líneas de tiempo más largas, divide las solicitudes en varios intervalos de tiempo más pequeños.
</Note>

## Paginación

Los eventos usan paginación basada en desplazamiento. Comienza con `offset: 0`; si `hasMore` es `true`, solicita la siguiente página con `offset + limit`. El valor máximo de `limit` es 100.

## Campos de respuesta

La respuesta de eventos incluye un arreglo `items` y metadatos de paginación.

| Campo     | Descripción                                                                    |
| --------- | ------------------------------------------------------------------------------ |
| `items`   | Lista de eventos de sandbox que coinciden con la consulta.                     |
| `total`   | Número total de eventos que coinciden con la consulta, antes de la paginación. |
| `hasMore` | Indica si hay más eventos disponibles después de la página actual.             |

Cada elemento de `items` tiene los siguientes campos.

| Campo          | Descripción                                                                                                   |
| -------------- | ------------------------------------------------------------------------------------------------------------- |
| `eventID`      | ID único del evento.                                                                                          |
| `recordAt`     | Hora de registro del evento como marca de tiempo Unix en segundos.                                            |
| `templateID`   | ID de plantilla usado por el sandbox.                                                                         |
| `templateName` | Nombre de plantilla usado por el sandbox.                                                                     |
| `sandboxID`    | ID de sandbox.                                                                                                |
| `eventName`    | Tipo de evento, como `create`, `pause`, `resume`, `connect`, `timeout` o `delete`.                            |
| `state`        | Estado del evento.                                                                                            |
| `errorMsg`     | Mensaje de error cuando el evento falló o encontró una excepción. Normalmente está vacío cuando no hay error. |
| `statusCode`   | Código de estado HTTP asociado con la operación, cuando está disponible.                                      |

## Respuesta de ejemplo

```json theme={"system"}
{
  "items": [
    {
      "eventID": "evt_123",
      "recordAt": 1766650000,
      "templateID": "tmpl_abc",
      "templateName": "ubuntu-base",
      "sandboxID": "i3vrzzatkxojecvfuesnz",
      "eventName": "create",
      "state": "success",
      "errorMsg": "",
      "statusCode": 200
    }
  ],
  "total": 1,
  "hasMore": false
}
```
