# Anwendungs- und Abonnentenstatistiken

## getAppStats

Ruft die Statistiken einer bestimmten App für einen definierten Zeitraum ab.

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

##### Parameter des Anfrage-Hauptteils

| Name <div style="width:150px"></div> | Erforderlich | Typ | Beschreibung |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Ja | string | [API-Zugriffstoken](/de/developer/api-reference/api-access-token/) aus dem Pushwoosh Control Panel. |
| `application`| Ja | string | [Pushwoosh-Anwendungscode](/de/developer/api-reference/api-identifiers/#application-code) |
| `datefrom` | Ja | string | Startdatum und -uhrzeit des Berichtszeitraums. Format: `Y-m-d H:i:s`. |
| `dateto` | Ja | string | Enddatum und -uhrzeit des Berichtszeitraums. Format: `Y-m-d H:i:s`. |

##### Beispiel für eine Anfrage
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // erforderlich. API-Zugriffstoken aus dem Pushwoosh Control Panel
    "application": "XXXXX-XXXXX",      // erforderlich. Pushwoosh-Anwendungscode
    "datefrom": "2013-06-04 00:00:00", // erforderlich. Datum und Uhrzeit, Beginn des Berichtszeitraums
    "dateto": "2013-06-07 00:00:00"    // erforderlich. Datum und Uhrzeit, Ende des Berichtszeitraums
  }
}
```



##### Beispiel für eine Antwort

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### Die Statistiken verstehen

Statistiken zeigen registrierte Aktionen für eine Anwendung, ein Gerät oder eine Nachricht innerhalb des angegebenen Zeitraums an.

Berichte werden automatisch nach den folgenden Regeln aggregiert:
- **Jährlich**: Wenn der Zeitraum länger als ein Jahr ist.
- **Monatlich**: Wenn der Zeitraum länger als ein Monat ist.
- **Täglich**: Wenn der Zeitraum länger als ein Tag ist.
- **Stündlich**: Wenn der Zeitraum länger als drei Stunden ist.
- **Minütlich**: In allen anderen Fällen.

##### Aktionstypen

- **Anwendungsebene**: `_open_`, `_install_`
- **Geräteebene**: `_register_`, `_unregister_`
- **Nachrichtenebene**: `_send_`, `_open_`

##### Antwortformat
Alle Statistikobjekte haben das gleiche Format:
| Feld <div style="width:150px"></div> | Typ | Beschreibung |
|------------|--------|----------------------------------------------------|
| `formatter`| string | Berichtsskala: jährlich, monatlich, täglich, stündlich, minütlich. |
| `rows` | list | Enthält Berichtsdaten für jede registrierte Aktion. |

Jede Berichtszeile enthält:

| Feld <div style="width:150px"></div> | Typ | Beschreibung |
|-----------|--------|------------------------------------------|
| `count` | int | Anzahl der registrierten Aktionen. |
| `action` | string | Die Art der registrierten Aktion. |
| `datetime`| string | Formatiertes Datum: `Y-m-d H:i:s`. |

### Abrufen der Ergebnisse geplanter Anfragen

<Aside type="caution" title="Wichtig">
Wie bei jeder geplanten Anfrage erfordert `/getAppStats` eine zusätzliche [`/getResults`](/de/developer/api-reference/scheduled-requests#getresults)-Anfrage.
</Aside>

##### Antwort-Hauptteil

| Feld <div style="width:150px"></div> | Typ | Beschreibung |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | ID der geplanten Anfrage. Weitere Details finden Sie unter [`/getResults`](/de/developer/api-reference/scheduled-requests#getresults). |

##### Geplanter (/getResults) Antwort-Hauptteil

| Feld <div style="width:150px"></div> | Typ | Beschreibung |
|--------------|------------|-----------------------------------|
| `applications`| dictionary | Statistiken für Anwendungen. |
| `devices` | dictionary | Statistiken für Geräte. |
| `messages` | dictionary | Statistiken für Nachrichten. |

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




## getApplicationSubscribersStats

Zeigt die Abonnentenliste der App an, gruppiert nach den Gerätetypen.

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

##### Anfrage-Hauptteil

| Name <div style="width:150px"></div> | Erforderlich | Typ | Beschreibung |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth` | Ja | string | [API-Zugriffstoken](/de/developer/api-reference/api-access-token/) aus dem Pushwoosh Control Panel. |
| `application`| Ja | string | [Pushwoosh-Anwendungscode](/de/developer/api-reference/api-identifiers/#application-code) |  

**Beispiel für eine Anfrage**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // erforderlich. API-Zugriffstoken aus dem Pushwoosh Control Panel
    "application": "XXXXX-XXXXX"    // erforderlich. Pushwoosh-Anwendungscode
  }
}
```

<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

Ruft die Abonnentenstatistiken der App für einen bestimmten Zeitraum ab.

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

##### Header

| Name <div style="width:150px"></div> | Erforderlich | Beschreibung |  
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|  
| Authorization | Ja | [API-Zugriffstoken](/de/developer/api-reference/api-access-token/) im Format: `Key PKX.......NHg`. |  
| Content-Type | Ja | Muss auf `application/json` gesetzt sein. |  

##### Parameter des Anfrage-Hauptteils

| Name <div style="width:150px"></div> | Erforderlich | Typ | Beschreibung |  
|------------------|----------|--------|--------------------------------------------------------------------------|  
| application_code | Ja | string | [Pushwoosh-Anwendungscode](/de/developer/api-reference/api-identifiers/#application-code) |  
| timestamp_from | Ja | string | Startdatum und -uhrzeit des Statistikzeitraums (Format: `YYYY-MM-DD hh:mm:ss`, UTC+0). |  
| timestamp_to | Ja | string | Enddatum und -uhrzeit des Statistikzeitraums (Format: `YYYY-MM-DD hh:mm:ss`, UTC+0). |  

**Beispiel für eine Anfrage**
```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",        // Pushwoosh-App-Code
   "timestamp_from": "2022-08-01 00:00:00",  // UTC+0
   "timestamp_to": "2022-09-01 00:00:00"     // UTC+0
}'
```

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

    **Erklärung**: Die Anfrage war erfolgreich und die Statistiken werden zurückgegeben.
  </TabItem>

  <TabItem label="400: Ungültige Anfrage">
    ```json
    {
      // Antwort
    }
    ```

    **Erklärung**: Die Anfrage hatte eine ungültige Syntax oder ungültige Parameter.
  </TabItem>

  <TabItem label="500: Interner Serverfehler">
    ```json
    {
      // Antwort
    }
    ```

    **Erklärung**: Auf dem Server ist ein Fehler aufgetreten. Versuchen Sie es später erneut.
  </TabItem>

  <TabItem label="401: Nicht autorisiert">
    ```json
    {
      // Antwort
    }
    ```

    **Erklärung**: Die Authentifizierung ist fehlgeschlagen. Überprüfen Sie Ihren API-Schlüssel oder Ihr Token.
  </TabItem>

  <TabItem label="403: Verboten">
    ```json
    {
      // Antwort
    }
    ```

    **Erklärung**: Der Zugriff für den angegebenen App-Code wurde verweigert.
  </TabItem>

  <TabItem label="404: Nicht gefunden">
    ```json
    {
      // Antwort
    }
    ```

    **Erklärung**: Der App-Code wurde nicht gefunden oder existiert nicht.
  </TabItem>
</Tabs>

### Regeln für Zeitstempelintervalle  

<Aside type="note">
Bitte beachten Sie, dass die Intervalle zwischen den Zeitstempeln in der Antwort vom Zeitraum abhängen, den Sie in Ihrer Anfrage senden, wie folgt:

* Wenn Sie die Statistiken für einen Zeitraum von mehr als einem Jahr anfordern, beträgt das Intervall der Statistik-Zeitstempel ein Jahr.
* Wenn der Statistikzeitraum einem Jahr entspricht, beträgt das Intervall zwischen den Zeitstempeln der Antwort einen Monat.
* Für Zeiträume von mehr als einem Monat, aber weniger als einem Jahr, werden Statistiken für jeden Tag zurückgegeben.
* Für Zeiträume von weniger als einem Monat enthält die Antwort Statistiken für jede Stunde.
</Aside>

| Angefragter Zeitraum <div style="width:350px"></div> | Intervall in der Antwort <div style="width:350px"></div> |  
|-------------------|--------------------|  
| Mehr als 1 Jahr | 1 Jahr |  
| 1 Jahr | 1 Monat |  
| 1 Monat - 1 Jahr | 1 Tag |  
| Weniger als 1 Monat| 1 Stunde |