---
title: "App Manifest حوالہ | Tajo"
description: "Stripe Apps کنفیگر کرنے کے لیے stripe-app.json manifest فائل کے لیے مکمل schema حوالہ"
url: https://tajo.io/ur/docs/stripe-apps/app-manifest/
markdown: https://tajo.io/ur/docs/stripe-apps/app-manifest.md
lang: ur-PK
author: "Set Noa"
author_url: https://tajo.io/ur/set-noa/
robots: noindex
---

ابتدائی رسائی کی درخواست کریں

اپنا پہلا نام اور دفتری ای میل پتہ درج کریں۔ ہم Tajo تک رسائی کی درخواست کی تصدیق کے لیے ایک لنک ای میل کریں گے۔

# App Manifest حوالہ

[Set Noa](https://tajo.io/ur/set-noa/)

`stripe-app.json` manifest فائل آپ کی Stripe App کے لیے مرکزی کنفیگریشن ہے۔ یہ آپ کی app کی شناخت، اجازتیں، UI views، سیکیورٹی پالیسیاں اور post-install رویہ بیان کرتی ہے۔

Caution

**صورتحال: منصوبہ بند، ابھی تیار نہیں ہوا۔** Tajo کی کوئی Stripe App نہیں ہے، اس لیے اس سیکشن کی کوئی چیز آج انسٹال نہیں کی جا سکتی۔ اس صفحے میں دیے گئے ایپ کے شناخت کار، URLs اور کریڈنشلز مثال کے طور پر رکھے گئے پلیس ہولڈرز ہیں، لائیو اینڈ پوائنٹس نہیں۔

## مکمل Manifest مثال

```json
{
  "id": "com.tajo.brevo-integration",
  "version": "1.2.0",
  "name": "Tajo for Brevo",
  "icon": "./assets/icon.png",
  "distribution_type": "public",
  "sandbox_install_compatible": true,
  "stripe_api_access_type": "oauth",
  "allowed_redirect_uris": [
    "https://tajo.io/stripe/callback",
    "https://tajo.io/stripe/oauth/complete"
  ],
  "permissions": [
    {
      "permission": "customer_read",
      "purpose": "Read customer profiles to sync with Brevo contacts"
    },
    {
      "permission": "customer_write",
      "purpose": "Update customer metadata with Brevo sync status"
    },
    {
      "permission": "charge_read",
      "purpose": "Access payment history for Brevo event tracking"
    },
    {
      "permission": "product_read",
      "purpose": "Sync product catalog to Brevo for personalized campaigns"
    },
    {
      "permission": "event_read",
      "purpose": "Read events for Brevo automation triggers"
    },
    {
      "permission": "invoice_read",
      "purpose": "Track invoice lifecycle events in Brevo"
    }
  ],
  "ui_extension": {
    "views": [
      {
        "viewport": "stripe.dashboard.customer.detail",
        "component": "CustomerDetailView"
      },
      {
        "viewport": "stripe.dashboard.customer.list",
        "component": "CustomerListView"
      },
      {
        "viewport": "stripe.dashboard.home.overview",
        "component": "OverviewView"
      },
      {
        "viewport": "stripe.dashboard.drawer.default",
        "component": "DrawerView"
      },
      {
        "viewport": "stripe.dashboard.settings",
        "component": "SettingsView"
      },
      {
        "viewport": "stripe.dashboard.onboarding",
        "component": "OnboardingView"
      }
    ],
    "content_security_policy": {
      "connect-src": [
        "https://api.example.com",
        "https://api.brevo.com"
      ],
      "image-src": [
        "https://cdn.example.com",
        "https://assets.brevo.com"
      ],
      "purpose": "Connect to Tajo API for data sync and Brevo API for contact management"
    }
  },
  "post_install_action": {
    "type": "onboarding"
  },
  "constants": {
    "API_BASE_URL": "https://api.example.com/v1",
    "SYNC_INTERVAL_SECONDS": "300"
  }
}
```

## Schema حوالہ

### اعلی سطحی Fields

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `id` | string | ہاں | reverse domain notation میں منفرد app شناخت کنندہ (slug فارمیٹ) |
| `version` | string | ہاں | Semantic version string (مثلاً `"1.2.0"`) |
| `name` | string | ہاں | marketplace پر دکھایا جانے والا نام (زیادہ سے زیادہ 35 حروف) |
| `icon` | string | ہاں | app icon فائل کا relative path (300x300 PNG یا SVG) |
| `distribution_type` | string | ہاں | marketplace کے لیے `"public"` یا اندرونی استعمال کے لیے `"private"` |
| `sandbox_install_compatible` | boolean | نہیں | آیا app sandbox/test موڈ میں انسٹال ہو سکتی ہے |
| `stripe_api_access_type` | string | نہیں | API access طریقہ: `"oauth"` یا `"api_key"` |
| `allowed_redirect_uris` | string\[\] | نہیں | install فلو کے لیے اجازت یافتہ OAuth redirect URIs |
| `permissions` | PermissionRequest\[\] | ہاں | اجازت درخواستوں کی صف |
| `ui_extension` | UIExtensionManifest | نہیں | UI extension کنفیگریشن |
| `post_install_action` | PostInstallAction | نہیں | app انسٹالیشن کے بعد اٹھایا جانے والا عمل |
| `constants` | object | نہیں | runtime پر app میں قابل رسائی key-value جوڑے |

### id

App شناخت کنندہ ایک slug-format string ہے، عموماً reverse domain notation میں:

```json
"id": "com.tajo.brevo-integration"
```

- تمام Stripe Apps میں عالمی سطح پر منفرد ہونا چاہیے
- صرف چھوٹے حروف، اعداد، hyphens اور dots استعمال کریں
- app بننے کے بعد تبدیل نہیں کیا جا سکتا
- marketplace پر app کا URL طے کرتا ہے

### version

Semantic versioning کی پیروی کرتا ہے:

```json
"version": "1.2.0"
```

- **MAJOR**: Breaking تبدیلیاں یا اہم feature اضافے
- **MINOR**: نئی خصوصیات، backward compatible
- **PATCH**: Bug fixes اور معمولی بہتری
- ہر upload کے لیے بڑھانا ضروری ہے

### distribution\_type

کنٹرول کرتا ہے کون آپ کی app انسٹال کر سکتا ہے:

| قدر | تفصیل |
| --- | --- |
| `"public"` | تمام صارفین کے لیے Stripe App Marketplace پر دستیاب |
| `"private"` | صرف آپ کے اپنے Stripe اکاؤنٹ سے انسٹال قابل |

### stripe\_api\_access\_type

تعین کرتا ہے کہ آپ کی app Stripe API سے کیسے توثیق کرتی ہے:

| قدر | تفصیل |
| --- | --- |
| `"oauth"` | توثیق کے لیے OAuth 2.0 فلو استعمال کرتا ہے (عوامی apps کے لیے تجویز شدہ) |
| `"api_key"` | restricted API keys استعمال کرتا ہے (نجی apps کے لیے موزوں) |

## PermissionRequest

ہر اجازت درخواست ایک مخصوص Stripe API اجازت بیان کرتی ہے جو app کو چاہیے:

```json
{
  "permission": "customer_read",
  "purpose": "Read customer profiles to sync with Brevo contacts"
}
```

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `permission` | string | ہاں | اجازت شناخت کنندہ ([اجازتوں کا حوالہ](https://tajo.io/ur/docs/stripe-apps/permissions) دیکھیں) |
| `purpose` | string | ہاں | انسانی پڑھنے کے قابل وضاحت کہ یہ اجازت کیوں ضروری ہے |

**مقصد کی ہدایات:**

- واضح، مخصوص وضاحتیں لکھیں جو merchants سمجھ سکیں
- بتائیں اجازت کس لیے استعمال کی جاتی ہے، نہ صرف یہ کیا دیتی ہے
- وضاحتیں جامع رکھیں (ایک جملہ)
- تکنیکی جرگن سے بچیں

## UIExtensionManifest

آپ کی app کے UI اجزاء کنفیگر کرتا ہے:

```json
{
  "ui_extension": {
    "views": [...],
    "content_security_policy": {...}
  }
}
```

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `views` | ViewManifest\[\] | ہاں | view declarations کی صف |
| `content_security_policy` | CSPRequest | نہیں | بیرونی وسائل کے لیے Content Security Policy |

## ViewManifest

ہر view ایک React component کو ایک Stripe Dashboard viewport سے ملاتا ہے:

```json
{
  "viewport": "stripe.dashboard.customer.detail",
  "component": "CustomerDetailView"
}
```

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `viewport` | string | ہاں | Dashboard کا وہ مقام جہاں یہ view render ہوگا ([Viewports حوالہ](https://tajo.io/ur/docs/stripe-apps/viewports) دیکھیں) |
| `component` | string | ہاں | render کرنے کے لیے React component کا نام (exported component نام سے مطابقت ضروری) |

ایک app مختلف viewports کے لیے متعدد views بیان کر سکتی ہے:

```json
"views": [
  {
    "viewport": "stripe.dashboard.customer.detail",
    "component": "CustomerDetailView"
  },
  {
    "viewport": "stripe.dashboard.payment.detail",
    "component": "PaymentDetailView"
  },
  {
    "viewport": "stripe.dashboard.home.overview",
    "component": "OverviewView"
  }
]
```

## CSPRequest

Content Security Policy کنٹرول کرتی ہے کہ آپ کی app کون سے بیرونی domains سے connect کر سکتی ہے:

```json
{
  "content_security_policy": {
    "connect-src": [
      "https://api.example.com",
      "https://api.brevo.com"
    ],
    "image-src": [
      "https://cdn.example.com"
    ],
    "purpose": "Connect to Tajo API for data sync and load images from CDN"
  }
}
```

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `connect-src` | string\[\] | نہیں | وہ domains جن پر app network requests بھیج سکتی ہے |
| `image-src` | string\[\] | نہیں | وہ domains جن سے app تصاویر load کر سکتی ہے |
| `purpose` | string | ہاں | وضاحت کہ ان بیرونی connections کی ضرورت کیوں ہے |

Caution

صرف وہ domains شامل کریں جن سے آپ کی app کو واقعی connect کرنے کی ضرورت ہے۔ ضرورت سے زیادہ CSP entries اضافی جائزہ جانچ پڑتال کو متحرک کر سکتی ہیں۔

## PostInstallAction

کنفیگر کرتا ہے کہ صارف کے app انسٹال کرنے کے فوری بعد کیا ہوتا ہے:

```json
{
  "post_install_action": {
    "type": "onboarding"
  }
}
```

| فیلڈ | قسم | ضروری | تفصیل |
| --- | --- | --- | --- |
| `type` | string | ہاں | عمل کی قسم (نیچے دیکھیں) |
| `url` | string | مشروط | `external` قسم کے اعمال کے لیے URL |

### عمل کی اقسام

| قسم | رویہ |
| --- | --- |
| `"onboarding"` | Dashboard میں app کا onboarding view کھولتا ہے |
| `"settings"` | Dashboard میں app کا settings view کھولتا ہے |
| `"external"` | صارف کو بیرونی URL پر redirect کرتا ہے (`url` فیلڈ ضروری) |

مثالیں:

```json
// Open onboarding flow
{
  "post_install_action": {
    "type": "onboarding"
  }
}

// Open settings page
{
  "post_install_action": {
    "type": "settings"
  }
}

// Redirect to external setup
{
  "post_install_action": {
    "type": "external",
    "url": "https://app.tajo.io/stripe/setup"
  }
}
```

تفصیلی نفاذ patterns کے لیے [Post-Install Actions گائیڈ](https://tajo.io/ur/docs/stripe-apps/post-install) دیکھیں۔

## Constants

runtime پر app میں قابل رسائی static key-value جوڑے تعریف کریں:

```json
{
  "constants": {
    "API_BASE_URL": "https://api.example.com/v1",
    "SYNC_INTERVAL_SECONDS": "300",
    "MAX_BATCH_SIZE": "100"
  }
}
```

- تمام اقدار strings ہونی چاہئیں
- Constants build time پر app میں embedded ہوتے ہیں
- ماحول کے درمیان مختلف ہونے والی کنفیگریشن کے لیے constants استعمال کریں
- کبھی secrets یا API keys کو constants کے طور پر محفوظ **نہ** کریں, اس کے بجائے Secret Store API استعمال کریں

اپنے app code میں constants تک رسائی:

```typescript
import { constants } from '@stripe/ui-extension-sdk/constants';

const apiUrl = constants.API_BASE_URL;
```

## ترقی کے لیے توسیعی Manifest

لوکل ترقی کے دوران، اضافی fields دستیاب ہیں:

```json
{
  "id": "com.tajo.brevo-integration",
  "version": "0.1.0",
  "name": "Tajo for Brevo (Dev)",
  "icon": "./assets/icon-dev.png",
  "distribution_type": "private",
  "sandbox_install_compatible": true,
  "dev": {
    "hot_reload": true,
    "port": 4242
  }
}
```

`dev` حصہ production builds اور app uploads کے دوران ہٹا دیا جاتا ہے۔ صرف لوکل ترقی کی سہولت کی ترتیبات کے لیے استعمال کریں۔

## تصدیق

اپلوڈ سے پہلے manifest کی تصدیق کریں:

```bash
# Validate manifest syntax and schema
stripe apps validate

# Check for common issues
stripe apps check
```

عام تصدیق errors:

| Error | وجہ | حل |
| --- | --- | --- |
| `Invalid permission` | نامعلوم اجازت شناخت کنندہ | [اجازتوں کا حوالہ](https://tajo.io/ur/docs/stripe-apps/permissions) چیک کریں |
| `Invalid viewport` | نامعلوم viewport شناخت کنندہ | [Viewports حوالہ](https://tajo.io/ur/docs/stripe-apps/viewports) چیک کریں |
| `Missing purpose` | purpose فیلڈ کے بغیر اجازت | ہر اجازت میں purpose string شامل کریں |
| `Invalid version` | non-semver version string | `MAJOR.MINOR.PATCH` فارمیٹ استعمال کریں |
| `Icon not found` | Icon path حل نہیں ہوتا | تصدیق کریں کہ icon فائل مخصوص path پر موجود ہے |
