# Estadísticas de la aplicación y de los suscriptores

## getAppStats

Obtenga las estadísticas de una aplicación específica para un período de tiempo definido.

`POST` `https://api.pushwoosh.com/json/1.3/getAppStats`

##### Parámetros del cuerpo de la solicitud

| Nombre <div style="width:150px"></div> | Requerido | Tipo | Descripción |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Sí | string | [Token de acceso a la API](/es/developer/api-reference/api-access-token/) del Panel de Control de Pushwoosh. |
| `application`| Sí | string | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| `datefrom` | Sí | string | Fecha y hora de inicio del período del informe. Formato: `Y-m-d H:i:s`. |
| `dateto` | Sí | string | Fecha y hora de finalización del período del informe. Formato: `Y-m-d H:i:s`. |

##### Ejemplo de solicitud
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
    "application": "XXXXX-XXXXX",      // requerido. Código de aplicación de Pushwoosh
    "datefrom": "2013-06-04 00:00:00", // requerido. Fecha y hora, inicio del período del informe
    "dateto": "2013-06-07 00:00:00"    // requerido. Fecha y hora, fin del período del informe
  }
}
```

##### Ejemplo de respuesta

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### Entendiendo las estadísticas

Las estadísticas muestran las acciones registradas para una aplicación, dispositivo o mensaje dentro del período de tiempo especificado.

Los informes se agregan automáticamente utilizando las siguientes reglas:
- **Anual**: Si el período es superior a un año.
- **Mensual**: Si el período es superior a un mes.
- **Diario**: Si el período es superior a un día.
- **Por hora**: Si el período es superior a tres horas.
- **Por minuto**: En todos los demás casos.

##### Tipos de acción

- **Nivel de aplicación**: `_open_`, `_install_`
- **Nivel de dispositivo**: `_register_`, `_unregister_`
- **Nivel de mensaje**: `_send_`, `_open_`

##### Formato de respuesta
Todos los objetos de estadísticas tienen el mismo formato:
| Campo <div style="width:150px"></div> | Tipo | Descripción |
|------------|--------|----------------------------------------------------|
| `formatter`| string | Escala del informe: yearly, monthly, daily, hourly, minutely. |
| `rows` | list | Contiene datos del informe para cada acción registrada. |

Cada fila del informe contiene:

| Campo <div style="width:150px"></div> | Tipo | Descripción |
|-----------|--------|------------------------------------------|
| `count` | int | Número de acciones registradas. |
| `action` | string | El tipo de acción registrada. |
| `datetime`| string | Fecha formateada: `Y-m-d H:i:s`. |

### Recuperación de los resultados de la solicitud programada

<Aside type="caution" title="Importante">
Como con cada solicitud programada, `/getAppStats` requiere una solicitud adicional de [`/getResults`](/es/developer/api-reference/scheduled-requests#getresults).
</Aside>

##### Cuerpo de la respuesta

| Campo <div style="width:150px"></div> | Tipo | Descripción |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | ID de la solicitud programada. Consulte [`/getResults`](/es/developer/api-reference/scheduled-requests#getresults) para más detalles. |

##### Cuerpo de la respuesta programada (/getResults)

| Campo <div style="width:150px"></div> | Tipo | Descripción |
|--------------|------------|-----------------------------------|
| `applications`| dictionary | Estadísticas para aplicaciones. |
| `devices` | dictionary | Estadísticas para dispositivos. |
| `messages` | dictionary | Estadísticas para mensajes. |

##### Ejemplo
```json 
{
  "error": {
    "code": 0,
    "message": "OK"
  },
  "json_data": {
    "applications": {
      "formatter": "hourly",
      "rows": [{
        "count": 0,
        "action": "open",
        "datetime": "2013-06-06 00:00:00"
      }, {
        ...
      }]
    }
  }
}
```

## getApplicationSubscribersStats

Muestra la lista de suscriptores de la aplicación agrupados por los tipos de sus dispositivos.

`POST` `https://api.pushwoosh.com/json/1.3/getApplicationSubscribersStats`

##### Cuerpo de la solicitud

| Nombre <div style="width:150px"></div> | Requerido | Tipo | Descripción |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Sí | string | [Token de acceso a la API](/es/developer/api-reference/api-access-token/) del Panel de Control de Pushwoosh. |
| `application`| Sí | string | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |

