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

Uveďte své křestní jméno a e-mail nebo telefonní číslo. Pošleme Vám informace o přístupu k platformě Tajo.

Reference manifestu aplikace

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.

Úplný příklad manifestu

{
"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": "Subscribe to real-time 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.tajo.io",
"https://api.brevo.com"
],
"image-src": [
"https://cdn.tajo.io",
"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.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300"
}
}

Reference schématu

Pole nejvyšší úrovně

PoleTypPovinnéPopis
idstringAnoJedinečný identifikátor aplikace v obrácené doménové notaci (formát slug)
versionstringAnoŘetězec sémantické verze (například "1.2.0")
namestringAnoZobrazovaný název na marketplace (maximálně 35 znaků)
iconstringAnoRelativní cesta k souboru ikony aplikace (300x300 PNG nebo SVG)
distribution_typestringAno"public" pro marketplace nebo "private" pro interní použití
sandbox_install_compatiblebooleanNeZda lze aplikaci nainstalovat v sandboxu a testovacím režimu
stripe_api_access_typestringNeZpůsob přístupu k API: "oauth" nebo "api_key"
allowed_redirect_urisstring[]NePovolené OAuth redirect URI pro instalační tok
permissionsPermissionRequest[]AnoPole požadavků na oprávnění
ui_extensionUIExtensionManifestNeKonfigurace rozšíření uživatelského rozhraní
post_install_actionPostInstallActionNeAkce provedená po instalaci aplikace
constantsobjectNeDvojice 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:

"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:

"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:

HodnotaPopis
"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:

HodnotaPopis
"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:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
PoleTypPovinnéPopis
permissionstringAnoIdentifikátor oprávnění (viz Reference oprávnění)
purposestringAnoSrozumitelné 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:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
PoleTypPovinnéPopis
viewsViewManifest[]AnoPole deklarací pohledů
content_security_policyCSPRequestNeContent Security Policy pro externí zdroje

ViewManifest

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

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
PoleTypPovinnéPopis
viewportstringAnoMísto v Dashboardu, kde se tento pohled vykreslí (viz Reference viewportů)
componentstringAnoNázev React komponenty k vykreslení (musí odpovídat názvu exportované komponenty)

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

"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:

{
"content_security_policy": {
"connect-src": [
"https://api.tajo.io",
"https://api.brevo.com"
],
"image-src": [
"https://cdn.tajo.io"
],
"purpose": "Connect to Tajo API for data sync and load images from CDN"
}
}
PoleTypPovinnéPopis
connect-srcstring[]NeDomény, na které může aplikace posílat síťové požadavky
image-srcstring[]NeDomény, ze kterých může aplikace načítat obrázky
purposestringAnoVysvě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:

{
"post_install_action": {
"type": "onboarding"
}
}
PoleTypPovinnéPopis
typestringAnoTyp akce (viz níže)
urlstringPodmíněněURL pro akce typu external

Typy akcí

TypChová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:

// 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.

Konstanty

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

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/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:

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:

{
"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:

Terminal window
# Validate manifest syntax and schema
stripe apps validate
# Check for common issues
stripe apps check

Časté chyby při validaci:

ChybaPříčinaNáprava
Invalid permissionNeznámý identifikátor oprávněníZkontrolujte Referenci oprávnění
Invalid viewportNeznámý identifikátor viewportuZkontrolujte Referenci viewportů
Missing purposeOprávnění bez pole purposeDoplňte ke každému oprávnění řetězec purpose
Invalid versionŘetězec verze mimo semverPoužijte formát MAJOR.MINOR.PATCH
Icon not foundCesta k ikoně nelze rozřešitOvěřte, že soubor ikony na zadané cestě existuje

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

Uveďte své křestní jméno a e-mail nebo telefonní číslo. Pošleme Vám informace o přístupu k platformě Tajo.

automatické rozpoznání
AI asistent

Ahoj! Zeptejte se mě na dokumentaci.