---
title: "Referenca manifesta aplikacije | Tajo"
description: "Potpuna referenca sheme za datoteku manifesta stripe-app.json kojom se konfiguriraju Stripe aplikacije"
url: https://tajo.io/hr/docs/stripe-apps/app-manifest/
markdown: https://tajo.io/hr/docs/stripe-apps/app-manifest.md
lang: hr-HR
author: "Set Noa"
author_url: https://tajo.io/hr/set-noa/
robots: noindex
---

Zatražite rani pristup

Unesite ime i poslovnu adresu e-pošte. Poslat ćemo vam poveznicu za potvrdu zahtjeva za pristup Taju.

# Referenca manifesta aplikacije

[Set Noa](https://tajo.io/hr/set-noa/)

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.

Caution

**Status: planirano, nije izrađeno.** Tajo nema Stripe aplikaciju, pa se ništa iz ovog odjeljka danas ne može instalirati. Identifikatori aplikacije, URL-ovi i vjerodajnice na ovoj stranici ilustrativni su rezervirani unosi, a ne stvarne krajnje točke.

## Potpun primjer manifesta

```json
{
  "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": "Read 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.example.com",
        "https://api.brevo.com"
      ],
      "image-src": [
        "https://cdn.example.com",
        "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.example.com/v1",
    "SYNC_INTERVAL_SECONDS": "300"
  }
}
```

## Referenca sheme

### Polja najviše razine

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `id` | string | Da | Jedinstveni identifikator aplikacije u obrnutoj domenskoj notaciji (slug format) |
| `version` | string | Da | Niz semantičke verzije (npr. `"1.2.0"`) |
| `name` | string | Da | Prikazano ime na tržnici aplikacija (najviše 35 znakova) |
| `icon` | string | Da | Relativna putanja do datoteke ikone aplikacije (300x300 PNG ili SVG) |
| `distribution_type` | string | Da | `"public"` za tržnicu aplikacija ili `"private"` za internu upotrebu |
| `sandbox_install_compatible` | boolean | Ne | Može li se aplikacija instalirati u sandbox ili testnom načinu rada |
| `stripe_api_access_type` | string | Ne | Način pristupa API-ju: `"oauth"` ili `"api_key"` |
| `allowed_redirect_uris` | string\[\] | Ne | Dopušteni OAuth URI-ji preusmjeravanja za tijek instalacije |
| `permissions` | PermissionRequest\[\] | Da | Niz zahtjeva za dopuštenja |
| `ui_extension` | UIExtensionManifest | Ne | Konfiguracija proširenja sučelja |
| `post_install_action` | PostInstallAction | Ne | Radnja koja se izvodi nakon instalacije aplikacije |
| `constants` | object | Ne | Parovi ključ-vrijednost dostupni u aplikaciji tijekom izvođenja |

### id

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

```json
"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:

```json
"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:

| Vrijednost | Opis |
| --- | --- |
| `"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:

| Vrijednost | Opis |
| --- | --- |
| `"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:

```json
{
  "permission": "customer_read",
  "purpose": "Read customer profiles to sync with Brevo contacts"
}
```

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `permission` | string | Da | Identifikator dopuštenja (pogledajte [Referencu dopuštenja](https://tajo.io/hr/docs/stripe-apps/permissions)) |
| `purpose` | string | Da | Ljudima 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:

```json
{
  "ui_extension": {
    "views": [...],
    "content_security_policy": {...}
  }
}
```

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `views` | ViewManifest\[\] | Da | Niz deklaracija prikaza |
| `content_security_policy` | CSPRequest | Ne | Pravilo Content Security Policy za vanjske resurse |

## ViewManifest

Svaki prikaz povezuje React komponentu s viewportom u Stripe Dashboardu:

```json
{
  "viewport": "stripe.dashboard.customer.detail",
  "component": "CustomerDetailView"
}
```

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `viewport` | string | Da | Mjesto u Dashboardu na kojem se prikaz iscrtava (pogledajte [Referencu viewporta](https://tajo.io/hr/docs/stripe-apps/viewports)) |
| `component` | string | Da | Naziv React komponente koja se iscrtava (mora odgovarati nazivu izvezene komponente) |

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

```json
"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:

```json
{
  "content_security_policy": {
    "connect-src": [
      "https://api.example.com",
      "https://api.brevo.com"
    ],
    "image-src": [
      "https://cdn.example.com"
    ],
    "purpose": "Connect to Tajo API for data sync and load images from CDN"
  }
}
```

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `connect-src` | string\[\] | Ne | Domene kojima aplikacija smije slati mrežne zahtjeve |
| `image-src` | string\[\] | Ne | Domene s kojih aplikacija smije učitavati slike |
| `purpose` | string | Da | Objaš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:

```json
{
  "post_install_action": {
    "type": "onboarding"
  }
}
```

| Polje | Vrsta | Obavezno | Opis |
| --- | --- | --- | --- |
| `type` | string | Da | Vrsta radnje (pogledajte u nastavku) |
| `url` | string | Uvjetno | URL za radnje vrste `external` |

### Vrste radnji

| Vrsta | Ponaš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:

```json
// 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](https://tajo.io/hr/docs/stripe-apps/post-install).

## Konstante

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

```json
{
  "constants": {
    "API_BASE_URL": "https://api.example.com/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:

```typescript
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:

```json
{
  "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:

```bash
# Validate manifest syntax and schema
stripe apps validate

# Check for common issues
stripe apps check
```

Uobičajene pogreške pri provjeri valjanosti:

| Pogreška | Uzrok | Rješenje |
| --- | --- | --- |
| `Invalid permission` | Nepoznat identifikator dopuštenja | Provjerite [Referencu dopuštenja](https://tajo.io/hr/docs/stripe-apps/permissions) |
| `Invalid viewport` | Nepoznat identifikator viewporta | Provjerite [Referencu viewporta](https://tajo.io/hr/docs/stripe-apps/viewports) |
| `Missing purpose` | Dopuštenje bez polja purpose | Dodajte niz purpose svakom dopuštenju |
| `Invalid version` | Verzija koja nije u semver formatu | Koristite oblik `MAJOR.MINOR.PATCH` |
| `Icon not found` | Putanja do ikone ne razrješava se | Provjerite postoji li datoteka ikone na navedenoj putanji |
