Kérj korai hozzáférést

Add meg a keresztnevedet, valamint egy e-mail-címet vagy telefonszámot. Hamarosan elküldjük a Tajo eléréséhez szükséges információkat.

App manifest referencia

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.

Teljes manifest példa

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

Sémareferencia

Legfelső szintű mezők

MezőTípusKötelezőLeírás
idstringIgenEgyedi alkalmazásazonosító fordított domain jelöléssel (slug formátumban)
versionstringIgenSzemantikus verziószám (például "1.2.0")
namestringIgenA piactéren megjelenő név (legfeljebb 35 karakter)
iconstringIgenRelatív útvonal az alkalmazás ikonfájljához (300x300 PNG vagy SVG)
distribution_typestringIgen"public" a piactérhez vagy "private" belső használatra
sandbox_install_compatiblebooleanNemTelepíthető-e az alkalmazás sandbox vagy teszt módban
stripe_api_access_typestringNemAz API-hozzáférés módja: "oauth" vagy "api_key"
allowed_redirect_urisstring[]NemEngedélyezett OAuth átirányítási URI-k a telepítési folyamathoz
permissionsPermissionRequest[]IgenA jogosultsági kérések tömbje
ui_extensionUIExtensionManifestNemA felületi bővítmény beállításai
post_install_actionPostInstallActionNemA telepítés után végrehajtandó művelet
constantsobjectNemKulcs-é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:

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

"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ékLeí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ékLeí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:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
MezőTípusKötelezőLeírás
permissionstringIgenA jogosultság azonosítója (lásd a jogosultsági referenciát)
purposestringIgenEmberi 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:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
MezőTípusKötelezőLeírás
viewsViewManifest[]IgenA nézetdeklarációk tömbje
content_security_policyCSPRequestNemContent Security Policy a külső erőforrásokhoz

ViewManifest

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

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
MezőTípusKötelezőLeírás
viewportstringIgenA Dashboard azon helye, ahol a nézet megjelenik (lásd a viewport referenciát)
componentstringIgenA 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:

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

{
"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"
}
}
MezőTípusKötelezőLeírás
connect-srcstring[]NemAzok a domainek, amelyekhez az alkalmazás hálózati kérést indíthat
image-srcstring[]NemAzok a domainek, ahonnan az alkalmazás képet tölthet be
purposestringIgenMagyará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:

{
"post_install_action": {
"type": "onboarding"
}
}
MezőTípusKötelezőLeírás
typestringIgenA művelet típusa (lásd alább)
urlstringFeltételesURL az external típusú műveletekhez

Művelettípusok

TípusViselkedé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:

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

Constants

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

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

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:

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

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

Gyakori validációs hibák:

HibaOkMegoldás
Invalid permissionIsmeretlen jogosultságazonosítóNézd meg a jogosultsági referenciát
Invalid viewportIsmeretlen viewport azonosítóNézd meg a viewport referenciát
Missing purposeJogosultság purpose mező nélkülAdj purpose karakterláncot minden jogosultsághoz
Invalid versionNem semver formátumú verziószámHasználd a MAJOR.MINOR.PATCH formátumot
Icon not foundAz ikon útvonala nem oldható felEllenőrizd, hogy az ikonfájl létezik-e a megadott útvonalon

Kérj korai hozzáférést

Add meg a keresztnevedet, valamint egy e-mail-címet vagy telefonszámot. Hamarosan elküldjük a Tajo eléréséhez szükséges információkat.

automatikus felismerés
AI asszisztens

Szia! Kérdezz bármit a dokumentációról.