# Statistiques de l'application et des abonnés

## getAppStats

Obtenez les statistiques d'une application spécifique pour une période définie.

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

##### Paramètres du corps de la requête

| Nom <div style="width:150px"></div> | Requis | Type | Description |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Oui | string | [Jeton d'accès API](/fr/developer/api-reference/api-access-token/) depuis le Panneau de Contrôle Pushwoosh. |
| `application`| Oui | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |
| `datefrom` | Oui | string | Date et heure de début de la période de rapport. Format : `Y-m-d H:i:s`. |
| `dateto` | Oui | string | Date et heure de fin de la période de rapport. Format : `Y-m-d H:i:s`. |

##### Exemple de requête
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // requis. Jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX",      // requis. Code d'application Pushwoosh
    "datefrom": "2013-06-04 00:00:00", // requis. Date et heure, début de la période de rapport
    "dateto": "2013-06-07 00:00:00"    // requis. Date et heure, fin de la période de rapport
  }
}
```



##### Exemple de réponse

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### Comprendre les statistiques

Les statistiques affichent les actions enregistrées pour une application, un appareil ou un message dans le laps de temps spécifié.

Les rapports sont automatiquement agrégés en utilisant les règles suivantes :
- **Annuel** : Si la période est supérieure à un an.
- **Mensuel** : Si la période est supérieure à un mois.
- **Quotidien** : Si la période est supérieure à un jour.
- **Horaire** : Si la période est supérieure à trois heures.
- **Par minute** : Dans tous les autres cas.

##### Types d'action

- **Niveau de l'application** : `_open_`, `_install_`
- **Niveau de l'appareil** : `_register_`, `_unregister_`
- **Niveau du message** : `_send_`, `_open_`

##### Format de la réponse
Tous les objets de statistiques ont le même format :
| Champ <div style="width:150px"></div> | Type | Description |
|------------|--------|----------------------------------------------------|
| `formatter`| string | Échelle du rapport : yearly, monthly, daily, hourly, minutely. |
| `rows` | list | Contient les données du rapport pour chaque action enregistrée. |

Chaque ligne du rapport contient :

| Champ <div style="width:150px"></div> | Type | Description |
|-----------|--------|------------------------------------------|
| `count` | int | Nombre d'actions enregistrées. |
| `action` | string | Le type d'action enregistrée. |
| `datetime`| string | Date formatée : `Y-m-d H:i:s`. |

### Récupération des résultats de la requête planifiée

<Aside type="caution" title="Important">
Comme pour chaque requête planifiée, `/getAppStats` nécessite une requête [`/getResults`](/fr/developer/api-reference/scheduled-requests#getresults) supplémentaire.
</Aside>

##### Corps de la réponse

| Champ <div style="width:150px"></div> | Type | Description |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | ID de la requête planifiée. Référez-vous à [`/getResults`](/fr/developer/api-reference/scheduled-requests#getresults) pour plus de détails. |

##### Corps de la réponse planifiée (/getResults)

| Champ <div style="width:150px"></div> | Type | Description |
|--------------|------------|-----------------------------------|
| `applications`| dictionary | Statistiques pour les applications. |
| `devices` | dictionary | Statistiques pour les appareils. |
| `messages` | dictionary | Statistiques pour les messages. |

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




## getApplicationSubscribersStats

Affiche la liste des abonnés de l'application groupée par types d'appareils.

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

##### Corps de la requête

| Nom <div style="width:150px"></div> | Requis | Type | Description |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Oui | string | [Jeton d'accès API](/fr/developer/api-reference/api-access-token/) depuis le Panneau de Contrôle Pushwoosh. |
| `application`| Oui | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |  

**Exemple de requête**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // requis. Jeton d'accès API depuis le Panneau de Contrôle Pushwoosh
    "application": "XXXXX-XXXXX"    // requis. Code d'application 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

Récupère les statistiques des abonnés de l'application pour une période donnée.

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

##### En-têtes

| Nom <div style="width:150px"></div> | Requis | Description |  
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|  
| Authorization | Oui | [Jeton d'accès API](/fr/developer/api-reference/api-access-token/) au format : `Key PKX.......NHg`. |  
| Content-Type | Oui | Doit être défini sur `application/json`. |  

##### Paramètres du corps de la requête

| Nom <div style="width:150px"></div> | Requis | Type | Description |  
|------------------|----------|--------|--------------------------------------------------------------------------|  
| application_code | Oui | string | [Code d'application Pushwoosh](/fr/developer/api-reference/api-identifiers/#application-code) |  
| timestamp_from | Oui | string | Date et heure de début de la période de statistiques (format : `YYYY-MM-DD hh:mm:ss`, UTC+0). |  
| timestamp_to | Oui | string | Date et heure de fin de la période de statistiques (format : `YYYY-MM-DD hh:mm:ss`, UTC+0). |  

**Exemple de requête**
```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",        // Code d'application Pushwoosh
   "timestamp_from": "2022-08-01 00:00:00",  // UTC+0
   "timestamp_to": "2022-09-01 00:00:00"     // UTC+0
}'
```

**Exemple de réponse**
```json
{
  "statistics": [{
    "timestamp": "YYYY-MM-DD hh:mm:ss", // UTC+0
    "platform": 1,
    "push_enabled": 100,
    "push_disabled": 100
  }]
}
```
**Codes de réponse** 
<Tabs>
  <TabItem label="200 : OK">
    ```json
    {
      "statistics": [{
        "timestamp": "YYYY-MM-DD hh:mm:ss",
        "platform": 1,
        "push_enabled": 100,
        "push_disabled": 100
      }]
    }
    ```

    **Explication** : La requête a réussi et les statistiques sont retournées.
  </TabItem>

  <TabItem label="400 : Mauvaise requête">
    ```json
    {
      // Réponse
    }
    ```

    **Explication** : La requête avait une syntaxe ou des paramètres invalides.
  </TabItem>

  <TabItem label="500 : Erreur interne du serveur">
    ```json
    {
      // Réponse
    }
    ```

    **Explication** : Le serveur a rencontré une erreur. Réessayez plus tard.
  </TabItem>

  <TabItem label="401 : Non autorisé">
    ```json
    {
      // Réponse
    }
    ```

    **Explication** : L'authentification a échoué. Vérifiez votre clé API ou votre jeton.
  </TabItem>

  <TabItem label="403 : Interdit">
    ```json
    {
      // Réponse
    }
    ```

    **Explication** : Accès refusé pour le code d'application spécifié.
  </TabItem>

  <TabItem label="404 : Non trouvé">
    ```json
    {
      // Réponse
    }
    ```

    **Explication** : Le code d'application n'a pas été trouvé ou n'existe pas.
  </TabItem>
</Tabs>

### Règles d'intervalle d'horodatage  

<Aside type="note">
Veuillez prendre en considération que les intervalles entre les horodatages dans la réponse dépendent de la période que vous envoyez dans votre requête comme suit :

* si vous demandez les statistiques pour une période de plus d'un an, l'intervalle des horodatages des statistiques sera d'un an
* si la période des statistiques est égale à un an, l'intervalle entre les horodatages de la réponse est égal à un mois
* pour les périodes de plus d'un mois mais de moins d'un an, les statistiques pour chaque jour seront retournées
* pour les périodes de moins d'un mois, la réponse inclura les statistiques pour chaque heure
</Aside>

| Période demandée <div style="width:350px"></div> | Intervalle dans la réponse <div style="width:350px"></div> |  
|-------------------|--------------------|  
| Plus d'un an | 1 an |  
| 1 an | 1 mois |  
| 1 mois - 1 an | 1 jour |  
| Moins d'un mois| 1 heure |