App Manifest Reference

stripe-app.json-manifestfilen er den centrale konfiguration for din Stripe App. Den deklarerer din apps identitet, tilladelser, UI-visninger, sikkerhedspolitikker og post-installationsadfærd.

Fuldt manifest-eksempel

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

Schema-reference

Felter på øverste niveau

FeltTypePåkrævetBeskrivelse
idstringJaUnikt app-id i omvendt domæne-notation (slug-format)
versionstringJaSemantisk version­streng (f.eks. "1.2.0")
namestringJaVisningsnavn vist på marketplace (maks. 35 tegn)
iconstringJaRelativ sti til app-ikonfilen (300x300 PNG eller SVG)
distribution_typestringJa"public" til marketplace eller "private" til intern brug
sandbox_install_compatiblebooleanNejOm appen kan installeres i sandbox/testmodus
stripe_api_access_typestringNejAPI-adgangsmetode: "oauth" eller "api_key"
allowed_redirect_urisstring[]NejTilladte OAuth-redirect-URI’er til installationsflow
permissionsPermissionRequest[]JaArray af tilladelses­anmodninger
ui_extensionUIExtensionManifestNejUI-udvidelseskonfiguration
post_install_actionPostInstallActionNejHandling der udføres efter app-installation
constantsobjectNejNøgle-værdi-par tilgængelige i appen ved kørselstid

id

App-id’et er en slug-formateret streng, typisk i omvendt domæne-notation:

"id": "com.tajo.brevo-integration"
  • Skal være globalt unikt på tværs af alle Stripe Apps
  • Brug kun små bogstaver, tal, bindestreger og punktummer
  • Kan ikke ændres efter appen er oprettet
  • Bestemmer appens URL på marketplace

version

Følger semantisk versionering:

"version": "1.2.0"
  • MAJOR: Brydende ændringer eller betydelige funktions­tilføjelser
  • MINOR: Nye funktioner, bagud­kompatibelt
  • PATCH: Fejlrettelser og mindre forbedringer
  • Skal øges for hvert upload

distribution_type

Styrer hvem der kan installere din app:

VærdiBeskrivelse
"public"Tilgængelig på Stripe App Marketplace for alle brugere
"private"Kan kun installeres af din egen Stripe-konto

stripe_api_access_type

Bestemmer hvordan din app godkender sig med Stripe API:

VærdiBeskrivelse
"oauth"Bruger OAuth 2.0-flow til godkendelse (anbefalet til offentlige apps)
"api_key"Bruger begrænsede API-nøgler (egnet til private apps)

PermissionRequest

Hver tilladelses­anmodning deklarerer en specifik Stripe API-tilladelse din app behøver:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
FeltTypePåkrævetBeskrivelse
permissionstringJaTilladelsesidentifikatoren (se Tilladelses­reference)
purposestringJaMenneskelig læsbar forklaring af hvorfor denne tilladelse er nødvendig

Retningslinjer for formål:

  • Skriv klare, specifikke forklaringer som sælgere kan forstå
  • Forklar hvad tilladelsen bruges til, ikke bare hvad den giver
  • Hold beskrivelser korte (én sætning)
  • Undgå teknisk jargon

UIExtensionManifest

Konfigurerer UI-komponenterne i din app:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
FeltTypePåkrævetBeskrivelse
viewsViewManifest[]JaArray af visnings­deklarationer
content_security_policyCSPRequestNejContent Security Policy til eksterne ressourcer

ViewManifest

Hver visning mapper en React-komponent til en Stripe Dashboard-viewport:

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
FeltTypePåkrævetBeskrivelse
viewportstringJaDashboard-placeringen hvor denne visning gengives (se Viewport­reference)
componentstringJaNavn på React-komponenten der gengives (skal matche det eksporterede komponentnavn)

CSPRequest

Content Security Policy styrer hvilke eksterne domæner din app kan forbinde til:

{
"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"
}
}
FeltTypePåkrævetBeskrivelse
connect-srcstring[]NejDomæner appen kan lave netværksanmodninger til
image-srcstring[]NejDomæner appen kan indlæse billeder fra
purposestringJaForklaring af hvorfor disse eksterne forbindelser er nødvendige

Caution

Inkluder kun domæner som din app faktisk behøver at forbinde til. Overdrevne CSP-indgange kan udløse yderligere gennemgangs­kontrol.

PostInstallAction

Konfigurerer hvad der sker umiddelbart efter en bruger installerer din app:

{
"post_install_action": {
"type": "onboarding"
}
}
FeltTypePåkrævetBeskrivelse
typestringJaHandlings­typen (se nedenfor)
urlstringBetingetURL til external type handlinger

Handlings­typer

TypeAdfærd
"onboarding"Åbner appens onboarding-visning i Dashboard
"settings"Åbner appens indstillingsvisning i Dashboard
"external"Omdirigerer brugeren til en ekstern URL (kræver url-felt)

Se Post-installationshandlings­guiden for detaljerede implementeringsmønstre.

Konstanter

Definer statiske nøgle-værdi-par tilgængelige ved kørselstid i din app:

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300",
"MAX_BATCH_SIZE": "100"
}
}
  • Alle værdier skal være strenge
  • Konstanter er indlejret i appen ved byggetid
  • Brug konstanter til konfiguration der varierer mellem miljøer
  • Gem aldrig hemmeligheder eller API-nøgler som konstanter, brug Secret Store API i stedet

Validering

Valider dit manifest før upload:

Terminal window
# Valider manifest-syntaks og schema
stripe apps validate
# Kontroller for almindelige problemer
stripe apps check

Almindelige valideringsfejl:

FejlÅrsagLøsning
Invalid permissionUkendt tilladelses­identifikatorKontroller Tilladelses­reference
Invalid viewportUkendt viewport-identifikatorKontroller Viewport­reference
Missing purposeTilladelse uden formål-feltTilføj en formål-streng til hver tilladelse
Invalid versionIkke-semver version­strengBrug formatet MAJOR.MINOR.PATCH
Icon not foundIkonsti løser ikke opVerificer at ikonfilen eksisterer ved den angivne sti

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI-assistent

Hej! Spørg mig om dokumentationen.

Start gratis med Brevo