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

# Obtener Analytics de la página de usuario

> Obtén estadísticas de actividad de usuarios, incluyendo nombres, correos electrónicos, últimas horas de actividad, días activos y créditos de prompt usados desde la página de Teams.

<div id="overview">
  ## Descripción general
</div>

Obtén estadísticas de actividad de usuarios que aparecen en la página de Teams, incluidos nombres de usuario, emails, últimos momentos de actividad, días activos y créditos de prompt usados.

<div id="request">
  ## Solicitud
</div>

<ParamField body="service_key" type="string" required>
  Tu clave de servicio con permisos "Teams Read-only"
</ParamField>

<ParamField body="group_name" type="string">
  Filtra los resultados a usuarios de un grupo específico (opcional)
</ParamField>

<ParamField body="start_timestamp" type="string">
  Hora de inicio en formato RFC 3339 (p. ej., `2023-01-01T00:00:00Z`). **Solo afecta al cálculo de `activeDays`.** Si no se proporciona, el valor predeterminado es hace 1 año.
</ParamField>

<ParamField body="end_timestamp" type="string">
  Hora de finalización en formato RFC 3339 (p. ej., `2023-12-31T23:59:59Z`). **Solo afecta al cálculo de `activeDays`.** Si no se proporciona, el valor predeterminado es la hora actual.
</ParamField>

<div id="example-request">
  ### Ejemplo de solicitud
</div>

```bash theme={null}
curl -X POST --header "Content-Type: application/json" \
--data '{
  "service_key": "your_service_key_here",
  "group_name": "engineering_team",
  "start_timestamp": "2024-01-01T00:00:00Z",
  "end_timestamp": "2024-12-31T23:59:59Z"
}' \
https://server.codeium.com/api/v1/UserPageAnalytics
```

<div id="response">
  ## Response
</div>

<ResponseField name="userTableStats" type="array">
  Array de objetos de estadísticas de usuario

  <Expandable title="Objeto de estadísticas de usuario">
    <ResponseField name="name" type="string">
      Nombre visible del usuario
    </ResponseField>

    <ResponseField name="email" type="string">
      Dirección de correo electrónico del usuario
    </ResponseField>

    <ResponseField name="lastUpdateTime" type="string">
      Marca de tiempo de la última actividad del usuario en formato RFC 3339
    </ResponseField>

    <ResponseField name="apiKey" type="string">
      Versión con hash de la clave de la API del usuario
    </ResponseField>

    <ResponseField name="activeDays" type="number">
      Número de días en que el usuario estuvo activo dentro del intervalo de tiempo consultado (definido por `start_timestamp` y `end_timestamp`). Un día se considera activo si el usuario tuvo alguna aceptación de Autocomplete, uso de Cascade o uso de Command en ese día.
    </ResponseField>

    <ResponseField name="disableCodeium" type="boolean">
      Indica si el acceso a Windsurf ha sido deshabilitado para el usuario por un administrador. Este campo solo está presente si el acceso se ha deshabilitado explícitamente y, en ese caso, siempre tendrá el valor true.
    </ResponseField>

    <ResponseField name="role" type="string">
      Rol del usuario dentro del equipo (por ejemplo, admin, member)
    </ResponseField>

    <ResponseField name="signupTime" type="string">
      Marca de tiempo de cuándo el usuario se registró, en formato RFC 3339
    </ResponseField>

    <ResponseField name="lastAutocompleteUsageTime" type="string">
      La marca de tiempo más reciente en que se usó la modalidad Tab/Autocomplete, en formato RFC 3339
    </ResponseField>

    <ResponseField name="lastChatUsageTime" type="string">
      La marca de tiempo más reciente en que se usó la modalidad Cascade, en formato RFC 3339
    </ResponseField>

    <ResponseField name="lastCommandUsageTime" type="string">
      La marca de tiempo más reciente en que se usó la modalidad Command, en formato RFC 3339
    </ResponseField>

    <ResponseField name="promptCreditsUsed" type="number">
      El número total de créditos de prompt usados por este usuario durante el **ciclo de facturación actual**, devuelto en **centavos** (1 crédito = 100 centavos). Para obtener el uso real de créditos, divide este valor entre 100. Este valor **no** se ve afectado por los parámetros de la solicitud `start_timestamp` o `end_timestamp`. La ventana del ciclo de facturación está indicada por los campos de nivel superior `billingCycleStart` y `billingCycleEnd`.
    </ResponseField>

    <ResponseField name="teamStatus" type="string">
      El estado de pertenencia del usuario al equipo. Valores posibles: `USER_TEAM_STATUS_UNSPECIFIED`, `USER_TEAM_STATUS_PENDING`, `USER_TEAM_STATUS_APPROVED`, `USER_TEAM_STATUS_REJECTED`. Ten en cuenta que la API devuelve todos los usuarios independientemente del estado del equipo, mientras que la interfaz de usuario Manage Members solo muestra a los usuarios aprobados.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="billingCycleStart" type="string">
  El inicio del ciclo de facturación actual en formato RFC 3339. Los valores de `promptCreditsUsed` en `userTableStats` corresponden al uso dentro de este ciclo de facturación.
</ResponseField>

<ResponseField name="billingCycleEnd" type="string">
  El final del ciclo de facturación actual en formato RFC 3339. Los valores de `promptCreditsUsed` en `userTableStats` corresponden al uso dentro de este ciclo de facturación.
</ResponseField>

<div id="example-response">
  ### Ejemplo de respuesta
</div>

```json theme={null}
{
  "userTableStats": [
    {
      "name": "Alice",
      "email": "alice@windsurf.com",
      "lastUpdateTime": "2024-10-10T22:56:10.771591Z",
      "apiKey": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "activeDays": 178,
      "role": "admin",
      "signupTime": "2024-01-15T08:30:00Z",
      "lastAutocompleteUsageTime": "2024-10-10T22:56:10Z",
      "lastChatUsageTime": "2024-10-10T20:30:00Z",
      "promptCreditsUsed": 12500,
      "teamStatus": "USER_TEAM_STATUS_APPROVED"
    },
    {
      "name": "Bob",
      "email": "bob@windsurf.com",
      "lastUpdateTime": "2024-10-10T18:11:23.980237Z",
      "apiKey": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "activeDays": 210,
      "role": "member",
      "signupTime": "2024-02-01T10:00:00Z",
      "lastAutocompleteUsageTime": "2024-10-10T18:11:23Z",
      "lastChatUsageTime": "2024-10-09T14:22:00Z",
      "lastCommandUsageTime": "2024-10-08T09:15:00Z",
      "promptCreditsUsed": 8300,
      "teamStatus": "USER_TEAM_STATUS_APPROVED"
    }
  ],
  "billingCycleStart": "2024-10-01T00:00:00Z",
  "billingCycleEnd": "2024-11-01T00:00:00Z"
}
```

<div id="error-responses">
  ## Respuestas de error
</div>

<ResponseField name="error" type="string">
  Mensaje de error que describe qué salió mal
</ResponseField>

Escenarios de error comunes:

* Clave de servicio no válida o permisos insuficientes
* Formato de marca de tiempo no válido
* Grupo no encontrado
* Se superó el límite de solicitudes
