# สถิติแอปพลิเคชันและผู้ติดตาม

## getAppStats

รับสถิติของแอปที่ระบุสำหรับช่วงเวลาที่กำหนด

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

##### พารามิเตอร์เนื้อหาคำขอ

| ชื่อ   <div style="width:150px"></div>         | จำเป็น | ประเภท   | คำอธิบาย                                                                                      |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth`       | ใช่      | string | [API access token](/th/developer/api-reference/api-access-token/) จาก Pushwoosh Control Panel   |
| `application`| ใช่      | string | [รหัสแอปพลิเคชัน Pushwoosh](/th/developer/api-reference/api-identifiers/#application-code)                                                                    |
| `datefrom`   | ใช่      | string | วันและเวลาเริ่มต้นของรอบการรายงาน รูปแบบ: `Y-m-d H:i:s`                            |
| `dateto`     | ใช่      | string | วันและเวลาสิ้นสุดของรอบการรายงาน รูปแบบ: `Y-m-d H:i:s`                              |

##### ตัวอย่างคำขอ
```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H",    // required. API access token from Pushwoosh Control Panel
    "application": "XXXXX-XXXXX",      // required. Pushwoosh application code
    "datefrom": "2013-06-04 00:00:00", // required. Date and time, start of the reporting period
    "dateto": "2013-06-07 00:00:00"    // required. Date and time, end of the reporting period
  }
}
```



##### ตัวอย่างการตอบกลับ

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### ทำความเข้าใจสถิติ

สถิติจะแสดงการกระทำที่ลงทะเบียนไว้สำหรับแอปพลิเคชัน อุปกรณ์ หรือข้อความภายในกรอบเวลาที่กำหนด

รายงานจะถูกรวบรวมโดยอัตโนมัติตามกฎต่อไปนี้:
- **รายปี**: หากช่วงเวลานานกว่าหนึ่งปี
- **รายเดือน**: หากช่วงเวลานานกว่าหนึ่งเดือน
- **รายวัน**: หากช่วงเวลานานกว่าหนึ่งวัน
- **รายชั่วโมง**: หากช่วงเวลานานกว่าสามชั่วโมง
- **รายนาที**: ในกรณีอื่นๆ ทั้งหมด

##### ประเภทการกระทำ

- **ระดับแอปพลิเคชัน**: `_open_`, `_install_`
- **ระดับอุปกรณ์**: `_register_`, `_unregister_`
- **ระดับข้อความ**: `_send_`, `_open_`

##### รูปแบบการตอบกลับ
ออบเจ็กต์สถิติทั้งหมดมีรูปแบบเดียวกัน:
| ฟิลด์   <div style="width:150px"></div>     | ประเภท   | คำอธิบาย                                        |
|------------|--------|----------------------------------------------------|
| `formatter`| string | มาตราส่วนรายงาน: yearly, monthly, daily, hourly, minutely |
| `rows`     | list   | มีข้อมูลรายงานสำหรับการกระทำที่ลงทะเบียนแต่ละรายการ  |

แต่ละแถวของรายงานประกอบด้วย:

| ฟิลด์  <div style="width:150px"></div>     | ประเภท   | คำอธิบาย                              |
|-----------|--------|------------------------------------------|
| `count`   | int    | จำนวนการกระทำที่ลงทะเบียน           |
| `action`  | string | ประเภทของการกระทำที่ลงทะเบียน          |
| `datetime`| string | วันที่ในรูปแบบ: `Y-m-d H:i:s`         |

### การดึงผลลัพธ์คำขอที่กำหนดเวลาไว้

<Aside type="caution" title="สำคัญ">
เช่นเดียวกับทุกคำขอที่กำหนดเวลาไว้ `/getAppStats` จำเป็นต้องมีคำขอ [`/getResults`](/th/developer/api-reference/scheduled-requests#getresults) เพิ่มเติม
</Aside>

##### เนื้อหาการตอบกลับ

| ฟิลด์   <div style="width:150px"></div>   | ประเภท   | คำอธิบาย                                                                                              |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | ID คำขอที่กำหนดเวลาไว้ โปรดดู [`/getResults`](/th/developer/api-reference/scheduled-requests#getresults) สำหรับรายละเอียดเพิ่มเติม |

##### เนื้อหาการตอบกลับที่กำหนดเวลาไว้ (/getResults)

| ฟิลด์   <div style="width:150px"></div>        | ประเภท       | คำอธิบาย                       |
|--------------|------------|-----------------------------------|
| `applications`| dictionary | สถิติสำหรับแอปพลิเคชัน    |
| `devices`     | dictionary | สถิติสำหรับอุปกรณ์         |
| `messages`    | dictionary | สถิติสำหรับข้อความ        |

##### ตัวอย่าง
```json 
{
  "error": {
    "code": 0,
    "message": "OK"
  },
  "json_data": {
    "applications": {
      "formatter": "hourly",
      "rows": [{
        "count": 0,
        "action": "open",
        "datetime": "2013-06-06 00:00:00"
      }, {
        ...
      }]
    }
  }
}
```




## getApplicationSubscribersStats

แสดงรายชื่อผู้ติดตามของแอปโดยจัดกลุ่มตามประเภทของอุปกรณ์

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

##### เนื้อหาคำขอ

| ชื่อ    <div style="width:150px"></div>        | จำเป็น | ประเภท   | คำอธิบาย                                                                                      |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth`       | ใช่      | string | [API access token](/th/developer/api-reference/api-access-token/) จาก Pushwoosh Control Panel   |
| `application`| ใช่      | string | [รหัสแอปพลิเคชัน Pushwoosh](/th/developer/api-reference/api-identifiers/#application-code)                                                                     |  

**ตัวอย่างคำขอ**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // required. API access token from Pushwoosh Control Panel
    "application": "XXXXX-XXXXX"    // required. Pushwoosh application code
  }
}
```

<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

ดึงข้อมูลสถิติผู้ติดตามแอปสำหรับช่วงเวลาหนึ่ง

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

##### Headers

| ชื่อ       <div style="width:150px"></div>        | จำเป็น | คำอธิบาย                                                                                                  |  
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|  
| Authorization   | ใช่      | [API access token](/th/developer/api-reference/api-access-token/) ในรูปแบบ: `Key PKX.......NHg`          |  
| Content-Type    | ใช่      |  ต้องตั้งค่าเป็น `application/json`                                                                           |  

##### พารามิเตอร์เนื้อหาคำขอ

| ชื่อ       <div style="width:150px"></div>         | จำเป็น | ประเภท   | คำอธิบาย                                                              |  
|------------------|----------|--------|--------------------------------------------------------------------------|  
| application_code | ใช่      | string | [รหัสแอปพลิเคชัน Pushwoosh](/th/developer/api-reference/api-identifiers/#application-code)                                     |  
| timestamp_from   | ใช่      | string | วันและเวลาเริ่มต้นของช่วงเวลาสถิติ (รูปแบบ: `YYYY-MM-DD hh:mm:ss`, UTC+0) |  
| timestamp_to     | ใช่      | string | วันและเวลาสิ้นสุดของช่วงเวลาสถิติ (รูปแบบ: `YYYY-MM-DD hh:mm:ss`, UTC+0)   |  

**ตัวอย่างคำขอ**
```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
}'
```

**ตัวอย่างการตอบกลับ**
```json
{
  "statistics": [{
    "timestamp": "YYYY-MM-DD hh:mm:ss", // UTC+0
    "platform": 1,
    "push_enabled": 100,
    "push_disabled": 100
  }]
}
```
**รหัสการตอบกลับ**
<Tabs>
  <TabItem label="200: OK">
    ```json
    {
      "statistics": [{
        "timestamp": "YYYY-MM-DD hh:mm:ss",
        "platform": 1,
        "push_enabled": 100,
        "push_disabled": 100
      }]
    }
    ```

    **คำอธิบาย**: คำขอสำเร็จและสถิติจะถูกส่งคืน
  </TabItem>

  <TabItem label="400: Bad Request">
    ```json
    {
      // Response
    }
    ```

    **คำอธิบาย**: คำขอมีไวยากรณ์หรือพารามิเตอร์ที่ไม่ถูกต้อง
  </TabItem>

  <TabItem label="500: Internal Server Error">
    ```json
    {
      // Response
    }
    ```

    **คำอธิบาย**: เซิร์ฟเวอร์พบข้อผิดพลาด โปรดลองอีกครั้งในภายหลัง
  </TabItem>

  <TabItem label="401: Unauthorized">
    ```json
    {
      // Response
    }
    ```

    **คำอธิบาย**: การรับรองความถูกต้องล้มเหลว ตรวจสอบ API key หรือ token ของคุณ
  </TabItem>

  <TabItem label="403: Forbidden">
    ```json
    {
      // Response
    }
    ```

    **คำอธิบาย**: การเข้าถึงถูกปฏิเสธสำหรับรหัสแอปที่ระบุ
  </TabItem>

  <TabItem label="404: Not Found">
    ```json
    {
      // Response
    }
    ```

    **คำอธิบาย**: ไม่พบรหัสแอปหรือไม่มีอยู่
  </TabItem>
</Tabs>

### กฎช่วงเวลาของ Timestamp

<Aside type="note">
โปรดทราบว่าช่วงเวลาระหว่าง timestamp ในการตอบกลับขึ้นอยู่กับช่วงเวลาที่คุณส่งในคำขอของคุณดังนี้:

* หากคุณขอสถิติสำหรับช่วงเวลานานกว่าหนึ่งปี ช่วงเวลาของ timestamp ของสถิติจะเป็นปี
* หากช่วงเวลาสถิติเท่ากับหนึ่งปี ช่วงเวลาระหว่าง timestamp ของการตอบกลับจะเท่ากับหนึ่งเดือน
* สำหรับช่วงเวลาที่นานกว่าหนึ่งเดือนแต่ไม่ถึงหนึ่งปี สถิติสำหรับทุกวันจะถูกส่งคืน
* สำหรับช่วงเวลาที่น้อยกว่าหนึ่งเดือน การตอบกลับจะรวมสถิติสำหรับทุกชั่วโมง
</Aside>

| ช่วงเวลาที่ร้องขอ   <div style="width:350px"></div>    | ช่วงเวลาในการตอบกลับ   <div style="width:350px"></div>   |  
|-------------------|--------------------|  
| มากกว่า 1 ปี  | 1 ปี              |  
| 1 ปี           | 1 เดือน             |  
| 1 เดือน - 1 ปี | 1 วัน               |  
| น้อยกว่า 1 เดือน| 1 ชั่วโมง              |