# 애플리케이션 및 구독자 통계

## getAppStats

지정된 기간 동안 특정 앱의 통계를 가져옵니다.

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

##### 요청 본문 파라미터

| 이름   <div style="width:150px"></div>         | 필수 | 타입   | 설명                                                                                      |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth`       | 예      | string | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-access-token/).   |
| `application`| 예      | string | [Pushwoosh 애플리케이션 코드](/ko/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",    // 필수. Pushwoosh 제어판의 API 액세스 토큰
    "application": "XXXXX-XXXXX",      // 필수. Pushwoosh 애플리케이션 코드
    "datefrom": "2013-06-04 00:00:00", // 필수. 보고 기간의 시작 날짜 및 시간
    "dateto": "2013-06-07 00:00:00"    // 필수. 보고 기간의 종료 날짜 및 시간
  }
}
```



##### 응답 예시

```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "request_id": "c93a202f439235f9adaaa06d651548ab"
  }
}
```
### 통계 이해하기

통계는 지정된 기간 내에 애플리케이션, 기기 또는 메시지에 대해 등록된 작업을 표시합니다.

보고서는 다음 규칙에 따라 자동으로 집계됩니다:
- **연간**: 기간이 1년보다 긴 경우.
- **월간**: 기간이 1개월보다 긴 경우.
- **일간**: 기간이 1일보다 긴 경우.
- **시간별**: 기간이 3시간보다 긴 경우.
- **분 단위**: 그 외 모든 경우.

##### 작업 유형

- **애플리케이션 수준**: `_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`](/ko/developer/api-reference/scheduled-requests#getresults) 요청이 필요합니다.
</Aside>

##### 응답 본문

| 필드   <div style="width:150px"></div>   | 타입   | 설명                                                                                              |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | 예약된 요청 ID. 자세한 내용은 [`/getResults`](/ko/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 | Pushwoosh 제어판의 [API 액세스 토큰](/ko/developer/api-reference/api-access-token/).   |
| `application`| 예      | string | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code)                                                                     |  

**요청 예시**

```json
{
  "request": {
    "auth": "yxoPUlwqm…………pIyEX4H", // 필수. Pushwoosh 제어판의 API 액세스 토큰
    "application": "XXXXX-XXXXX"    // 필수. 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

특정 기간 동안의 앱 구독자 통계를 검색합니다.

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

##### 헤더

| 이름       <div style="width:150px"></div>        | 필수 | 설명                                                                                                  |  
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|  
| Authorization   | 예      | `Key PKX.......NHg` 형식의 [API 액세스 토큰](/ko/developer/api-reference/api-access-token/).          |  
| Content-Type    | 예      |  `application/json`으로 설정해야 합니다.                                                                           |  

##### 요청 본문 파라미터

| 이름       <div style="width:150px"></div>         | 필수 | 타입   | 설명                                                              |  
|------------------|----------|--------|--------------------------------------------------------------------------|  
| application_code | 예      | string | [Pushwoosh 애플리케이션 코드](/ko/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 앱 코드
   "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: 성공">
    ```json
    {
      "statistics": [{
        "timestamp": "YYYY-MM-DD hh:mm:ss",
        "platform": 1,
        "push_enabled": 100,
        "push_disabled": 100
      }]
    }
    ```

    **설명**: 요청이 성공했으며 통계가 반환됩니다.
  </TabItem>

  <TabItem label="400: 잘못된 요청">
    ```json
    {
      // 응답
    }
    ```

    **설명**: 요청에 잘못된 구문이나 파라미터가 있습니다.
  </TabItem>

  <TabItem label="500: 내부 서버 오류">
    ```json
    {
      // 응답
    }
    ```

    **설명**: 서버에서 오류가 발생했습니다. 나중에 다시 시도하세요.
  </TabItem>

  <TabItem label="401: 인증되지 않음">
    ```json
    {
      // 응답
    }
    ```

    **설명**: 인증에 실패했습니다. API 키 또는 토큰을 확인하세요.
  </TabItem>

  <TabItem label="403: 접근 금지">
    ```json
    {
      // 응답
    }
    ```

    **설명**: 지정된 앱 코드에 대한 접근이 거부되었습니다.
  </TabItem>

  <TabItem label="404: 찾을 수 없음">
    ```json
    {
      // 응답
    }
    ```

    **설명**: 앱 코드를 찾을 수 없거나 존재하지 않습니다.
  </TabItem>
</Tabs>

### 타임스탬프 간격 규칙  

<Aside type="note">
응답의 타임스탬프 간격은 요청에서 보낸 기간에 따라 다음과 같이 달라진다는 점을 고려해 주세요:

* 1년보다 긴 기간의 통계를 요청하면 통계 타임스탬프 간격은 1년이 됩니다.
* 통계 기간이 1년과 같으면 응답의 타임스탬프 간격은 1개월이 됩니다.
* 1개월보다 길지만 1년 미만인 기간의 경우 매일의 통계가 반환됩니다.
* 1개월 미만의 기간의 경우 응답에는 매 시간의 통계가 포함됩니다.
</Aside>

| 요청 기간   <div style="width:350px"></div>    | 응답의 간격   <div style="width:350px"></div>   |  
|-------------------|--------------------|  
| 1년 이상  | 1년              |  
| 1년           | 1개월             |  
| 1개월 - 1년 | 1일               |  
| 1개월 미만| 1시간              |