---
title: "Reference manifestu aplikace | Tajo"
description: "Kompletní reference schématu souboru manifestu stripe-app.json, kterým se konfigurují Stripe Apps"
url: https://tajo.io/cz/docs/stripe-apps/app-manifest/
markdown: https://tajo.io/cz/docs/stripe-apps/app-manifest.md
lang: cs-CZ
author: "Set Noa"
author_url: https://tajo.io/cz/set-noa/
robots: noindex
---

Požádejte o přednostní přístup

Zadejte své jméno a pracovní e-mailovou adresu. Pošleme vám odkaz pro potvrzení žádosti o přístup k Tajo.

# Reference manifestu aplikace

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

Soubor manifestu `stripe-app.json` je ústřední konfigurací Vaší Stripe App. Deklaruje identitu aplikace, oprávnění, pohledy uživatelského rozhraní, bezpečnostní zásady a chování po instalaci.

Caution

**Stav: plánováno, zatím nevytvořeno.** Tajo nemá žádnou aplikaci pro Stripe, takže nic z této sekce dnes nelze nainstalovat. Identifikátory aplikace, URL i přihlašovací údaje na této stránce jsou ilustrativní zástupné hodnoty, nikoli živé endpointy.

## Úplný příklad manifestu

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

## Reference schématu

### Pole nejvyšší úrovně

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `id` | string | Ano | Jedinečný identifikátor aplikace v obrácené doménové notaci (formát slug) |
| `version` | string | Ano | Řetězec sémantické verze (například `"1.2.0"`) |
| `name` | string | Ano | Zobrazovaný název na marketplace (maximálně 35 znaků) |
| `icon` | string | Ano | Relativní cesta k souboru ikony aplikace (300x300 PNG nebo SVG) |
| `distribution_type` | string | Ano | `"public"` pro marketplace nebo `"private"` pro interní použití |
| `sandbox_install_compatible` | boolean | Ne | Zda lze aplikaci nainstalovat v sandboxu a testovacím režimu |
| `stripe_api_access_type` | string | Ne | Způsob přístupu k API: `"oauth"` nebo `"api_key"` |
| `allowed_redirect_uris` | string\[\] | Ne | Povolené OAuth redirect URI pro instalační tok |
| `permissions` | PermissionRequest\[\] | Ano | Pole požadavků na oprávnění |
| `ui_extension` | UIExtensionManifest | Ne | Konfigurace rozšíření uživatelského rozhraní |
| `post_install_action` | PostInstallAction | Ne | Akce provedená po instalaci aplikace |
| `constants` | object | Ne | Dvojice klíč a hodnota dostupné v aplikaci za běhu |

### id

Identifikátor aplikace je řetězec ve formátu slug, obvykle v obrácené doménové notaci:

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

- Musí být globálně jedinečný napříč všemi Stripe Apps
- Používejte pouze malá písmena, číslice, spojovníky a tečky
- Po vytvoření aplikace jej již nelze změnit
- Určuje URL aplikace na marketplace

### version

Řídí se sémantickým verzováním:

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

- **MAJOR**: nekompatibilní změny nebo významné nové funkce
- **MINOR**: nové funkce zpětně kompatibilní
- **PATCH**: opravy chyb a drobná vylepšení
- Při každém nahrání musí být navýšena

### distribution\_type

Určuje, kdo může Vaši aplikaci nainstalovat:

| Hodnota | Popis |
| --- | --- |
| `"public"` | Dostupná všem uživatelům na Stripe App Marketplace |
| `"private"` | Instalovatelná pouze Vaším vlastním účtem Stripe |

### stripe\_api\_access\_type

Určuje, jak se Vaše aplikace ověřuje vůči Stripe API:

| Hodnota | Popis |
| --- | --- |
| `"oauth"` | Používá tok OAuth 2.0 pro ověření (doporučeno pro veřejné aplikace) |
| `"api_key"` | Používá omezené API klíče (vhodné pro soukromé aplikace) |

## PermissionRequest

