# Estatísticas de aplicativos e assinantes

## getAppStats

Obtenha as estatísticas de um aplicativo específico para um período de tempo definido.

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

##### Parâmetros do corpo da solicitação

| Nome <div style="width:150px"></div> | Obrigatório | Tipo | Descrição |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Sim | string | [Token de acesso à API](/pt/developer/api-reference/api-access-token/) do Painel de Controle Pushwoosh. |
| `application`| Sim | string | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| `datefrom` | Sim | string | Data e hora de início do período do relatório. Formato: `Y-m-d H:i:s`. |
| `dateto` | Sim | string | Data e hora de término do período do relatório. Formato: `Y-m-d H:i:s`. |

##### Exemplo de solicitação
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // obrigatório. Token de acesso à API do Painel de Controle Pushwoosh
    "application": "XXXXX-XXXXX",      // obrigatório. Código do aplicativo Pushwoosh
    "datefrom": "2013-06-04 00:00:00", // obrigatório. Data e hora, início do período do relatório
    "dateto": "2013-06-07 00:00:00"    // obrigatório. Data e hora, fim do período do relatório
  }
}
```

##### Exemplo de resposta

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### Entendendo as estatísticas

As estatísticas exibem ações registradas para um aplicativo, dispositivo ou mensagem dentro do período de tempo especificado.

Os relatórios são agregados automaticamente usando as seguintes regras:
- **Anual**: Se o período for maior que um ano.
- **Mensal**: Se o período for maior que um mês.
- **Diário**: Se o período for maior que um dia.
- **Por hora**: Se o período for maior que três horas.
- **Por minuto**: Em todos os outros casos.

##### Tipos de ação

- **Nível do Aplicativo**: `_open_`, `_install_`
- **Nível do Dispositivo**: `_register_`, `_unregister_`
- **Nível da Mensagem**: `_send_`, `_open_`

##### Formato da resposta
Todos os objetos de estatísticas têm o mesmo formato:
| Campo <div style="width:150px"></div> | Tipo | Descrição |
|------------|--------|----------------------------------------------------|
| `formatter`| string | Escala do relatório: anual, mensal, diário, por hora, por minuto. |
| `rows` | list | Contém dados do relatório para cada ação registrada. |

Cada linha do relatório contém:

| Campo <div style="width:150px"></div> | Tipo | Descrição |
|-----------|--------|------------------------------------------|
| `count` | int | Número de ações registradas. |
| `action` | string | O tipo de ação registrada. |
| `datetime`| string | Data formatada: `Y-m-d H:i:s`. |

### Recuperando resultados de solicitações agendadas

<Aside type="caution" title="Importante">
Como em toda solicitação agendada, `/getAppStats` requer uma solicitação adicional de [`/getResults`](/pt/developer/api-reference/scheduled-requests#getresults).
</Aside>

##### Corpo da resposta

| Campo <div style="width:150px"></div> | Tipo | Descrição |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | ID da solicitação agendada. Consulte [`/getResults`](/pt/developer/api-reference/scheduled-requests#getresults) para mais detalhes. |

##### Corpo da resposta agendada (/getResults)

| Campo <div style="width:150px"></div> | Tipo | Descrição |
|--------------|------------|-----------------------------------|
| `applications`| dictionary | Estatísticas para aplicativos. |
| `devices` | dictionary | Estatísticas para dispositivos. |
| `messages` | dictionary | Estatísticas para mensagens. |

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

## getApplicationSubscribersStats

Exibe a lista de assinantes do aplicativo agrupada pelos tipos de seus dispositivos.

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

##### Corpo da Solicitação

| Nome <div style="width:150px"></div> | Obrigatório | Tipo | Descrição |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Sim | string | [Token de acesso à API](/pt/developer/api-reference/api-access-token/) do Painel de Controle Pushwoosh. |
| `application`| Sim | string | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |

**Exemplo de solicitação**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle Pushwoosh
    "application": "XXXXX-XXXXX"    // obrigatório. Código do aplicativo 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 as estatísticas de assinantes do aplicativo para um período de tempo.

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

##### Cabeçalhos

| Nome <div style="width:150px"></div> | Obrigatório | Descrição |
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|
| Authorization | Sim | [Token de acesso à API](/pt/developer/api-reference/api-access-token/) no formato: `Key PKX.......NHg`. |
| Content-Type | Sim | Deve ser definido como `application/json`. |

##### Parâmetros do corpo da solicitação

| Nome <div style="width:150px"></div> | Obrigatório | Tipo | Descrição |
|------------------|----------|--------|--------------------------------------------------------------------------|
| application_code | Sim | string | [Código do aplicativo Pushwoosh](/pt/developer/api-reference/api-identifiers/#application-code) |
| timestamp_from | Sim | string | Data e hora de início do período de estatísticas (formato: `YYYY-MM-DD hh:mm:ss`, UTC+0). |
| timestamp_to | Sim | string | Data e hora de término do período de estatísticas (formato: `YYYY-MM-DD hh:mm:ss`, UTC+0). |

**Exemplo de solicitação**
```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 do aplicativo Pushwoosh
   "timestamp_from": "2022-08-01 00:00:00",  // UTC+0
   "timestamp_to": "2022-09-01 00:00:00"     // UTC+0
}'
```

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

    **Explicação**: A solicitação foi bem-sucedida e as estatísticas são retornadas.
  </TabItem>

  <TabItem label="400: Solicitação Inválida">
    ```json
    {
      // Resposta
    }
    ```

    **Explicação**: A solicitação tinha sintaxe ou parâmetros inválidos.
  </TabItem>

  <TabItem label="500: Erro Interno do Servidor">
    ```json
    {
      // Resposta
    }
    ```

    **Explicação**: O servidor encontrou um erro. Tente novamente mais tarde.
  </TabItem>

  <TabItem label="401: Não Autorizado">
    ```json
    {
      // Resposta
    }
    ```

    **Explicação**: A autenticação falhou. Verifique sua chave de API ou token.
  </TabItem>

  <TabItem label="403: Proibido">
    ```json
    {
      // Resposta
    }
    ```

    **Explicação**: Acesso negado para o código do aplicativo especificado.
  </TabItem>

  <TabItem label="404: Não Encontrado">
    ```json
    {
      // Resposta
    }
    ```

    **Explicação**: O código do aplicativo não foi encontrado ou não existe.
  </TabItem>
</Tabs>

### Regras de intervalo de timestamp

<Aside type="note">
Leve em consideração que os intervalos entre os timestamps na resposta dependem do período que você envia em sua solicitação, da seguinte forma:

* se você solicitar as estatísticas para um período maior que um ano, o intervalo dos timestamps das estatísticas será de um ano
* se o período das estatísticas for igual a um ano, o intervalo entre os timestamps da resposta será igual a um mês
* para períodos maiores que um mês, mas menores que um ano, serão retornadas estatísticas para cada dia
* para períodos menores que um mês, a resposta incluirá estatísticas para cada hora
</Aside>

| Período solicitado <div style="width:350px"></div> | Intervalo na resposta <div style="width:350px"></div> |
|-------------------|--------------------|
| Mais de 1 ano | 1 ano |
| 1 ano | 1 mês |
| 1 mês - 1 ano | 1 dia |
| Menos de 1 mês| 1 hora |