# অ্যাপ্লিকেশন এবং সাবস্ক্রাইবার পরিসংখ্যান

## getAppStats

একটি নির্দিষ্ট অ্যাপের জন্য একটি নির্ধারিত সময়কালের পরিসংখ্যান পান।

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

##### রিকোয়েস্ট বডির প্যারামিটার

| নাম   <div style="width:150px"></div>         | আবশ্যক | প্রকার   | বিবরণ                                                                                      |
|--------------|----------|--------|--------------------------------------------------------------------------------------------------|
| `auth`       | হ্যাঁ      | string | Pushwoosh কন্ট্রোল প্যানেল থেকে [API অ্যাক্সেস টোকেন](/bn/developer/api-reference/api-access-token/)।   |
| `application`| হ্যাঁ      | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/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`](/bn/developer/api-reference/scheduled-requests#getresults) অনুরোধ প্রয়োজন।
</Aside>

##### রেসপন্স বডি

| ফিল্ড   <div style="width:150px"></div>   | প্রকার   | বিবরণ                                                                                              |
|-------------|--------|----------------------------------------------------------------------------------------------------------|
| `request_id`| string | শিডিউল করা অনুরোধের আইডি। আরও বিস্তারিত জানতে [`/getResults`](/bn/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 অ্যাক্সেস টোকেন](/bn/developer/api-reference/api-access-token/)।   |
| `application`| হ্যাঁ      | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/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`

##### হেডার

| নাম       <div style="width:150px"></div>        | আবশ্যক | বিবরণ                                                                                                  |  
|-----------------|----------|--------------------------------------------------------------------------------------------------------------|  
| Authorization   | হ্যাঁ      | [API অ্যাক্সেস টোকেন](/bn/developer/api-reference/api-access-token/) এই ফরম্যাটে: `Key PKX.......NHg`।          |  
| Content-Type    | হ্যাঁ      |  `application/json`-এ সেট করতে হবে।                                                                           |  

##### রিকোয়েস্ট বডির প্যারামিটার

| নাম       <div style="width:150px"></div>         | আবশ্যক | প্রকার   | বিবরণ                                                              |  
|------------------|----------|--------|--------------------------------------------------------------------------|  
| application_code | হ্যাঁ      | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/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 কী বা টোকেন পরীক্ষা করুন।
  </TabItem>

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

    **ব্যাখ্যা**: নির্দিষ্ট অ্যাপ কোডের জন্য অ্যাক্সেস অস্বীকার করা হয়েছে।
  </TabItem>

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

    **ব্যাখ্যা**: অ্যাপ কোডটি পাওয়া যায়নি বা এর অস্তিত্ব নেই।
  </TabItem>
</Tabs>

### টাইমস্ট্যাম্প ব্যবধানের নিয়ম  

<Aside type="note">
অনুগ্রহ করে বিবেচনা করুন যে রেসপন্সে টাইমস্ট্যাম্পগুলির মধ্যে ব্যবধান আপনার অনুরোধে পাঠানো সময়কালের উপর নির্ভর করে, যা নিম্নরূপ:

* যদি আপনি এক বছরের বেশি সময়কালের জন্য পরিসংখ্যান অনুরোধ করেন, তাহলে পরিসংখ্যান টাইমস্ট্যাম্পের ব্যবধান হবে এক বছর
* যদি পরিসংখ্যানের সময়কাল এক বছরের সমান হয়, তাহলে রেসপন্সের টাইমস্ট্যাম্পগুলির মধ্যে ব্যবধান হবে এক মাস
* এক মাসের বেশি কিন্তু এক বছরের কম সময়কালের জন্য, প্রতিদিনের পরিসংখ্যান ফেরত দেওয়া হবে
* এক মাসের কম সময়কালের জন্য, রেসপন্সে প্রতি ঘণ্টার পরিসংখ্যান অন্তর্ভুক্ত থাকবে
</Aside>

| অনুরোধ করা সময়কাল   <div style="width:350px"></div>    | রেসপন্সে ব্যবধান   <div style="width:350px"></div>   |  
|-------------------|--------------------|  
| ১ বছরের বেশি  | ১ বছর              |  
| ১ বছর           | ১ মাস             |  
| ১ মাস - ১ বছর | ১ দিন               |  
| ১ মাসের কম| ১ ঘণ্টা              |