Zatražite rani pristup

Unesite ime te adresu e-pošte ili telefonski broj. Poslat ćemo vam pojedinosti o pristupu platformi Tajo.

Referenca manifesta aplikacije

Datoteka manifesta stripe-app.json središnja je konfiguracija vaše Stripe aplikacije. U njoj se deklariraju identitet aplikacije, dopuštenja, prikazi sučelja, sigurnosna pravila i ponašanje nakon instalacije.

Potpun primjer 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še razine

PoljeVrstaObaveznoOpis
idstringDaJedinstveni identifikator aplikacije u obrnutoj domenskoj notaciji (slug format)
versionstringDaNiz semantičke verzije (npr. "1.2.0")
namestringDaPrikazano ime na tržnici aplikacija (najviše 35 znakova)
iconstringDaRelativna putanja do datoteke ikone aplikacije (300x300 PNG ili SVG)
distribution_typestringDa"public" za tržnicu aplikacija ili "private" za internu upotrebu
sandbox_install_compatiblebooleanNeMože li se aplikacija instalirati u sandbox ili testnom načinu rada
stripe_api_access_typestringNeNačin pristupa API-ju: "oauth" ili "api_key"
allowed_redirect_urisstring[]NeDopušteni OAuth URI-ji preusmjeravanja za tijek instalacije
permissionsPermissionRequest[]DaNiz zahtjeva za dopuštenja
ui_extensionUIExtensionManifestNeKonfiguracija proširenja sučelja
post_install_actionPostInstallActionNeRadnja koja se izvodi nakon instalacije aplikacije
constantsobjectNeParovi ključ-vrijednost dostupni u aplikaciji tijekom izvođenja

id

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

"id": "com.tajo.brevo-integration"
  • Mora biti globalno jedinstven među svim Stripe aplikacijama
  • Koristite isključivo mala slova, brojke, crtice i točke
  • Ne može se promijeniti nakon što je aplikacija stvorena
  • Određuje URL aplikacije na tržnici aplikacija

version

Slijedi semantičko verzioniranje:

"version": "1.2.0"
  • MAJOR: promjene koje ruše kompatibilnost ili veći novi dijelovi funkcionalnosti
  • MINOR: nove značajke, unatrag kompatibilne
  • PATCH: ispravci pogrešaka i manja poboljšanja
  • Mora se povećati za svako slanje

distribution_type

Određuje tko može instalirati vašu aplikaciju:

VrijednostOpis
"public"Dostupna svim korisnicima na Stripe App Marketplaceu
"private"Može je instalirati samo vaš vlastiti Stripe račun

stripe_api_access_type

Određuje kako se vaša aplikacija autentificira prema Stripe API-ju:

VrijednostOpis
"oauth"Koristi OAuth 2.0 tijek za autentifikaciju (preporučeno za javne aplikacije)
"api_key"Koristi ograničene API ključeve (prikladno za privatne aplikacije)

PermissionRequest

Svaki zahtjev za dopuštenje deklarira određeno dopuštenje Stripe API-ja koje vaša aplikacija treba:

{
"permission": "customer_read",
"purpose": "Read customer profiles to sync with Brevo contacts"
}
PoljeVrstaObaveznoOpis
permissionstringDaIdentifikator dopuštenja (pogledajte Referencu dopuštenja)
purposestringDaLjudima razumljivo objašnjenje zašto je to dopuštenje potrebno

Smjernice za polje purpose:

  • Pišite jasna i konkretna objašnjenja koja trgovci mogu razumjeti
  • Objasnite čemu dopuštenje služi, a ne samo što omogućuje
  • Neka opisi budu sažeti (jedna rečenica)
  • Izbjegavajte tehnički žargon

UIExtensionManifest

Konfigurira komponente sučelja vaše aplikacije:

