Bed om tidlig adgang til Tajo

Indtast dit fornavn og en e-mailadresse eller et telefonnummer. Vi kontakter dig med oplysninger om adgang til Tajo.

Reference for app-manifestet

Manifestfilen stripe-app.json er den centrale konfiguration af din Stripe App. Den beskriver appens identitet, rettigheder, UI-visninger, sikkerhedspolitikker og adfærd efter installation.

Fuldt eksempel på et manifest

{
"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 skrevet i omvendt domænenotation (slug-format)
versionstringJaSemantisk versionsnummer (f.eks. "1.2.0")
namestringJaDet navn, der vises på marketplace (maks. 35 tegn)
iconstringJaRelativ sti til appens ikonfil (300x300 PNG eller SVG)
distribution_typestringJa"public" til marketplace eller "private" til intern brug
sandbox_install_compatiblebooleanNejOm appen kan installeres i sandbox- eller testtilstand
stripe_api_access_typestringNejMetode til API-adgang: "oauth" eller "api_key"
allowed_redirect_urisstring[]NejTilladte OAuth-redirect-URI’er i installationsflowet
permissionsPermissionRequest[]JaListe over anmodninger om rettigheder
ui_extensionUIExtensionManifestNejKonfiguration af UI-udvidelsen
post_install_actionPostInstallActionNejHandling, der udføres efter installationen af appen
constantsobjectNejNøgle-værdi-par, som appen kan tilgå ved kørsel

id

Appens id er en streng i slug-format, typisk skrevet i omvendt domænenotation:

"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, når appen først er oprettet
  • Bestemmer appens URL på marketplace

version

Følger semantisk versionering:

"version": "1.2.0"
  • MAJOR: Brydende ændringer eller væsentlige nye funktioner
  • MINOR: Nye funktioner, bagudkompatible
  • PATCH: Fejlrettelser og mindre forbedringer
  • Skal tælles op ved hver upload

distribution_type

Bestemmer, hvem der kan installere din app:

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

stripe_api_access_type

Bestemmer, hvordan din app autentificerer sig mod Stripe API:

VærdiBeskrivelse
"oauth"Bruger OAuth 2.0-flowet til autentificering (anbefales til offentlige apps)
"api_key"Bruger begrænsede API-nøgler (velegnet til private apps)

PermissionRequest

Hver anmodning om rettigheder angiver en bestemt Stripe API-rettighed, som din app har brug for:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
FeltTypePåkrævetBeskrivelse
permissionstringJaRettighedens id (se referencen over rettigheder)
purposestringJaEn forklaring i almindeligt sprog på, hvorfor rettigheden er nødvendig

Retningslinjer for purpose:

  • Skriv klare og konkrete forklaringer, som forhandlere kan forstå
  • Forklar, hvad rettigheden bruges til, ikke bare hvad den giver adgang til
  • Hold beskrivelsen kort (én sætning)
  • Undgå teknisk jargon

UIExtensionManifest

Konfigurerer appens UI-komponenter:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
FeltTypePåkrævetBeskrivelse
viewsViewManifest[]JaListe over visninger, appen erklærer
content_security_policyCSPRequestNejContent Security Policy for eksterne ressourcer

ViewManifest

Hver visning knytter en React-komponent til et viewport i Stripe Dashboard:

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
FeltTypePåkrævetBeskrivelse
viewportstringJaDet sted i Dashboard, hvor visningen vises (se referencen over viewports)
componentstringJaNavnet på den React-komponent, der skal renderes (skal matche navnet på den eksporterede komponent)

En enkelt app kan erklære flere visninger til forskellige viewports:

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

CSPRequest

Din Content Security Policy bestemmer, hvilke eksterne domæner din app må 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[]NejDe domæner, appen må sende netværksforespørgsler til
image-srcstring[]NejDe domæner, appen må hente billeder fra
purposestringJaForklaring på, hvorfor de eksterne forbindelser er nødvendige

Caution

Medtag kun de domæner, din app reelt har brug for at forbinde til. For mange CSP-poster kan udløse en grundigere gennemgang.

PostInstallAction

Bestemmer, hvad der sker umiddelbart efter, at en bruger har installeret din app:

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

Handlingstyper

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

Eksempler:

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

Se guiden til handlinger efter installation for detaljerede implementeringsmønstre.

Konstanter

Definér statiske nøgle-værdi-par, som din app kan tilgå ved kørsel:

{
"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 bliver bygget ind i appen på build-tidspunktet
  • Brug konstanter til konfiguration, der er forskellig fra miljø til miljø
  • Gem aldrig hemmeligheder eller API-nøgler som konstanter, brug Secret Store API i stedet

Tilgå konstanter i din app-kode:

import { constants } from '@stripe/ui-extension-sdk/constants';
const apiUrl = constants.API_BASE_URL;

Udvidet manifest til udvikling

Under lokal udvikling har du adgang til nogle ekstra felter:

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

Afsnittet dev fjernes ved produktionsbuilds og upload af appen. Brug det udelukkende til indstillinger, der gør lokal udvikling nemmere.

Validering

Validér dit manifest, før du uploader:

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

Almindelige valideringsfejl:

FejlÅrsagLøsning
Invalid permissionUkendt id for rettighedenTjek referencen over rettigheder
Invalid viewportUkendt id for viewportTjek referencen over viewports
Missing purposeRettighed uden feltet purposeTilføj en purpose-tekst til hver rettighed
Invalid versionVersionsnummeret følger ikke semverBrug formatet MAJOR.MINOR.PATCH
Icon not foundStien til ikonet kan ikke findesKontrollér, at ikonfilen ligger på den angivne sti

Bed om tidlig adgang til Tajo

Indtast dit fornavn og en e-mailadresse eller et telefonnummer. Vi kontakter dig med oplysninger om adgang til Tajo.

automatisk genkendelse
AI-assistent

Hej! Spørg mig om dokumentationen.