Každý požadavek na oprávnění deklaruje konkrétní oprávnění Stripe API, které Vaše aplikace potřebuje:

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

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `permission` | string | Ano | Identifikátor oprávnění (viz [Reference oprávnění](https://tajo.io/cz/docs/stripe-apps/permissions)) |
| `purpose` | string | Ano | Srozumitelné vysvětlení, proč je toto oprávnění potřeba |

**Pravidla pro pole purpose:**

- Pište jasná a konkrétní vysvětlení, kterým obchodníci porozumí
- Vysvětlete, k čemu se oprávnění používá, ne jen co uděluje
- Popisy pište stručně (jedna věta)
- Vyhněte se technickému žargonu

## UIExtensionManifest

Konfiguruje komponenty uživatelského rozhraní Vaší aplikace:

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

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `views` | ViewManifest\[\] | Ano | Pole deklarací pohledů |
| `content_security_policy` | CSPRequest | Ne | Content Security Policy pro externí zdroje |

## ViewManifest

Každý pohled mapuje React komponentu na viewport ve Stripe Dashboardu:

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

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `viewport` | string | Ano | Místo v Dashboardu, kde se tento pohled vykreslí (viz [Reference viewportů](https://tajo.io/cz/docs/stripe-apps/viewports)) |
| `component` | string | Ano | Název React komponenty k vykreslení (musí odpovídat názvu exportované komponenty) |

Jedna aplikace může deklarovat více pohledů pro různé viewporty:

```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 určuje, ke kterým externím doménám se Vaše aplikace může připojit:

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

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `connect-src` | string\[\] | Ne | Domény, na které může aplikace posílat síťové požadavky |
| `image-src` | string\[\] | Ne | Domény, ze kterých může aplikace načítat obrázky |
| `purpose` | string | Ano | Vysvětlení, proč jsou tato externí připojení potřeba |

Caution

Uvádějte pouze domény, ke kterým se Vaše aplikace skutečně potřebuje připojit. Nadbytečné položky v CSP mohou vyvolat přísnější kontrolu při schvalování.

## PostInstallAction

Konfiguruje, co se stane bezprostředně poté, co si uživatel Vaši aplikaci nainstaluje:

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

| Pole | Typ | Povinné | Popis |
| --- | --- | --- | --- |
| `type` | string | Ano | Typ akce (viz níže) |
| `url` | string | Podmíněně | URL pro akce typu `external` |

### Typy akcí

| Typ | Chování |
| --- | --- |
| `"onboarding"` | Otevře onboardingový pohled aplikace v Dashboardu |
| `"settings"` | Otevře pohled s nastavením aplikace v Dashboardu |
| `"external"` | Přesměruje uživatele na externí URL (vyžaduje pole `url`) |

Příklady:

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

Podrobné implementační postupy najdete v [průvodci akcemi po instalaci](https://tajo.io/cz/docs/stripe-apps/post-install).

## Konstanty

Definujte statické dvojice klíč a hodnota dostupné v aplikaci za běhu:

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

- Všechny hodnoty musí být řetězce
- Konstanty se do aplikace vkládají při sestavení
- Konstanty používejte pro konfiguraci, která se liší mezi prostředími
- **Nikdy** neukládejte do konstant tajné údaje ani API klíče, použijte místo toho Secret Store API

Přístup ke konstantám v kódu aplikace:

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

const apiUrl = constants.API_BASE_URL;
```

## Rozšířený manifest pro vývoj

Během lokálního vývoje jsou k dispozici další pole:

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

Sekce `dev` se při produkčních sestaveních a nahrávání aplikace odstraní. Používejte ji pouze pro pohodlí při lokálním vývoji.

## Validace

Před nahráním svůj manifest zvalidujte:

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

# Check for common issues
stripe apps check
```

Časté chyby při validaci:

| Chyba | Příčina | Náprava |
| --- | --- | --- |
| `Invalid permission` | Neznámý identifikátor oprávnění | Zkontrolujte [Referenci oprávnění](https://tajo.io/cz/docs/stripe-apps/permissions) |
| `Invalid viewport` | Neznámý identifikátor viewportu | Zkontrolujte [Referenci viewportů](https://tajo.io/cz/docs/stripe-apps/viewports) |
| `Missing purpose` | Oprávnění bez pole purpose | Doplňte ke každému oprávnění řetězec purpose |
| `Invalid version` | Řetězec verze mimo semver | Použijte formát `MAJOR.MINOR.PATCH` |
| `Icon not found` | Cesta k ikoně nelze rozřešit | Ověřte, že soubor ikony na zadané cestě existuje |