{
"ui_extension": {
"views": [...],
"content_security_policy": {...}
}
}
PoljeVrstaObaveznoOpis
viewsViewManifest[]DaNiz deklaracija prikaza
content_security_policyCSPRequestNePravilo Content Security Policy za vanjske resurse

ViewManifest

Svaki prikaz povezuje React komponentu s viewportom u Stripe Dashboardu:

{
"viewport": "stripe.dashboard.customer.detail",
"component": "CustomerDetailView"
}
PoljeVrstaObaveznoOpis
viewportstringDaMjesto u Dashboardu na kojem se prikaz iscrtava (pogledajte Referencu viewporta)
componentstringDaNaziv React komponente koja se iscrtava (mora odgovarati nazivu izvezene komponente)

Jedna aplikacija može deklarirati više prikaza za različite viewporte:

"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 s kojim se vanjskim domenama vaša aplikacija smije povezivati:

{
"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"
}
}
PoljeVrstaObaveznoOpis
connect-srcstring[]NeDomene kojima aplikacija smije slati mrežne zahtjeve
image-srcstring[]NeDomene s kojih aplikacija smije učitavati slike
purposestringDaObjašnjenje zašto su te vanjske veze potrebne

Caution

Navedite samo domene s kojima se vaša aplikacija doista treba povezivati. Prevelik broj CSP unosa može izazvati dodatnu pomnost pri pregledu.

PostInstallAction

Određuje što se događa odmah nakon što korisnik instalira vašu aplikaciju:

{
"post_install_action": {
"type": "onboarding"
}
}
PoljeVrstaObaveznoOpis
typestringDaVrsta radnje (pogledajte u nastavku)
urlstringUvjetnoURL za radnje vrste external

Vrste radnji

VrstaPonašanje
"onboarding"Otvara prikaz za uvođenje u rad unutar Dashboarda
"settings"Otvara prikaz postavki aplikacije u Dashboardu
"external"Preusmjerava korisnika na vanjski URL (traži polje url)

Primjeri:

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

Za detaljne obrasce implementacije pogledajte vodič o radnjama nakon instalacije.

Konstante

Definirajte statične parove ključ-vrijednost dostupne u aplikaciji tijekom izvođenja:

{
"constants": {
"API_BASE_URL": "https://api.tajo.io/v1",
"SYNC_INTERVAL_SECONDS": "300",
"MAX_BATCH_SIZE": "100"
}
}
  • Sve vrijednosti moraju biti nizovi znakova
  • Konstante se ugrađuju u aplikaciju u trenutku izgradnje
  • Konstante koristite za konfiguraciju koja se razlikuje među okruženjima
  • Nikada ne pohranjujte tajne ni API ključeve kao konstante, umjesto toga upotrijebite Secret Store API

Pristup konstantama u kodu aplikacije:

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

Prošireni manifest za razvoj

Tijekom 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
}
}

Odjeljak dev uklanja se u produkcijskim izgradnjama i pri slanju aplikacije. Koristite ga isključivo za postavke koje olakšavaju lokalni razvoj.

Provjera valjanosti

Provjerite valjanost svojeg manifesta prije slanja:

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

Uobičajene pogreške pri provjeri valjanosti:

PogreškaUzrokRješenje
Invalid permissionNepoznat identifikator dopuštenjaProvjerite Referencu dopuštenja
Invalid viewportNepoznat identifikator viewportaProvjerite Referencu viewporta
Missing purposeDopuštenje bez polja purposeDodajte niz purpose svakom dopuštenju
Invalid versionVerzija koja nije u semver formatuKoristite oblik MAJOR.MINOR.PATCH
Icon not foundPutanja do ikone ne razrješava seProvjerite postoji li datoteka ikone na navedenoj putanji

Zatražite rani pristup

Unesite ime te adresu e-pošte ili telefonski broj. Poslat ćemo vam pojedinosti o pristupu platformi Tajo.

automatsko prepoznavanje
AI asistent

Bok! Pitajte me o dokumentaciji.