# Apple Wallet PassKit API

PassKit Designer API আপনাকে প্রোগ্রাম্যাটিকভাবে [Apple Wallet পাস](/bn/product/messaging-channels/apple-wallet-passes/) তৈরি, আপডেট, ডাউনলোড এবং পরিচালনা করতে দেয়। এটি কন্ট্রোল প্যানেলের পাস বিল্ডার দ্বারা সম্পাদিত একই অপারেশন সমর্থন করে। এটি লয়ালটি কার্ড, কুপন, ইভেন্ট টিকিট, বোর্ডিং পাস এবং স্টোর কার্ড ইস্যু করতে এবং আপনার ব্যবহারকারীদের ডিভাইসে ইতিমধ্যে ইনস্টল করা পাসে লাইভ আপডেট পুশ করতে ব্যবহার করুন।

<Aside type="note" title="পূর্বশর্ত: PassKit সার্টিফিকেট">
আপনি একটি অ্যাপ্লিকেশনের জন্য পাস তৈরি করার আগে, সেই অ্যাপ্লিকেশনের জন্য একটি iOS PassKit সাইনিং সার্টিফিকেট কনফিগার করা আবশ্যক। সার্টিফিকেটটি Pushwoosh কন্ট্রোল প্যানেলে পরিচালিত হয়। এটি ছাড়া, `create` এবং `update` অনুরোধ ব্যর্থ হয়। দেখুন [iOS-এর জন্য Apple Wallet পাস কনফিগারেশন](/bn/developer/first-steps/connect-messaging-services/ios-configuration/ios-wallet-pass-configuration/)।
</Aside>

## বেস URL

```
https://apple-passkit.svc-nue.pushwoosh.com
```

সমস্ত এন্ডপয়েন্ট HTTPS এর মাধ্যমে পরিবেশন করা হয়। অনুরোধ এবং প্রতিক্রিয়া `application/json` ব্যবহার করে, যদি না অন্যভাবে উল্লেখ করা হয়।

## অথেন্টিকেশন

প্রতিটি অনুরোধে আপনার [Pushwoosh API অ্যাক্সেস টোকেন](/bn/developer/api-reference/api-access-token/) সহ একটি `Authorization` হেডার অন্তর্ভুক্ত করতে হবে:

```
Authorization: Token <api-token>
```

টোকেনের মালিক অ্যাকাউন্টটিকে অবশ্যই `applicationCode` দ্বারা উল্লেখিত অ্যাপ্লিকেশনের মালিক হতে হবে। অন্য অ্যাকাউন্টের অন্তর্গত একটি অ্যাপ্লিকেশনের জন্য একটি অনুরোধ `403 Forbidden` ফেরত দেবে।

## কনভেনশন

*   **ফিল্ডের নামকরণ:** JSON ফিল্ড `lowerCamelCase` ব্যবহার করে (উদাহরণস্বরূপ, `passTypeIdentifier`, `serialNumber`, `backgroundColor`)।
*   **অপূরণীয় ফিল্ড:** প্রতিক্রিয়াগুলি খালি বা শূন্য-মূল্য থাকা সত্ত্বেও সমস্ত ফিল্ড অন্তর্ভুক্ত করে।
*   **বাইনারি ডেটা:** `bytes` ফিল্ড যেমন `pkpassData` এবং ইমেজ `data` JSON-এ Base64-এনকোডেড স্ট্রিং।
*   **সিরিয়াল নম্বর:** `serialNumber` সর্বদা সার্ভার দ্বারা নির্ধারিত হয় যখন একটি পাস তৈরি করা হয়। তৈরি করার সময় আপনি যে কোনো মান পাঠান তা উপেক্ষা করা হয়; এটি পরবর্তী সমস্ত অপারেশনের জন্য পাসটিকে চিহ্নিত করে।

### ত্রুটি প্রতিক্রিয়া

API অভ্যন্তরীণ স্ট্যাটাস কোডগুলিকে HTTP স্ট্যাটাস কোডে ম্যাপ করে:

