Справочник за манифест на App
Манифест файлът stripe-app.json е централната конфигурация за вашия Stripe App. Той декларира идентичността, разрешенията, UI изгледите, политиките за сигурност и поведението след инсталиране на вашия app.
Пример за пълен манифест
{ "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" }}Справочник за схемата
Полета на горно ниво
| Поле | Тип | Задължително | Описание |
|---|---|---|---|
id | string | Да | Уникален идентификатор на app в обратна доменна нотация |
version | string | Да | Семантичен низ за версия (напр. "1.2.0") |
name | string | Да | Показвано им, видимо на пазара (максимум 35 знака) |
icon | string | Да | Относителен път до файла с иконата на app (300x300 PNG или SVG) |
distribution_type | string | Да | "public" за пазара или "private" за вътрешна употреба |
sandbox_install_compatible | boolean | Не | Дали app-ът може да бъде инсталиран в sandbox/тестов режим |
stripe_api_access_type | string | Не | Метод за достъп до API: "oauth" или "api_key" |
allowed_redirect_uris | string[] | Не | Разрешени OAuth URI за пренасочване за потока на инсталиране |
permissions | PermissionRequest[] | Да | Масив от заявки за разрешения |
ui_extension | UIExtensionManifest | Не | Конфигурация на UI разширение |
post_install_action | PostInstallAction | Не | Действие след инсталиране на app |
constants | object | Не | Двойки ключ-стойност, достъпни в app-а по време на изпълнение |
Типове действия след инсталиране
| Тип | Поведение |
|---|---|
"onboarding" | Отваря изгледа за въвеждане на app-а в таблото |
"settings" | Отваря изгледа за настройки на app-а в таблото |
"external" | Пренасочва потребителя към външен URL (изисква поле url) |
Валидиране
Валидирайте вашия манифест преди качване:
# Валидиране на синтакса и схемата на манифестаstripe apps validate
# Проверка за чести проблемиstripe apps checkЧести грешки при валидиране:
| Грешка | Причина | Поправка |
|---|---|---|
Invalid permission | Неизвестен идентификатор на разрешение | Проверете Справочник за разрешения |
Invalid viewport | Неизвестен идентификатор на viewport | Проверете Справочник за viewport-и |
Missing purpose | Разрешение без поле purpose | Добавете низ за purpose към всяко разрешение |
Invalid version | Низ за версия, несъответстващ на semver | Използвайте формат MAJOR.MINOR.PATCH |
Icon not found | Пътят на иконата не се разрешава | Проверете дали файлът с иконата съществува на посочения път |