# API অ্যাক্সেস টোকেন

API অ্যাক্সেস টোকেন হল একটি অনন্য শনাক্তকারী যা আপনার অ্যাকাউন্টের একটি নির্দিষ্ট প্রজেক্ট বা একাধিক প্রজেক্টের জন্য নির্ধারিত হয়। এটি API-এর মাধ্যমে আপনার প্রজেক্টগুলি পরিচালনা করার জন্য আপনার অ্যাকাউন্টকে প্রমাণীকরণ করে, যার মধ্যে অ্যাকাউন্ট পরিবর্তন, বার্তা প্রেরণ, প্রজেক্ট সম্পাদনা ইত্যাদি অন্তর্ভুক্ত।

## API অ্যাক্সেস টোকেন প্রকার

Pushwoosh দুই ধরনের API অ্যাক্সেস টোকেন প্রদান করে: **সার্ভার** এবং **ডিভাইস**।

প্রতিটি টোকেন প্রকার শুধুমাত্র তার নির্দিষ্ট API স্কোপের জন্য বৈধ। ভুল টোকেন ব্যবহার করা হলে একটি প্রমাণীকরণ ত্রুটি ঘটবে।

#### সার্ভার API টোকেন

সার্ভার API টোকেন ডিভাইস API-এর অধীনে থাকা পদ্ধতিগুলি ছাড়া সমস্ত API পদ্ধতির সাথে ব্যবহৃত হয়। এটি অনুরোধের বডিতে `auth` ফিল্ডে অন্তর্ভুক্ত করা উচিত।

#### ডিভাইস API টোকেন

ডিভাইস API টোকেন একচেটিয়াভাবে ডিভাইস API পদ্ধতির সাথে ব্যবহৃত হয়। এটি `Authorization` হেডার ব্যবহার করে HTTP অনুরোধ হেডারে অন্তর্ভুক্ত করা উচিত।
নিচে সঠিক হেডার ফরম্যাটের একটি উদাহরণ দেওয়া হল:

```
Authorization: Token <device_api_token>
```
`<device_api_token>`-কে আপনার আসল ডিভাইস API টোকেন মান দিয়ে প্রতিস্থাপন করুন।

<Aside type="caution" title="যেসব পদ্ধতিতে ডিভাইস API টোকেন প্রয়োজন">

