Be om tidlig tilgang

Skriv inn fornavnet ditt og en e-postadresse eller et telefonnummer. Vi kontakter deg med informasjon om tilgang til Tajo.

Referanse for app-manifestet

Manifestfilen stripe-app.json er den sentrale konfigurasjonen for Stripe-appen din. Den angir appens identitet, tillatelser, UI-visninger, sikkerhetsregler og hva som skjer etter installasjon.

Fullstendig eksempel på 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"
}
}

Skjemareferanse

Felter på toppnivå

FeltTypePåkrevdBeskrivelse
idstrengJaUnik app-identifikator i omvendt domenenotasjon (slug-format)
versionstrengJaStreng med semantisk versjon (for eksempel "1.2.0")
namestrengJaVisningsnavnet som vises i marketplace (maks 35 tegn)
iconstrengJaRelativ sti til appikonet (300x300 PNG eller SVG)
distribution_typestrengJa"public" for marketplace eller "private" for intern bruk
sandbox_install_compatibleboolskNeiOm appen kan installeres i sandkasse- eller testmodus
stripe_api_access_typestrengNeiMetode for API-tilgang: "oauth" eller "api_key"
allowed_redirect_urisstreng[]NeiTillatte OAuth-omdirigerings-URI-er for installasjonsflyten
permissionsPermissionRequest[]JaListe over forespurte tillatelser
ui_extensionUIExtensionManifestNeiKonfigurasjon av UI-utvidelsen
post_install_actionPostInstallActionNeiHandling som skal utføres etter at appen er installert
constantsobjektNeiNøkkel-verdi-par som er tilgjengelige i appen under kjøring

id

App-identifikatoren er en streng i slug-format, vanligvis i omvendt domenenotasjon:

"id": "com.tajo.brevo-integration"
  • Må være globalt unik på tvers av alle Stripe Apps
  • Bruk bare små bokstaver, tall, bindestreker og punktum
  • Kan ikke endres etter at appen er opprettet
  • Bestemmer appens URL i marketplace

version

Følger semantisk versjonering:

"version": "1.2.0"
  • MAJOR: Bruddendringer eller vesentlig ny funksjonalitet
  • MINOR: Ny funksjonalitet som er bakoverkompatibel
  • PATCH: Feilrettinger og mindre forbedringer
  • Må økes for hver opplasting

distribution_type

Styrer hvem som kan installere appen din:

VerdiBeskrivelse
"public"Tilgjengelig for alle brukere i Stripe App Marketplace
"private"Kan bare installeres av din egen Stripe-konto

stripe_api_access_type

Bestemmer hvordan appen din autentiserer seg mot Stripe API:

VerdiBeskrivelse
"oauth"Bruker OAuth 2.0-flyt til autentisering (anbefalt for offentlige apper)
"api_key"Bruker begrensede API-nøkler (passer for private apper)

PermissionRequest

Hver tillatelsesforespørsel angir én bestemt Stripe API-tillatelse appen din trenger:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
FeltTypePåkrevdBeskrivelse
permissionstrengJaIdentifikatoren for tillatelsen (se referansen over tillatelser)
purposestrengJaForklaring på vanlig språk av hvorfor tillatelsen trengs

Retningslinjer for purpose:

  • Skriv tydelige, konkrete forklaringer som forhandlere forstår
  • Forklar hva tillatelsen brukes til, ikke bare hva den gir tilgang til
  • Hold beskrivelsene korte, gjerne én setning
  • Unngå teknisk sjargong

UIExtensionManifest

Konfigurerer UI-komponentene i appen din:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
FeltTypePåkrevdBeskrivelse
viewsViewManifest[]JaListe over visninger som erklæres
content_security_policyCSPRequestNeiContent Security Policy for eksterne ressurser

ViewManifest

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

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
FeltTypePåkrevdBeskrivelse
viewportstrengJaStedet i dashboardet der visningen vises (se referansen over viewporter)
componentstrengJaNavnet på React-komponenten som skal vises (må stemme med navnet på den eksporterte komponenten)

Én app kan erklære flere visninger for ulike viewporter:

"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 styrer hvilke eksterne domener appen din kan koble seg 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åkrevdBeskrivelse
connect-srcstreng[]NeiDomener appen kan sende nettverksforespørsler til
image-srcstreng[]NeiDomener appen kan laste bilder fra
purposestrengJaForklaring på hvorfor disse eksterne tilkoblingene trengs

Caution

Ta bare med domener appen din faktisk må koble seg til. Mange unødvendige CSP-oppføringer kan gi strengere gjennomgang.

PostInstallAction

Konfigurerer hva som skjer straks en bruker har installert appen din:

{
"post_install_action": {
"type": "onboarding"
}
}
FeltTypePåkrevdBeskrivelse
typestrengJaTypen handling (se under)
urlstrengBetingetURL for handlinger av typen external

Handlingstyper

TypeOppførsel
"onboarding"Åpner appens oppstartsvisning i dashboardet
"settings"Åpner appens innstillingsvisning i dashboardet
"external"Sender brukeren videre til en ekstern URL (krever 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 veiledningen om handlinger etter installasjon for detaljerte implementeringsmønstre.

Konstanter

Definer statiske nøkkel-verdi-par som er tilgjengelige under kjøring i appen din:

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300",
"MAX_BATCH_SIZE": "100"
}
}
  • Alle verdier må være strenger
  • Konstantene bakes inn i appen når den bygges
  • Bruk konstanter til konfigurasjon som varierer mellom miljøer
  • Lagre aldri hemmeligheter eller API-nøkler som konstanter, bruk Secret Store API i stedet

Slik henter du konstanter i appkoden din:

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

Utvidet manifest under utvikling

Under lokal utvikling er noen ekstra felter tilgjengelige:

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

Seksjonen dev fjernes når appen bygges for produksjon og lastes opp. Bruk den bare til innstillinger som gjør lokal utvikling enklere.

Validering

Valider manifestet ditt før du laster det opp:

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

Vanlige valideringsfeil:

FeilÅrsakLøsning
Invalid permissionUkjent identifikator for tillatelseSjekk referansen over tillatelser
Invalid viewportUkjent identifikator for viewportSjekk referansen over viewporter
Missing purposeTillatelse uten feltet purposeLegg til en purpose-streng for hver tillatelse
Invalid versionVersjonsstrengen følger ikke semverBruk formatet MAJOR.MINOR.PATCH
Icon not foundStien til ikonet kan ikke løsesKontroller at ikonfilen finnes på den angitte stien

Be om tidlig tilgang

Skriv inn fornavnet ditt og en e-postadresse eller et telefonnummer. Vi kontakter deg med informasjon om tilgang til Tajo.

automatisk gjenkjenning
AI-assistent

Hei! Spør meg om dokumentasjonen.