| HTTP স্ট্যাটাস | অর্থ |
| :---- | :---- |
| `400 Bad Request` | অবৈধ আর্গুমেন্ট—একটি প্রয়োজনীয় ফিল্ড অনুপস্থিত বা ভুল ফর্ম্যাট করা হয়েছে। |
| `401 Unauthorized` | `Authorization` হেডার অনুপস্থিত বা অবৈধ। |
| `403 Forbidden` | অ্যাপ্লিকেশনটি কলারের অ্যাকাউন্টের অন্তর্গত নয়। |
| `404 Not Found` | পাস, টেমপ্লেট, বা অ্যাপ্লিকেশন পাওয়া যায়নি। |
| `503 Service Unavailable` | পরিষেবাটি ক্ষমতার বাইরে বা সাময়িকভাবে অনুপলব্ধ। |

## এন্ডপয়েন্ট

| মেথড | পাথ | বর্ণনা |
| :---- | :---- | :---- |
| `POST` | `/api/pass/validate` | একটি পাস কনফিগারেশন যাচাই করুন |
| `POST` | `/api/pass/create` | একটি নতুন `.pkpass` তৈরি করুন |
| `POST` | `/api/pass/update/{serialNumber}` | একটি বিদ্যমান পাস আপডেট করুন এবং ডিভাইসগুলিকে অবহিত করুন |
| `GET` | `/api/passes` | একটি অ্যাপ্লিকেশনের জন্য সমস্ত পাস তালিকাভুক্ত করুন |
| `GET` | `/api/pass/{applicationCode}/{serialNumber}` | একটি একক পাস পান |
| `GET` | `/api/pass/{applicationCode}/{serialNumber}/download` | একটি বিদ্যমান পাসের `.pkpass` ডাউনলোড করুন |
| `DELETE` | `/api/pass/{applicationCode}/{serialNumber}` | একটি পাস মুছুন |
| `GET` | `/api/pass/{serialNumber}/registrations` | একটি পাসের জন্য নিবন্ধিত ডিভাইসগুলি তালিকাভুক্ত করুন |
| `GET` | `/api/config` | অ্যাপ্লিকেশনটির PassKit কনফিগারেশন পান |
| `GET` | `/api/templates` | উপলব্ধ পাস টেমপ্লেট তালিকাভুক্ত করুন |
| `GET` | `/api/templates/{filename}` | একটি একক টেমপ্লেট পান |


## একটি পাস তৈরি করুন

একটি নতুন পাস তৈরি, সাইন এবং সংরক্ষণ করে, তারপর তার সার্ভার-নির্ধারিত সিরিয়াল নম্বর ফেরত দেয়।

`POST` `/api/pass/create`