নিম্নলিখিত API পদ্ধতিগুলির অনুমোদনের জন্য **একটি ডিভাইস API টোকেন প্রয়োজন**:
- [`registerDevice`](/bn/developer/api-reference/device-api/#registerdevice)
- [`unregisterDevice`](/bn/developer/api-reference/device-api/#unregisterdevice)
- [`deleteDevice`](/bn/developer/api-reference/device-api/#deletedevice)
- [`setTags`](/bn/developer/api-reference/device-api/#settags)
- [`getTags`](/bn/developer/api-reference/device-api/#gettags)
- [`setBadge`](/bn/developer/api-reference/device-api/#setbadge)
- [`applicationOpen`](/bn/developer/api-reference/device-api/#applicationopen)
- [`pushStat`](/bn/developer/api-reference/device-api/#pushstat)
- [`messageDeliveryEvent`](/bn/developer/api-reference/device-api/#messagedeliveryevent)
- [`registerUser`](/bn/developer/api-reference/user-centric-api/#registeruser)
- [`deleteUser`](/bn/developer/api-reference/user-centric-api/#deleteuser)
- [`postEvent`](/bn/developer/api-reference/user-centric-api/#postevent)
- [`registerEmail`](/bn/developer/api-reference/email-api/#registeremail)
- [`deleteEmail`](/bn/developer/api-reference/email-api/#deleteemail)
- [`setEmailTags`](/bn/developer/api-reference/email-api/#setemailtags)
- [`registerEmailUser`](/bn/developer/api-reference/email-api/#registeremailuser)
- [`getInboxMessages`](/bn/developer/api-reference/message-inbox/#getinboxmessages)
- [`inboxStatus`](/bn/developer/api-reference/message-inbox/#inboxstatus)
</Aside>

## API অ্যাক্সেস টোকেন তৈরি এবং পরিচালনা

আপনি Pushwoosh কন্ট্রোল প্যানেলের **API Access** বিভাগে আপনার API অ্যাক্সেস টোকেন দেখতে, তৈরি করতে এবং পরিচালনা করতে পারেন। এটি অ্যাক্সেস করতে, **Settings → API Access**-এ যান।
![Pushwoosh Demo App token](/api-reference-api-access-token-1.webp)

ডিফল্টরূপে, প্রতিটি অ্যাকাউন্টে **Pushwoosh Demo App** নামে একটি টোকেন থাকে, যা একটি সার্ভার টোকেন হিসাবে সেট আপ করা হয়।

### একটি নতুন API অ্যাক্সেস টোকেন তৈরি করুন

একটি নতুন API অ্যাক্সেস টোকেন তৈরি করতে:

1. কন্ট্রোল প্যানেলের **API Access** বিভাগে যান।

2. **Generate New Token**-এ ক্লিক করুন।

3. যে উইন্ডোটি প্রদর্শিত হবে, সেখানে টোকেনের প্রকার নির্বাচন করুন:

   * [**সার্ভার**](#server-api-token) বেশিরভাগ API পদ্ধতির জন্য ব্যবহৃত হয় (ডিভাইস API পদ্ধতি বাদে)।

   * [**ডিভাইস**](#device-api-token) শুধুমাত্র ডিভাইস API পদ্ধতির জন্য ব্যবহৃত হয়।

4. টোকেনের জন্য একটি নাম লিখুন।

5. টোকেন তৈরি করতে **Generate**-এ ক্লিক করুন।

![Generate a New Token](/api-reference-api-access-token-4.webp)

> **গুরুত্বপূর্ণ:** নিশ্চিত করুন যে টোকেনটি আপনার Pushwoosh কন্ট্রোল প্যানেলের সঠিক অ্যাপে অ্যাক্সেস পেয়েছে। [আরও জানুন](#edit-token)

নতুন টোকেনটি API অ্যাক্সেস তালিকায় প্রদর্শিত হবে। সেখান থেকে, আপনি API অনুরোধে ব্যবহারের জন্য এর মান কপি করতে পারেন বা প্রয়োজন অনুযায়ী এর অ্যাক্সেস অনুমতি পরিচালনা করতে পারেন।

### একটি টোকেন পরিচালনা করুন

একটি বিদ্যমান API টোকেন পরিচালনা করতে, **API Access** বিভাগে টোকেন এন্ট্রির পাশে **তিন-ডট মেনু (⋮)**-তে ক্লিক করুন।

![Manage a token](/api-reference-api-access-token-2.webp)

নিম্নলিখিত বিকল্পগুলি উপলব্ধ আছে:

#### সমস্ত প্রজেক্টে অ্যাক্সেস দিন

টোকেনটিকে আপনার অ্যাকাউন্টের সমস্ত প্রজেক্টে অ্যাক্সেস দেয়। এটি টোকেনটিকে সমস্ত প্রজেক্ট জুড়ে API সম্পূর্ণরূপে ব্যবহার করার অনুমতি দেয়।

<Aside type="tip">
শুধুমাত্র সেই টোকেনগুলিকে সম্পূর্ণ অ্যাক্সেস দিন যাদের এটি প্রয়োজন। এটি আপনার ডেটা সুরক্ষিত রাখতে এবং অ্যাক্সেস নিয়ন্ত্রণে সহায়তা করে।
</Aside>

#### সমস্ত প্রজেক্ট থেকে অ্যাক্সেস প্রত্যাহার করুন

আপনার অ্যাকাউন্টের সমস্ত প্রজেক্ট থেকে টোকেনের অ্যাক্সেস সরিয়ে দেয়। পুনরায় অ্যাক্সেস না দেওয়া পর্যন্ত টোকেনটি আর API ব্যবহার করতে পারবে না।

#### টোকেন সম্পাদনা করুন

**Edit API Token Permissions** স্ক্রিনটি খোলে, যেখানে আপনি করতে পারেন:

* টোকেনের নাম পরিবর্তন করুন

* টোকেনের মান কপি করুন

* তালিকা থেকে প্রজেক্ট নির্বাচন বা অনির্বাচন করে টোকেনটি কোন প্রজেক্টগুলি অ্যাক্সেস করতে পারবে তা বেছে নিন

* টোকেনের অনুমতিগুলি চালু বা বন্ধ করুন: অ্যাকাউন্ট পরিবর্তন, অ্যাপ্লিকেশন পরিবর্তন, ট্যাগ পরিবর্তন, বার্তা প্রেরণ ও মুছে ফেলা

* টোকেনটি যে [অনুমোদিত IP ঠিকানা](#restrict-a-token-to-specific-ip-addresses) থেকে ব্যবহার করা যাবে তা সেট করুন (শুধুমাত্র সার্ভার টোকেন)

**Permissions** ট্যাবটি টোকেনের শেষ ব্যবহারের সময় এবং গত ৭ ও ৩০ দিনে এর কতগুলি কল প্রত্যাখ্যান করা হয়েছে তাও দেখায়।

![Edit token screen with Permissions and Usage journal tabs, usage summary, and Allowed IP addresses field](/api-reference-api-access-token-3.webp)

আপনার পরিবর্তন করা শেষ হলে, সেগুলি প্রয়োগ করতে **Save**-এ ক্লিক করুন।

<Aside type="tip">
শুধুমাত্র সেই প্রজেক্টগুলিতে টোকেনগুলিকে অ্যাক্সেস দিন যেগুলির প্রয়োজন। এটি আপনার অ্যাকাউন্ট সুরক্ষিত রাখতে এবং প্রতিটি টোকেন কী করতে পারে তা নিয়ন্ত্রণ করতে সহায়তা করে।
</Aside>

#### একটি টোকেনের ব্যবহার জার্নাল পরীক্ষা করুন

Edit API Token Permissions স্ক্রিনে **Usage journal** ট্যাবটি খুলুন এবং গত ৯০ দিনে টোকেন দিয়ে করা প্রতিটি API কল পর্যালোচনা করুন। একটি ফলাফল (Any outcome, Accepted, Completed, Refused: IP address, Refused: no rights) এবং একটি তারিখের পরিসর বেছে নিন, তারপর তালিকাটি ফিল্টার করতে **Apply**-এ ক্লিক করুন। ফিল্টার করা লগটি একটি CSV ফাইল হিসাবে ডাউনলোড করতে **Export CSV**-তে ক্লিক করুন।

![Usage journal tab with outcome and date filters and a CSV export button](/api-reference-api-access-token-5.webp)

#### টোকেন মুছুন

আপনার অ্যাকাউন্ট থেকে স্থায়ীভাবে টোকেনটি সরিয়ে দেয়।

<Aside type="caution">

এই কাজটি পূর্বাবস্থায় ফেরানো যাবে না। একবার মুছে ফেলা হলে, টোকেনটি পুনরুদ্ধার করা যাবে না। মুছে ফেলার আগে নিশ্চিত করুন যে টোকেনটি আর ব্যবহারে নেই।

</Aside>

## API অনুরোধ অনুমোদন করা

API অনুরোধ অনুমোদন করতে, আপনি যে ধরনের API পদ্ধতি কল করছেন তার উপর ভিত্তি করে সঠিক ধরনের API অ্যাক্সেস টোকেন ব্যবহার করুন:

#### সার্ভার API পদ্ধতির জন্য

অনুরোধের বডির "auth" ফিল্ডে টোকেনটি অন্তর্ভুক্ত করুন:

উদাহরণ:

```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "yxoPUlwqm…………pIyEX4H", // এখানে আপনার সার্ভার টোকেন পেস্ট করুন
    "notifications": [{
      "send_date": "now",
      "content": "Hello world"
    }]
  }
}
```

#### ডিভাইস API পদ্ধতির জন্য

**ডিভাইস টোকেন** ব্যবহার করুন। এটি নিম্নলিখিত ফরম্যাট ব্যবহার করে HTTP অনুরোধ হেডারে অন্তর্ভুক্ত করুন:

```
Authorization: Token <device_api_token>
```

`<device_api_token>`-কে আপনার আসল টোকেন মান দিয়ে প্রতিস্থাপন করুন।
<Aside type="caution">
নিশ্চিত করুন যে টোকেনের প্রকারটি আপনি যে API পদ্ধতি ব্যবহার করছেন তার সাথে মেলে। যদি টোকেনটি প্রয়োজনীয় প্রকারের সাথে না মেলে, তাহলে অনুরোধটি একটি প্রমাণীকরণ ত্রুটি ফেরত দেবে।
</Aside>

## একটি টোকেন নির্দিষ্ট IP ঠিকানায় সীমাবদ্ধ করুন

একটি সার্ভার টোকেন অনুমোদিত উৎস IP ঠিকানার একটি তালিকায় সীমাবদ্ধ করা যেতে পারে। যখন তালিকাটি সেট করা হয়, Pushwoosh শুধুমাত্র সেই টোকেন দিয়ে করা API অনুরোধগুলি গ্রহণ করে যা একটি মিলে যাওয়া ঠিকানা থেকে আসে। ডিভাইস টোকেনগুলিতে এই বিকল্পটি নেই।

একটি সার্ভার টোকেনের জন্য [**Edit token**](#edit-token) খুলুন এবং **Allowed IP addresses**-এ ঠিকানাগুলি লিখুন:

* ৫০টি পর্যন্ত এন্ট্রি যোগ করুন, IPv4 বা IPv6, প্রতিটি একটি একক ঠিকানা (`203.0.113.7`) বা একটি CIDR রেঞ্জ (`203.0.113.0/24`)।
* একটি একক ঠিকানা একটি পূর্ণ-দৈর্ঘ্যের রেঞ্জ হিসাবে সংরক্ষণ করা হয়, যেমন `203.0.113.7` হয়ে যায় `203.0.113.7/32`।
* একটি রেঞ্জ তার নেটওয়ার্ক ঠিকানায় ক্যানোনিকালাইজ করা হয়, যেমন `203.0.113.7/24` হয়ে যায় `203.0.113.0/24`।
* `0.0.0.0/0` এবং `::/0` প্রত্যাখ্যান করা হয়, কারণ তারা প্রতিটি ঠিকানার সাথে মিলে যাবে এবং কোনো সীমাবদ্ধতা প্রদান করবে না।
* টোকেনটি যেকোনো ঠিকানা থেকে ব্যবহারযোগ্য রাখতে তালিকাটি খালি রাখুন। এটি বিদ্যমান এবং নতুন টোকেনগুলির জন্য ডিফল্ট।

তালিকাটি প্রয়োগ করতে **Save**-এ ক্লিক করুন। যদি তালিকায় ৫০টির বেশি এন্ট্রি থাকে বা এমন কোনো এন্ট্রি থাকে যা একটি বৈধ ঠিকানা বা CIDR রেঞ্জ নয়, তাহলে সংরক্ষণ প্রত্যাখ্যান করা হয়।

### যখন একটি অননুমোদিত ঠিকানা থেকে অনুরোধ আসে তখন কী হয়

Pushwoosh টোকেন দিয়ে করা প্রতিটি API কলে অনুমোদিত IP ঠিকানাগুলি পরীক্ষা করে, তা v1 REST কল হোক (যেমন এই API রেফারেন্স জুড়ে নথিভুক্ত, উদাহরণস্বরূপ [Messages API](/bn/developer/api-reference/messages-api/)), একটি [Messaging API v2](/bn/developer/api-reference/messaging-api-v2/) কল, বা একটি [Customer Journey API](/bn/developer/api-reference/customer-journey-api/) কল। টোকেনের অনুমোদিত তালিকার বাইরের কোনো ঠিকানা থেকে করা অনুরোধ প্রত্যাখ্যান করা হয়।

আপনি কোন কলগুলি করছেন তার উপর ভিত্তি করে প্রতিক্রিয়ার ফরম্যাট ভিন্ন হয়:

* বার্তা প্রেরণ, বাতিল এবং মুছে ফেলা, যেমন [`createMessage`](/bn/developer/api-reference/messages-api/#createmessage), চ্যানেল-নির্দিষ্ট `create*Message` পদ্ধতি, [`cancelMessage`](/bn/developer/api-reference/messages-api/#cancelmessage), এবং [`deleteMessage`](/bn/developer/api-reference/messages-api/#deletemessage), HTTP 200 ফেরত দেয় এবং প্রতিক্রিয়া বডিতে `"status_code": 403` থাকে, যা তাদের অন্যান্য অনুমোদন ব্যর্থতার মতোই।
* অন্যান্য v1 REST কল, যেমন Applications, Tags, Geozones, Segmentation (Filters), Campaigns, Presets, Test devices, এবং Statistics APIs, একটি আসল HTTP 403 এবং একটি JSON ত্রুটি বডি ফেরত দেয়।
* **Messaging API v2** এবং **Customer Journey API** একটি `PermissionDenied` ত্রুটি সহ HTTP 403 ফেরত দেয়।

<Aside type="caution" title="অনুমোদিত তালিকার পরিবর্তনগুলি সর্বত্র প্রয়োগ হতে ১০ মিনিট পর্যন্ত সময় নেয়">
Pushwoosh ১০ মিনিটের জন্য টোকেন বৈধতা ক্যাশে করে, এবং ক্যাশে অবৈধকরণ প্রতিটি ডেটা সেন্টারে চলে। অনুমোদিত ঠিকানাগুলি সংকীর্ণ করা বা সরানো হলে যে ডেটা সেন্টারে পরিবর্তন করা হয়েছে সেখানে তা অবিলম্বে কার্যকর হয়, এবং অন্যগুলিতে ১০ মিনিটের মধ্যে কার্যকর হয়।
</Aside>