**Ejemplo de solicitud**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // requerido. Token de acceso a la API desde el Panel de Control de Pushwoosh
    "application": "XXXXX-XXXXX"    // requerido. Código de aplicación de Pushwoosh
  }
}
```

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "IOS": 1,
    "ANDROID": 1,
    "OSX": 0,
    "WINDOWS": 0,
    "AMAZON": 0,
    "SAFARI": 0,
    "FIREFOX": 0
  }
}
```
</TabItem>
</Tabs>

## getSubscribersStatistics

Recupera las estadísticas de los suscriptores de la aplicación para un período de tiempo.

`POST` `https://api.pushwoosh.com/api/v2/statistics/application/getSubscribersStatistics`

##### Encabezados

| Nombre <div style="width:150px"></div> | Requerido | Descripción |
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|
| Authorization | Sí | [Token de acceso a la API](/es/developer/api-reference/api-access-token/) en el formato: `Key PKX.......NHg`. |
| Content-Type | Sí | Debe establecerse en `application/json`. |

##### Parámetros del cuerpo de la solicitud

| Nombre <div style="width:150px"></div> | Requerido | Tipo | Descripción |
|------------------|----------|--------|--------------------------------------------------------------------------|
| application_code | Sí | string | [Código de aplicación de Pushwoosh](/es/developer/api-reference/api-identifiers/#application-code) |
| timestamp_from | Sí | string | Fecha y hora de inicio del período de estadísticas (formato: `YYYY-MM-DD hh:mm:ss`, UTC+0). |
| timestamp_to | Sí | string | Fecha y hora de finalización del período de estadísticas (formato: `YYYY-MM-DD hh:mm:ss`, UTC+0). |

**Ejemplo de solicitud**
```shell
curl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/application/getSubscribersStatistics' \
--header 'Authorization: Key 3a2X......828JreCk48f' \
--header 'Content-Type: application/json' \
--data-raw '{
   "application_code": "12345-67890",        // Código de la aplicación Pushwoosh
   "timestamp_from": "2022-08-01 00:00:00",  // UTC+0
   "timestamp_to": "2022-09-01 00:00:00"     // UTC+0
}'
```

**Ejemplo de respuesta**
```json
{
  "statistics": [{
    "timestamp": "YYYY-MM-DD hh:mm:ss", // UTC+0
    "platform": 1,
    "push_enabled": 100,
    "push_disabled": 100
  }]
}
```
**Códigos de respuesta**
<Tabs>
  <TabItem label="200: OK">
    ```json
    {
      "statistics": [{
        "timestamp": "YYYY-MM-DD hh:mm:ss",
        "platform": 1,
        "push_enabled": 100,
        "push_disabled": 100
      }]
    }
    ```

    **Explicación**: La solicitud fue exitosa y se devuelven las estadísticas.
  </TabItem>

  <TabItem label="400: Solicitud incorrecta">
    ```json
    {
      // Respuesta
    }
    ```

    **Explicación**: La solicitud tenía una sintaxis o parámetros no válidos.
  </TabItem>

  <TabItem label="500: Error interno del servidor">
    ```json
    {
      // Respuesta
    }
    ```

    **Explicación**: El servidor encontró un error. Inténtelo de nuevo más tarde.
  </TabItem>

  <TabItem label="401: No autorizado">
    ```json
    {
      // Respuesta
    }
    ```

    **Explicación**: Falló la autenticación. Verifique su clave o token de API.
  </TabItem>

  <TabItem label="403: Prohibido">
    ```json
    {
      // Respuesta
    }
    ```

    **Explicación**: Acceso denegado para el código de aplicación especificado.
  </TabItem>

  <TabItem label="404: No encontrado">
    ```json
    {
      // Respuesta
    }
    ```

    **Explicación**: El código de la aplicación no se encontró o no existe.
  </TabItem>
</Tabs>

### Reglas de intervalo de marca de tiempo

<Aside type="note">
Tenga en cuenta que los intervalos entre las marcas de tiempo en la respuesta dependen del período que envíe en su solicitud de la siguiente manera:

* si solicita las estadísticas para un período superior a un año, el intervalo de las marcas de tiempo de las estadísticas será de un año
* si el período de estadísticas es igual a un año, el intervalo entre las marcas de tiempo de la respuesta es igual a un mes
* para períodos superiores a un mes pero inferiores a un año, se devolverán las estadísticas de cada día
* para períodos inferiores a un mes, la respuesta incluirá estadísticas de cada hora
</Aside>

| Período solicitado <div style="width:350px"></div> | Intervalo en la respuesta <div style="width:350px"></div> |
|-------------------|--------------------|
| Más de 1 año | 1 año |
| 1 año | 1 mes |
| 1 mes - 1 año | 1 día |
| Menos de 1 mes | 1 hora |