<Aside type="tip">
`.pkpass` ফাইলটি পেতে, ফেরত আসা সিরিয়াল দিয়ে [একটি পাস ডাউনলোড করুন](#download-a-pass) (অথবা একটি [ইনস্টল লিঙ্ক / QR কোড](#share-a-pass-as-a-qr-code) তৈরি করুন) কল করুন।
</Aside>


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

| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
| :---- | :---- | :---- | :---- |
| `pass` | object | হ্যাঁ | পাস বর্ণনা করে [পাস অবজেক্ট](#pass-object)। |
| `images` | array of objects | না | [পাস ইমেজ](#pass-image-object) (আইকন, লোগো, ইত্যাদি)। একটি বৈধ পাসের জন্য `icon` এবং `logo` প্রয়োজন। |
| `userId` | string | হ্যাঁ | Pushwoosh ব্যবহারকারী আইডি যার জন্য পাসটি ইস্যু করা হয়েছে। |
| `applicationCode` | string | হ্যাঁ | [Pushwoosh অ্যাপ্লিকেশন কোড](/bn/developer/api-reference/api-identifiers/#application-code)। |

<Aside type="note">
তৈরি করার সময়, যদি `teamIdentifier`, `passTypeIdentifier`, বা `organizationName` বাদ দেওয়া হয়, তবে সেগুলি অ্যাপ্লিকেশনের কনফিগার করা সার্টিফিকেট থেকে ডিফল্ট মান গ্রহণ করে। `formatVersion` ডিফল্ট `1` হয়। `serialNumber` সার্ভার-সাইডে নির্ধারিত হয়।
</Aside>

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

```json
{
  "applicationCode": "XXXXX-XXXXX",
  "userId": "user-123",
  "pass": {
    "description": "Acme loyalty card",
    "logoText": "Acme",
    "backgroundColor": "rgb(60, 65, 76)",
    "foregroundColor": "rgb(255, 255, 255)",
    "labelColor": "rgb(255, 255, 255)",
    "storeCard": {
      "primaryFields": [
        { "key": "balance", "label": "BALANCE", "value": "1200 pts" }
      ],
      "secondaryFields": [
        { "key": "member", "label": "MEMBER", "value": "Jane Doe" }
      ]
    },
    "barcodes": [
      {
        "format": "PKBarcodeFormatQR",
        "message": "1234567890",
        "messageEncoding": "iso-8859-1"
      }
    ]
  },
  "images": [
    { "imageType": "icon", "data": "<base64>", "contentType": "image/png" },
    { "imageType": "logo", "data": "<base64>", "contentType": "image/png" }
  ]
}
```

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `serialNumber` | string | তৈরি করা পাসের সার্ভার-নির্ধারিত অনন্য পরিচয়। এটি পাস পেতে ([একটি পাস পান](#get-a-pass)) বা `.pkpass` ডাউনলোড করতে ([একটি পাস ডাউনলোড করুন](#download-a-pass)) ব্যবহার করুন। |
| `message` | string | ফলাফলের বার্তা। |

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

```json
{
  "serialNumber": "a1b2c3d4-1234-5678-9abc-def012345678",
  "message": "Pass created successfully"
}
```

## একটি পাস যাচাই করুন

একটি ফাইল তৈরি না করে Apple-এর স্পেসিফিকেশনের বিরুদ্ধে একটি পাস কনফিগারেশন পরীক্ষা করে। create কল করার আগে এটি কার্যকর।

`POST` `/api/pass/validate`

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

| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
| :---- | :---- | :---- | :---- |
| `pass` | object | হ্যাঁ | যাচাই করার জন্য [পাস অবজেক্ট](#pass-object)। |

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `valid` | boolean | পাসটি যাচাইকরণে উত্তীর্ণ হয়েছে কিনা। |
| `errors` | array of strings | ব্লকিং সমস্যা যা অবশ্যই সমাধান করতে হবে। |
| `warnings` | array of strings | নন-ব্লকিং পরামর্শ। |



## একটি পাস আপডেট করুন

নতুন বিষয়বস্তু দিয়ে পাসটি পুনরায় তৈরি করে, পুনরায় সাইন করে, তার আপডেট ট্যাগ বৃদ্ধি করে এবং পাসটি নিবন্ধনকারী প্রতিটি ডিভাইসে একটি **সাইলেন্ট পুশ নোটিফিকেশন** পাঠায়। iOS তারপর ব্যাকগ্রাউন্ডে আপডেট করা সংস্করণটি নিয়ে আসে এবং ইনস্টল করে।

`POST` `/api/pass/update/{serialNumber}`

### পাথ প্যারামিটার

| প্যারামিটার | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `serialNumber` | string | পাস তৈরি করার সময় ফেরত আসা সিরিয়াল নম্বর। |

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

| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
| :---- | :---- | :---- | :---- |
| `updates` | object | হ্যাঁ | নতুন বিষয়বস্তু সহ সম্পূর্ণ [পাস অবজেক্ট](#pass-object)। |
| `applicationCode` | string | হ্যাঁ | Pushwoosh অ্যাপ্লিকেশন কোড। |

`serialNumber` (পাথ থেকে) এবং পাসের প্রমাণীকরণ টোকেন সার্ভার দ্বারা সংরক্ষিত থাকে, আপনি যা পাঠান তা নির্বিশেষে।

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `success` | boolean | আপডেট সফল হয়েছে কিনা। |
| `updateTag` | integer | নতুন আপডেট ট্যাগ (একটি ইউনিক্স টাইমস্ট্যাম্প)। |
| `message` | string | ফলাফলের বার্তা। |



## পাসের তালিকা

একটি অ্যাপ্লিকেশনের জন্য সংরক্ষিত পাসগুলির একটি পেজিনেটেড, সাজানো তালিকা ফেরত দেয়।

`GET` `/api/passes?applicationCode=XXXXX-XXXXX&page=0&perPage=20`

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

| প্যারামিটার | টাইপ | প্রয়োজনীয় | বর্ণনা |
| :---- | :---- | :---- | :---- |
| `applicationCode` | string | হ্যাঁ | Pushwoosh অ্যাপ্লিকেশন কোড। |
| `orderBy` | string | না | সাজানোর ক্ষেত্র: `UPDATED` (ডিফল্ট) বা `CREATED`। |
| `orderDirection` | string | না | সাজানোর দিক: `DESC` (ডিফল্ট, নতুন প্রথমে) বা `ASC`। |
| `page` | integer | না | শূন্য-ভিত্তিক পেজ ইনডেক্স। ডিফল্ট `0`। |
| `perPage` | integer | না | পেজের আকার। `0` বা বাদ দিলে সার্ভার ডিফল্ট ব্যবহার করে। |

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `passes` | array of objects | [পাস রেকর্ড](#pass-record-object) এর বর্তমান পেজ। |
| `page` | integer | ফেরত আসা পেজ ইনডেক্স। |
| `perPage` | integer | এই প্রতিক্রিয়ার জন্য ব্যবহৃত পেজের আকার। |
| `total` | integer | সমস্ত পেজ জুড়ে অ্যাপ্লিকেশনটির জন্য মোট পাসের সংখ্যা। |

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

```json
{
  "passes": [ /* pass records */ ],
  "page": 0,
  "perPage": 20,
  "total": 137
}
```


## একটি পাস পান

একটি একক সংরক্ষিত পাস ফেরত দেয়, যার মধ্যে তার সম্পূর্ণ পাস অবজেক্ট অন্তর্ভুক্ত থাকে।

`GET` `/api/pass/{applicationCode}/{serialNumber}`

### পাথ প্যারামিটার

| প্যারামিটার | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `applicationCode` | string | Pushwoosh অ্যাপ্লিকেশন কোড। |
| `serialNumber` | string | পাসের সিরিয়াল নম্বর। |

### প্রতিক্রিয়া

`{ "pass": { ... } }` ফেরত দেয়, একটি একক [পাস রেকর্ড](#pass-record-object)।


## একটি পাস ডাউনলোড করুন

একটি বিদ্যমান পাসের সংরক্ষিত `.pkpass` ফাইল ফেরত দেয়।

`GET` `/api/pass/{applicationCode}/{serialNumber}/download`

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `pkpassData` | string (Base64) | `.pkpass` ফাইল। |
| `filename` | string | প্রস্তাবিত ফাইলের নাম। |


## একটি পাস মুছুন

একটি পাস রেকর্ড এবং তার সংরক্ষিত `.pkpass` ফাইল সরিয়ে দেয়।

`DELETE` `/api/pass/{applicationCode}/{serialNumber}`

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `success` | boolean | পাসটি মুছে ফেলা হয়েছে কিনা। |
| `message` | string | ফলাফলের বার্তা। |



## পাস রেজিস্ট্রেশন পান

যে ডিভাইসগুলি পাসটি যোগ করেছে এবং আপডেটের জন্য নিবন্ধিত হয়েছে তাদের তালিকা করে।

`GET` `/api/pass/{serialNumber}/registrations?applicationCode=XXXXX-XXXXX`

### প্রতিক্রিয়া

`{ "registrations": [ ... ] }` ফেরত দেয়, যেখানে প্রতিটি আইটেমের আছে:

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `deviceLibraryIdentifier` | string | Apple ডিভাইস লাইব্রেরি আইডেন্টিফায়ার। |
| `pushToken` | string | ডিভাইসের জন্য পাস পুশ টোকেন। |



## কনফিগারেশন পান

একটি অ্যাপ্লিকেশনের জন্য তার সার্টিফিকেট থেকে সমাধান করা PassKit কনফিগারেশন ফেরত দেয়।

`GET` `/api/config?applicationCode=XXXXX-XXXXX`

### প্রতিক্রিয়া

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `teamIdentifier` | string | সার্টিফিকেট থেকে Apple Team ID। |
| `passTypeIdentifier` | string | সার্টিফিকেট থেকে Pass Type ID। |
| `organizationName` | string | সার্টিফিকেট থেকে সংস্থার নাম। |
| `hasCertificate` | boolean | একটি সার্টিফিকেট কনফিগার করা আছে কিনা। |
| `webServiceUrl` | string | পাস ওয়েব পরিষেবার বেস URL। ক্লায়েন্টরা `/v1/passes/{passType}/{serial}?token={authToken}` যোগ করে একটি ইনস্টল লিঙ্ক তৈরি করে। |



## টেমপ্লেট

উপলব্ধ পাস টেমপ্লেটগুলির তালিকা করুন, অথবা একটিকে [পাস অবজেক্ট](#pass-object) হিসাবে আনুন যা আপনি একটি সূচনা বিন্দু হিসাবে ব্যবহার করতে পারেন।

`GET` `/api/templates` — `{ "templates": [ { "filename", "name", "description", "style" } ] }` ফেরত দেয়।

`GET` `/api/templates/{filename}` — `{ "template": { ...pass object... } }` ফেরত দেয়।



## একটি পাস QR কোড হিসাবে শেয়ার করুন

ব্যবহারকারীদের একটি QR কোড স্ক্যান করে (বা একটি লিঙ্কে ট্যাপ করে) একটি পাস যোগ করতে দেওয়ার জন্য, পাসের **ইনস্টল URL** একটি QR কোডে এনকোড করুন। URLটি আপনি API থেকে ইতিমধ্যে প্রাপ্ত মানগুলি থেকে তৈরি করা হয়:

```
{webServiceUrl}/v1/passes/{passTypeIdentifier}/{serialNumber}?token={authenticationToken}
```

| URL অংশ | কোথা থেকে পাবেন |
| :---- | :---- |
| `webServiceUrl` | [`GET /api/config`](#get-configuration) → `webServiceUrl` |
| `passTypeIdentifier` | [পাস রেকর্ড](#pass-record-object) → `pass.passTypeIdentifier` (তালিকা/গেট থেকে) |
| `serialNumber` | [পাস রেকর্ড](#pass-record-object) → `serialNumber` |
| `authenticationToken` | [পাস রেকর্ড](#pass-record-object) → `pass.authenticationToken` |

উদাহরণ:

```
https://apple-passkit.svc-nue.pushwoosh.com/v1/passes/pass.com.acme.loyalty/a1b2c3d4-1234-5678-9abc-def012345678?token=AbC123XyZ
```

যেকোনো QR লাইব্রেরি দিয়ে এই URLটিকে একটি QR কোড হিসাবে রেন্ডার করুন। যখন একজন ব্যবহারকারী এটি স্ক্যান করে, তখন তাদের ডিভাইস লিঙ্কটি খোলে, সর্বশেষ `.pkpass` ডাউনলোড করে, এবং Wallet তাদের এটি যোগ করার জন্য অনুরোধ করে—যা ডিভাইসটিকে আপডেটের জন্য নিবন্ধনও করে।



## অবজেক্ট রেফারেন্স

### পাস অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `formatVersion` | integer | পাস ফরম্যাট সংস্করণ। ডিফল্ট `1`। |
| `passTypeIdentifier` | string | Apple Pass Type ID (`pass.com.yourcompany.passtype`)। সার্টিফিকেট থেকে ডিফল্ট। |
| `serialNumber` | string | সার্ভার দ্বারা তৈরি করার সময় নির্ধারিত; পাসটিকে চিহ্নিত করে। |
| `teamIdentifier` | string | Apple Team ID। সার্টিফিকেট থেকে ডিফল্ট। |
| `organizationName` | string | পাসে দেখানো সংস্থার নাম। সার্টিফিকেট থেকে ডিফল্ট। |
| `description` | string | মানুষের পাঠযোগ্য বর্ণনা (Apple দ্বারা প্রয়োজনীয়)। |
| `boardingPass` / `coupon` / `eventTicket` / `storeCard` / `generic` | object | পাসের স্টাইল। **ঠিক একটি** সেট করতে হবে। দেখুন [ফিল্ড গ্রুপ](#field-group-object)। |
| `backgroundColor` | string | পটভূমির রঙ, `rgb(r, g, b)`। |
| `foregroundColor` | string | অগ্রভাগের (টেক্সট) রঙ, `rgb(r, g, b)`। |
| `labelColor` | string | ফিল্ড লেবেলের রঙ, `rgb(r, g, b)`। |
| `logoText` | string | লোগোর পাশে দেখানো টেক্সট। |
| `suppressStripShine` | boolean | স্ট্রিপ ইমেজে শাইন এফেক্ট নিষ্ক্রিয় করুন। |
| `barcodes` | array | পাসে দেখানো [বারকোড](#barcode-object)। |
| `locations` | array | [অবস্থান](#location-object) যা পাসটিকে প্রাসঙ্গিক করে তোলে। |
| `beacons` | array | [বিকন](#beacon-object) যা পাসটিকে প্রাসঙ্গিক করে তোলে। |
| `relevantDate` | string | ISO 8601 তারিখ যখন পাসটি প্রাসঙ্গিক হয়ে ওঠে। |
| `maxDistance` | integer | অবস্থানের প্রাসঙ্গিকতার জন্য সর্বোচ্চ দূরত্ব (মিটার)। |
| `expirationDate` | string | ISO 8601 মেয়াদ শেষ হওয়ার তারিখ। |
| `voided` | boolean | পাসটিকে বাতিল হিসাবে চিহ্নিত করে। |
| `groupingIdentifier` | string | সম্পর্কিত পাসগুলিকে গ্রুপ করে (ইভেন্ট টিকিট/বোর্ডিং পাস)। |
| `userInfo` | object (map) | ইচ্ছামত কী/মান অ্যাপ ডেটা। |

<Aside type="note">
`authenticationToken` এবং `webServiceUrl` পরিষেবা দ্বারা পরিচালিত হয় এবং API ক্লায়েন্টদের দ্বারা সেট করার প্রয়োজন নেই।
</Aside>

### ফিল্ড গ্রুপ অবজেক্ট

প্রতিটি পাস স্টাইল (`boardingPass`, `coupon`, `eventTicket`, `storeCard`, `generic`) [ফিল্ড](#field-object) গুলিকে এলাকায় গ্রুপ করে:

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `headerFields` | array | পাসের হেডারে দেখানো হয় (Wallet-এ স্ট্যাক করা অবস্থায় দৃশ্যমান)। |
| `primaryFields` | array | সবচেয়ে বিশিষ্ট ফিল্ড। |
| `secondaryFields` | array | প্রাথমিক ফিল্ডের নিচে। |
| `auxiliaryFields` | array | সেকেন্ডারির নিচে অতিরিক্ত ফিল্ড। |
| `backFields` | array | পাসের পিছনে দেখানো হয়। |

`boardingPass`-এ অতিরিক্তভাবে `transitType` (`PKTransitTypeAir`, `PKTransitTypeTrain`, `PKTransitTypeBus`, `PKTransitTypeBoat`, বা `PKTransitTypeGeneric`) থাকে।

### ফিল্ড অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `key` | string | পাসের মধ্যে অনন্য ফিল্ড কী। |
| `label` | string | ফিল্ড লেবেল। |
| `value` | string | ফিল্ডের মান (টেক্সট বা সংখ্যা স্ট্রিং হিসাবে)। |
| `changeMessage` | string | মান পরিবর্তন হলে দেখানো বার্তা (`%@` প্লেসহোল্ডার হিসাবে ব্যবহার করুন)। |
| `textAlignment` | string | `PKTextAlignment` মান। |
| `dateStyle` / `timeStyle` | string | তারিখ/সময় ফরম্যাটিংয়ের জন্য `PKDateStyle`। |
| `isRelative` | boolean | বর্তমান সময়ের সাপেক্ষে তারিখ দেখান। |
| `numberStyle` | string | সংখ্যা ফরম্যাটিংয়ের জন্য `PKNumberStyle`। |
| `currencyCode` | string | ISO 4217 মুদ্রা কোড। |
| `dataDetectorTypes` | array of strings | মানের উপর প্রয়োগ করার জন্য ডেটা ডিটেক্টর। |

### বারকোড অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `format` | string | `PKBarcodeFormatQR`, `PKBarcodeFormatPDF417`, `PKBarcodeFormatAztec`, বা `PKBarcodeFormatCode128`। |
| `message` | string | বারকোডে এনকোড করা ডেটা। |
| `messageEncoding` | string | টেক্সট এনকোডিং, সাধারণত `iso-8859-1`। |
| `altText` | string | বারকোডের নিচে দেখানো টেক্সট। |

### অবস্থান অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `latitude` | number | অক্ষাংশ। |
| `longitude` | number | দ্রাঘিমাংশ। |
| `altitude` | number | মিটারে উচ্চতা। |
| `relevantText` | string | এই অবস্থানের কাছাকাছি লক স্ক্রিনে দেখানো টেক্সট। |

### বিকন অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `proximityUuid` | string | iBeacon প্রক্সিমিটি UUID। |
| `major` | integer | মেজর মান। |
| `minor` | integer | মাইনর মান। |
| `relevantText` | string | এই বিকনের কাছাকাছি লক স্ক্রিনে দেখানো টেক্সট। |

### পাস ইমেজ অবজেক্ট

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `imageType` | string | `icon`, `logo`, `strip`, `background`, `footer`, `thumbnail` এর মধ্যে একটি। `icon` এবং `logo` প্রয়োজন। |
| `data` | string (Base64) | ইমেজ বাইট। |
| `contentType` | string | MIME টাইপ, উদাহরণস্বরূপ `image/png`। |

### পাস রেকর্ড অবজেক্ট

তালিকা/গেট এন্ডপয়েন্ট দ্বারা ফেরত দেওয়া হয়।

| ফিল্ড | টাইপ | বর্ণনা |
| :---- | :---- | :---- |
| `serialNumber` | string | পাসের সিরিয়াল নম্বর। |
| `passTypeIdentifier` | string | Pass Type ID। |
| `organizationName` | string | সংস্থার নাম। |
| `description` | string | পাসের বর্ণনা। |
| `createdAt` | string | তৈরির টাইমস্ট্যাম্প (RFC 3339)। |
| `updatedAt` | string | শেষ আপডেটের টাইমস্ট্যাম্প (RFC 3339)। |
| `updateTag` | integer | বর্তমান আপডেট ট্যাগ। |
| `pass` | object | সম্পাদনার জন্য সম্পূর্ণ [পাস অবজেক্ট](#pass-object)। |
| `userId` | string | Pushwoosh ব্যবহারকারী আইডি যার জন্য পাসটি ইস্যু করা হয়েছিল। |