---
title: "App manifest referencia | Tajo"
description: "Teljes sémareferencia a Stripe Appok beállítására szolgáló stripe-app.json manifest fájlhoz"
url: https://tajo.io/hu/docs/stripe-apps/app-manifest/
markdown: https://tajo.io/hu/docs/stripe-apps/app-manifest.md
lang: hu-HU
author: "Set Noa"
author_url: https://tajo.io/hu/set-noa/
robots: noindex
---

Kérj korai hozzáférést

Adja meg keresztnevét és munkahelyi e-mail-címét. Küldünk egy hivatkozást, amellyel megerősítheti a Tajo-hozzáférési kérelmét.

# App manifest referencia

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

A `stripe-app.json` manifest fájl a Stripe Appod központi konfigurációja. Ez írja le az alkalmazás azonosságát, jogosultságait, felületi nézeteit, biztonsági szabályait és a telepítés utáni viselkedését.

Caution

**Állapot: tervezett, még nem készült el.** A Tajónak nincs Stripe appja, így ebből a szakaszból ma semmi sem telepíthető. Az ezen az oldalon szereplő app-azonosítók, URL-ek és hitelesítő adatok szemléltető helyőrzők, nem élő végpontok.

## Teljes manifest példa

```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"
  }
}
```

## Sémareferencia

### Legfelső szintű mezők

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `id` | string | Igen | Egyedi alkalmazásazonosító fordított domain jelöléssel (slug formátumban) |
| `version` | string | Igen | Szemantikus verziószám (például `"1.2.0"`) |
| `name` | string | Igen | A piactéren megjelenő név (legfeljebb 35 karakter) |
| `icon` | string | Igen | Relatív útvonal az alkalmazás ikonfájljához (300x300 PNG vagy SVG) |
| `distribution_type` | string | Igen | `"public"` a piactérhez vagy `"private"` belső használatra |
| `sandbox_install_compatible` | boolean | Nem | Telepíthető-e az alkalmazás sandbox vagy teszt módban |
| `stripe_api_access_type` | string | Nem | Az API-hozzáférés módja: `"oauth"` vagy `"api_key"` |
| `allowed_redirect_uris` | string\[\] | Nem | Engedélyezett OAuth átirányítási URI-k a telepítési folyamathoz |
| `permissions` | PermissionRequest\[\] | Igen | A jogosultsági kérések tömbje |
| `ui_extension` | UIExtensionManifest | Nem | A felületi bővítmény beállításai |
| `post_install_action` | PostInstallAction | Nem | A telepítés után végrehajtandó művelet |
| `constants` | object | Nem | Kulcs-érték párok, amelyeket az alkalmazás futásidőben elér |

### id

Az alkalmazásazonosító slug formátumú karakterlánc, jellemzően fordított domain jelöléssel:

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

- Az összes Stripe App között globálisan egyedinek kell lennie
- Csak kisbetűket, számokat, kötőjeleket és pontokat használj
- Az alkalmazás létrehozása után nem módosítható
- Ez határozza meg az alkalmazás URL-jét a piactéren

### version

Szemantikus verziózást követ:

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

- **MAJOR**: törő változások vagy jelentős új képességek
- **MINOR**: új funkciók, visszafelé kompatibilisen
- **PATCH**: hibajavítások és apróbb fejlesztések
- Minden feltöltésnél növelni kell

### distribution\_type

Azt szabályozza, ki telepítheti az alkalmazásodat:

| Érték | Leírás |
| --- | --- |
| `"public"` | Elérhető a Stripe App Marketplace-en minden felhasználó számára |
| `"private"` | Csak a saját Stripe fiókodból telepíthető |

### stripe\_api\_access\_type

Azt határozza meg, hogyan hitelesíti magát az alkalmazásod a Stripe API felé:

| Érték | Leírás |
| --- | --- |
| `"oauth"` | OAuth 2.0 folyamattal hitelesít (nyilvános alkalmazásokhoz ajánlott) |
| `"api_key"` | Korlátozott API-kulcsokat használ (privát alkalmazásokhoz való) |

## PermissionRequest

