# ব্যবহারকারী কেন্দ্রিক API

## registerUser

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

একটি নির্দিষ্ট ডিভাইসের সাথে বাহ্যিক User ID যুক্ত করে।

#### অনুরোধের হেডার

| নাম | প্রয়োজনীয় | মান | বিবরণ |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | হ্যাঁ | Token `XXXX` | ডিভাইস API অ্যাক্সেস করার জন্য [API ডিভাইস টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token)। `XXXX` কে আপনার আসল ডিভাইস API টোকেন দিয়ে প্রতিস্থাপন করুন। |

#### অনুরোধের বডি

| নাম | প্রয়োজনীয় | টাইপ | বিবরণ |
| ----------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| userId | না | string | একটি ডিভাইসের সাথে যুক্ত করার জন্য [User ID](/bn/developer/api-reference/api-identifiers/#user-id)। যদি খালি থাকে, hwid ব্যবহার করুন। |
| application | হ্যাঁ | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code) |
| hwid | হ্যাঁ | string | [Pushwoosh HWID](/bn/developer/api-reference/api-identifiers/#hardware-id) |
| tz_offset | না | integer | ডিভাইসের জন্য সেকেন্ডে টাইমজোন অফসেট। |
| device_type | না | integer | [ডিভাইসের প্রকার](/bn/developer/api-reference/api-identifiers/#device-type)। `/registerDevice` এ সম্ভাব্য মানগুলি দেখুন। |

পরে [`/createMessage`](/bn/developer/api-reference/messages-api/#createmessage) API কলে (_users_ প্যারামিটারে) ব্যবহার করা যেতে পারে।
পুশ টোকেন পাওয়ার আগে এবং [`/registerDevice`](/bn/developer/api-reference/device-api/#registerdevice) কল করার আগে আপনি এই ফাংশনটি কল করতে পারেন।

#### অনুরোধের উদাহরণ

```json
{
  "request": {
    "userId": "user_3078a",                     // optional. If empty, use hwid
    "application": "XXXXX-XXXXX",               // required. Pushwoosh application code
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // required. Hardware device ID
    "tz_offset": -3600,                         // optional. Timezone offset in seconds
    "device_type": 3                            // optional. Device type, see /registerDevice
                                                //           for device types
  }
}
```

#### প্রতিক্রিয়ার উদাহরণ

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200, 
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

<Aside type="note">
ইমেলের জন্য, [`/registerEmailUser`](/bn/developer/api-reference/email-api/#registeremailuser) কল করুন।
</Aside>

## deleteUser

`POST` `https://api.pushwoosh.com/api/v2/device-api/deleteUser`

অ্যাপ্লিকেশনের মধ্যে নির্দিষ্ট [User ID](/bn/developer/api-reference/api-identifiers/#user-id) এর সাথে যুক্ত একজন ব্যবহারকারী এবং সমস্ত ডিভাইস মুছে ফেলে। অনুরোধটি অ্যাসিঙ্ক্রোনাসভাবে প্রক্রিয়া করা হয়, এবং ডিলিট অনুরোধ প্রক্রিয়াকরণের জন্য গৃহীত হওয়ার সাথে সাথে এন্ডপয়েন্ট `200 OK` ফেরত দেয়।

#### অনুরোধের হেডার

| নাম | প্রয়োজনীয় | মান | বিবরণ |
|---------------|----------|------------------|------------------------------------------------------------|
| Authorization | হ্যাঁ | Token `XXXX` | ডিভাইস API অ্যাক্সেস করার জন্য [API ডিভাইস টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token)। `XXXX` কে আপনার আসল ডিভাইস API টোকেন দিয়ে প্রতিস্থাপন করুন। |
| Content-Type | হ্যাঁ | application/json | |

#### অনুরোধের বডি

| নাম | প্রয়োজনীয় | টাইপ | বিবরণ |
| ----------- | -------- | ------ | --------------------------------------------------------------------------------------------------------------- |
| application | হ্যাঁ | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code) |
| user_id | হ্যাঁ | string | মুছে ফেলার জন্য [User ID](/bn/developer/api-reference/api-identifiers/#user-id)। নির্দিষ্ট অ্যাপ্লিকেশনে এই ব্যবহারকারীর সাথে যুক্ত সমস্ত ডিভাইস মুছে ফেলা হবে। |


#### অনুরোধের উদাহরণ

```json
{
  "application": "XXXXX-XXXXX",   // required. Pushwoosh application code
  "user_id": "user_3078a"         // required. User ID to delete
}
```

#### প্রতিক্রিয়ার উদাহরণ

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

##### স্ট্যাটাস কোড

| HTTP স্ট্যাটাস কোড | status_code | বিবরণ |
| ---------------- | ------------ | -------------------------------------------------- |
| 200 | 200 | ডিলিট অনুরোধ গৃহীত হয়েছে |
| 200 | 210 | আর্গুমেন্ট ত্রুটি। আরও তথ্যের জন্য status_message দেখুন। |
| 400 | N/A | ত্রুটিপূর্ণ অনুরোধ স্ট্রিং |
| 401 | N/A | অনুপস্থিত বা অবৈধ Authorization টোকেন |
| 500 | 500 | অভ্যন্তরীণ ত্রুটি |

## postEvent

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

একটি ইভেন্ট ট্রিগার করে।

#### অনুরোধের হেডার

| নাম | প্রয়োজনীয় | মান | বিবরণ |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | হ্যাঁ | Token `XXXX` | ডিভাইস API অ্যাক্সেস করার জন্য [API ডিভাইস টোকেন](/bn/developer/api-reference/api-access-token/#device-api-token)। `XXXX` কে আপনার আসল ডিভাইস API টোকেন দিয়ে প্রতিস্থাপন করুন। |


#### অনুরোধের বডি

| নাম | প্রয়োজনীয় | টাইপ | বিবরণ |
| ---------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hwid | হ্যাঁ | string | /registerDevice অনুরোধে ব্যবহৃত [হার্ডওয়্যার ডিভাইস আইডি](/bn/developer/api-reference/api-identifiers/#hardware-id)। ইভেন্ট ট্রিগারকারী ব্যবহারকারীকে শনাক্ত করতে 'userId' এর সাথে ব্যবহার করা যেতে পারে। |
| application | হ্যাঁ | string | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code) |
| event | হ্যাঁ | string | Pushwoosh কন্ট্রোল প্যানেলে তৈরি করা [ইভেন্টের নাম](/bn/developer/api-reference/api-identifiers/#event-name) হুবহু একই হতে হবে। |
| attributes | হ্যাঁ | object | ইভেন্ট অ্যাট্রিবিউট সহ JSON অবজেক্ট। যদি কোনো অ্যাট্রিবিউট পাস করার প্রয়োজন না হয় তবে এটি খালি রাখুন। |
| timestampUTC | না | integer | UTC-তে টাইমস্ট্যাম্প। |
| timestampCurrent | না | integer | স্থানীয় সময়ে টাইমস্ট্যাম্প। |
| userId | হ্যাঁ | string | ইভেন্ট ট্রিগারকারী ব্যবহারকারীর সাথে যুক্ত [User ID](/bn/developer/api-reference/api-identifiers/#user-id)। এটি HWID দ্বারা প্রতিস্থাপিত হতে পারে বা এর সাথে ব্যবহার করা যেতে পারে। |
| device_type | না | integer | [সম্ভাব্য মানগুলি দেখুন](/bn/developer/api-reference/api-identifiers/#device-type) |

অনুরোধে ইভেন্টের নাম অবশ্যই Pushwoosh কন্ট্রোল প্যানেলের ইভেন্টের নামের সাথে মিলতে হবে। মনে রাখবেন, যদি ইভেন্টের কোনো অ্যাট্রিবিউট না থাকে তবে "attributes" প্রপার্টি খালি হতে পারে (কিন্তু বাদ দেওয়া যাবে না)।

#### অনুরোধের উদাহরণ

```json
{
  "request":{ 
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // required. Hardware device ID used in a /registerDevice API.
                                                //           Can be used along with an userId to identify a 
                                                //           user who has triggered an event.
    "application": "XXXXX-XXXXX",               // required. Pushwoosh application code
    "event": "activityCompleted",               // required. Event name exactly as created in Pushwoosh Control Panel
    "attributes": {                             // required. Leave empty if no attributes need to be passed. 
      "login": "facebook",
      "success": "yes",
      "internet": "wifi"
    },
    "timestampUTC": 1435228403,                 // optional. Timestamp in UTC
    "timestampCurrent": 1435253603,             // optional. Timestamp in local time
    "userId": "someuser@user.com",              // required. A user id which is used for identification of 
                                                //           users on multiple devices. Can be replaced by
                                                //           or used along with an HWID.
    "device_type": 1                            // optional.
  }
}

```

#### প্রতিক্রিয়ার উদাহরণ

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "code": "61BC9-84DD0"
  }
}
```
</TabItem>
</Tabs>

#### রূপান্তর ইভেন্ট পাঠানো

সরাসরি আয় রিপোর্ট করার জন্য, [একটি বিদ্যমান ইভেন্ট ম্যাপ করার](/bn/product/audience-data-and-segmentation/events/conversion-events/) পরিবর্তে, ইভেন্টের নাম হিসাবে `PW_Conversion` এবং `attributes`-এ লেনদেনের `value` এবং `currency` সহ `postEvent` পাঠান:

```json
{
  "request":{
    "hwid": "8f65b16df378e7a6bece9614e1530fb2",
    "application": "XXXXX-XXXXX",
    "event": "PW_Conversion",
    "attributes": {
      "value": 49.99,               // required. Transaction amount
      "currency": "USD",            // required. ISO 4217 currency code
      "transaction_id": "txn_8f21", // optional. Your own transaction reference
      "product_id": "prod_premium"  // optional
    },
    "userId": "someuser@user.com"
  }
}
```

<Aside type="note">
`transaction_id` Pushwoosh দ্বারা আয় ডিডুপ্লিকেট করার জন্য ব্যবহৃত হয় না — এটি আপনার নিজের রিপোর্টিং এবং পুনর্মিলনের জন্য যেমন আছে তেমনই সংরক্ষণ করা হয়। যদি আপনি একই লেনদেন একাধিকবার রিপোর্ট করেন, প্রতিটি কল আলাদাভাবে রেকর্ড করা হয়। ক্যানোনিকাল ইভেন্ট এবং ইভেন্ট ম্যাপিং কীভাবে একসাথে কাজ করে তা জানতে [রূপান্তর ইভেন্ট](/bn/product/audience-data-and-segmentation/events/conversion-events/) দেখুন।
</Aside>

#### স্বয়ংক্রিয় রাজস্ব ম্যাপিং

যদি কোনো ইভেন্টে `__amount` এবং `__currency` নামের অ্যাট্রিবিউট থাকে, তাহলে এই ধরনের ইভেন্ট প্রথমবার আসার সময় Pushwoosh স্বয়ংক্রিয়ভাবে এটিকে `PW_Conversion`-এর সাথে ম্যাপ করে এবং এর জন্য রাজস্ব ট্র্যাকিং চালু করে, কোনো ম্যানুয়াল [ইভেন্ট ম্যাপিং](/bn/product/audience-data-and-segmentation/events/conversion-events/#map-an-existing-event-to-track-revenue) ছাড়াই। এটি `PW_Conversion` ছাড়া অন্য যেকোনো ইভেন্ট নামের ক্ষেত্রে প্রযোজ্য।