Zatražite rani pristup

Unesite ime i imejl adresu ili broj telefona. Poslaćemo vam detalje o pristupu platformi Tajo.

Referenca manifesta aplikacije

Manifest datoteka stripe-app.json je centralna konfiguracija vaše Stripe App aplikacije. Ona deklariše identitet aplikacije, dozvole, UI prikaze, bezbednosne politike i ponašanje nakon instalacije.

Primer kompletnog manifesta

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

Referenca sheme

Polja najvišeg nivoa

PoljeTipObaveznoOpis
idstringDaJedinstveni identifikator aplikacije u obrnutoj domenskoj notaciji (slug format)
versionstringDaNiska sa semantičkom verzijom (na primer "1.2.0")
namestringDaPrikazano ime na marketplace platformi (najviše 35 znakova)
iconstringDaRelativna putanja do datoteke sa ikonom aplikacije (300x300 PNG ili SVG)
distribution_typestringDa"public" za marketplace ili "private" za internu upotrebu
sandbox_install_compatiblebooleanNeDa li aplikacija može da se instalira u sandbox/test režimu
stripe_api_access_typestringNeNačin pristupa API-ju: "oauth" ili "api_key"
allowed_redirect_urisstring[]NeDozvoljeni OAuth redirect URI-jevi za tok instalacije
permissionsPermissionRequest[]DaNiz zahteva za dozvole
ui_extensionUIExtensionManifestNeKonfiguracija UI ekstenzije
post_install_actionPostInstallActionNeAkcija koja se pokreće nakon instalacije aplikacije
constantsobjectNeParovi ključ-vrednost dostupni u aplikaciji tokom izvršavanja

id

Identifikator aplikacije je niska u slug formatu, obično u obrnutoj domenskoj notaciji:

"id": "com.tajo.brevo-integration"
  • Mora biti globalno jedinstven među svim Stripe Apps aplikacijama
  • Koristite samo mala slova, brojeve, crtice i tačke
  • Ne može se promeniti nakon što je aplikacija kreirana
  • Određuje URL aplikacije na marketplace platformi

version

Prati semantičko verzionisanje:

"version": "1.2.0"
  • MAJOR: promene koje ruše kompatibilnost ili značajni novi dodaci
  • MINOR: nove funkcije, uz zadržanu kompatibilnost unazad
  • PATCH: ispravke grešaka i sitna poboljšanja
  • Mora se povećati pri svakom otpremanju

distribution_type

Određuje ko može da instalira vašu aplikaciju:

VrednostOpis
"public"Dostupna svim korisnicima na Stripe App Marketplace platformi
"private"Može je instalirati samo vaš sopstveni Stripe nalog

stripe_api_access_type

Određuje kako se vaša aplikacija autentifikuje na Stripe API:

VrednostOpis
"oauth"Koristi OAuth 2.0 tok za autentifikaciju (preporučeno za javne aplikacije)
"api_key"Koristi ograničene API ključeve (pogodno za privatne aplikacije)

PermissionRequest

Svaki zahtev za dozvolu deklariše konkretnu dozvolu Stripe API-ja koja je vašoj aplikaciji potrebna:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
PoljeTipObaveznoOpis
permissionstringDaIdentifikator dozvole (pogledajte Referencu dozvola)
purposestringDaObjašnjenje razumljivo ljudima zašto je ova dozvola potrebna

Smernice za polje purpose:

  • Pišite jasna i konkretna objašnjenja koja trgovci mogu da razumeju
  • Objasnite čemu dozvola služi, a ne samo šta omogućava
  • Neka opisi budu kratki (jedna rečenica)
  • Izbegavajte tehnički žargon

UIExtensionManifest

Konfiguriše UI komponente vaše aplikacije:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
PoljeTipObaveznoOpis
viewsViewManifest[]DaNiz deklaracija prikaza
content_security_policyCSPRequestNeContent Security Policy za spoljne resurse

ViewManifest

Svaki prikaz mapira React komponentu na viewport u Stripe komandnoj tabli:

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
PoljeTipObaveznoOpis
viewportstringDaMesto na komandnoj tabli gde se ovaj prikaz iscrtava (pogledajte Referencu viewport-a)
componentstringDaNaziv React komponente koja se iscrtava (mora se poklapati sa nazivom izvezene komponente)

Jedna aplikacija može da deklariše više prikaza za različite viewport-e:

"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 određuje sa kojim spoljnim domenima vaša aplikacija može da se povezuje:

{
"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"
}
}
PoljeTipObaveznoOpis
connect-srcstring[]NeDomeni kojima aplikacija može da šalje mrežne zahteve
image-srcstring[]NeDomeni sa kojih aplikacija može da učitava slike
purposestringDaObjašnjenje zašto su ove spoljne veze potrebne

Caution

Navedite samo domene sa kojima vaša aplikacija zaista treba da se povezuje. Preveliki broj CSP unosa može izazvati dodatnu strogost pri pregledu.

PostInstallAction

Konfiguriše šta se dešava odmah nakon što korisnik instalira vašu aplikaciju:

{
"post_install_action": {
"type": "onboarding"
}
}
PoljeTipObaveznoOpis
typestringDaTip akcije (pogledajte niže)
urlstringUslovnoURL za akcije tipa external

Tipovi akcija

TipPonašanje
"onboarding"Otvara uvodni prikaz aplikacije na komandnoj tabli
"settings"Otvara prikaz podešavanja aplikacije na komandnoj tabli
"external"Preusmerava korisnika na spoljni URL (zahteva polje url)

Primeri:

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

Pogledajte vodič za akcije nakon instalacije za detaljne obrasce implementacije.

Konstante

Definišite statične parove ključ-vrednost dostupne u aplikaciji tokom izvršavanja:

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300",
"MAX_BATCH_SIZE": "100"
}
}
  • Sve vrednosti moraju biti niske
  • Konstante se ugrađuju u aplikaciju u vreme izgradnje
  • Koristite konstante za konfiguraciju koja se razlikuje između okruženja
  • Nikada ne čuvajte tajne podatke ili API ključeve kao konstante, umesto toga koristite Secret Store API

Pristupite konstantama u kodu svoje aplikacije:

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

Prošireni manifest za razvoj

Tokom lokalnog razvoja dostupna su dodatna polja:

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

Odeljak dev se uklanja tokom produkcijskih izgradnji i otpremanja aplikacije. Koristite ga isključivo za podešavanja koja olakšavaju lokalni razvoj.

Validacija

Proverite ispravnost svog manifesta pre otpremanja:

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

Česte greške pri validaciji:

GreškaUzrokRešenje
Invalid permissionNepoznat identifikator dozvoleProverite Referencu dozvola
Invalid viewportNepoznat identifikator viewport-aProverite Referencu viewport-a
Missing purposeDozvola bez polja purposeDodajte nisku purpose svakoj dozvoli
Invalid versionNiska verzije koja nije po semver standarduKoristite format MAJOR.MINOR.PATCH
Icon not foundPutanja do ikone se ne razrešavaProverite da li datoteka sa ikonom postoji na navedenoj putanji

Zatražite rani pristup

Unesite ime i imejl adresu ili broj telefona. Poslaćemo vam detalje o pristupu platformi Tajo.

automatsko prepoznavanje
AI asistent

Zdravo! Pitajte me o dokumentaciji.