Minden jogosultsági kérés egy konkrét Stripe API-jogosultságot igényel az alkalmazásod számára:

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

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `permission` | string | Igen | A jogosultság azonosítója (lásd a [jogosultsági referenciát](https://tajo.io/hu/docs/stripe-apps/permissions)) |
| `purpose` | string | Igen | Emberi nyelvű magyarázat arról, miért kell ez a jogosultság |

**Irányelvek a purpose mezőhöz:**

- Írj világos, konkrét magyarázatot, amit a kereskedők is megértenek
- Azt írd le, mire használod a jogosultságot, ne csak azt, mit enged
- Fogalmazz tömören (egy mondat)
- Kerüld a szakzsargont

## UIExtensionManifest

Az alkalmazás felületi komponenseit állítja be:

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

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `views` | ViewManifest\[\] | Igen | A nézetdeklarációk tömbje |
| `content_security_policy` | CSPRequest | Nem | Content Security Policy a külső erőforrásokhoz |

## ViewManifest

Minden nézet egy React komponenst rendel a Stripe Dashboard egy viewportjához:

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

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `viewport` | string | Igen | A Dashboard azon helye, ahol a nézet megjelenik (lásd a [viewport referenciát](https://tajo.io/hu/docs/stripe-apps/viewports)) |
| `component` | string | Igen | A megjelenítendő React komponens neve (egyeznie kell az exportált komponens nevével) |

Egyetlen alkalmazás több nézetet is deklarálhat különböző viewportokhoz:

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

## CSPRequest

A Content Security Policy azt szabályozza, mely külső domainekhez csatlakozhat az alkalmazásod:

```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"
  }
}
```

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `connect-src` | string\[\] | Nem | Azok a domainek, amelyekhez az alkalmazás hálózati kérést indíthat |
| `image-src` | string\[\] | Nem | Azok a domainek, ahonnan az alkalmazás képet tölthet be |
| `purpose` | string | Igen | Magyarázat arról, miért van szükség ezekre a külső kapcsolatokra |

Caution

Csak azokat a domaineket sorold fel, amelyekhez az alkalmazásod valóban csatlakozik. A túl sok CSP-bejegyzés alaposabb átvizsgálást vonhat maga után.

## PostInstallAction

Azt állítja be, mi történik közvetlenül azután, hogy a felhasználó telepítette az alkalmazásodat:

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

| Mező | Típus | Kötelező | Leírás |
| --- | --- | --- | --- |
| `type` | string | Igen | A művelet típusa (lásd alább) |
| `url` | string | Feltételes | URL az `external` típusú műveletekhez |

### Művelettípusok

| Típus | Viselkedés |
| --- | --- |
| `"onboarding"` | Megnyitja az alkalmazás bevezető nézetét a Dashboardon |
| `"settings"` | Megnyitja az alkalmazás beállítási nézetét a Dashboardon |
| `"external"` | Külső URL-re irányítja a felhasználót (kötelező hozzá az `url` mező) |

Példák:

```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"
  }
}
```

A részletes megvalósítási mintákért lásd a [telepítés utáni műveletek útmutatóját](https://tajo.io/hu/docs/stripe-apps/post-install).

## Constants

Statikus kulcs-érték párokat definiálhatsz, amelyeket az alkalmazásod futásidőben elér:

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

- Minden értéknek karakterláncnak kell lennie
- A konstansok build időben ágyazódnak be az alkalmazásba
- Konstansokat olyan beállításokhoz használj, amelyek környezetenként eltérnek
- **Soha** ne tárolj titkokat vagy API-kulcsokat konstansként, erre a Secret Store API való

Így éred el a konstansokat az alkalmazás kódjában:

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

const apiUrl = constants.API_BASE_URL;
```

## Kibővített manifest fejlesztéshez

Helyi fejlesztés közben további mezők is elérhetők:

```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
  }
}
```

A `dev` szakasz kimarad az éles buildekből és az alkalmazásfeltöltésekből. Csak helyi fejlesztést kényelmesebbé tevő beállításokhoz használd.

## Validáció

Feltöltés előtt ellenőrizd a manifestedet:

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

# Check for common issues
stripe apps check
```

Gyakori validációs hibák:

| Hiba | Ok | Megoldás |
| --- | --- | --- |
| `Invalid permission` | Ismeretlen jogosultságazonosító | Nézd meg a [jogosultsági referenciát](https://tajo.io/hu/docs/stripe-apps/permissions) |
| `Invalid viewport` | Ismeretlen viewport azonosító | Nézd meg a [viewport referenciát](https://tajo.io/hu/docs/stripe-apps/viewports) |
| `Missing purpose` | Jogosultság purpose mező nélkül | Adj purpose karakterláncot minden jogosultsághoz |
| `Invalid version` | Nem semver formátumú verziószám | Használd a `MAJOR.MINOR.PATCH` formátumot |
| `Icon not found` | Az ikon útvonala nem oldható fel | Ellenőrizd, hogy az ikonfájl létezik-e a megadott útvonalon |
