Swagger

Obchod doplnkov

Obchod doplnkov je zoznam doplnkov ponúkaných priamo v KROS aplikácii, odkiaľ si ich zákazník jedným klikom nainštaluje. Zaradenie doplnku do tohto zoznamu nie je samoobslužné — vyžaduje dohodu s KROSom a manifest, ktorý opisuje váš doplnok strojovo čitateľným spôsobom.

Vyžaduje dohodu s KROSom

Táto stránka opisuje kontrakt manifest.json a pravidlá nahrávania doplnku, ktoré potrebuje partner so schváleným prístupom do obchodu doplnkov. Samotné zaradenie doplnku do zoznamu nie je samoobslužné (pozri nižšie) — vybavuje sa cez integracie@kros.sk.

Ako sa doplnok dostane do obchodu

Na rozdiel od Integration Consent, ktorý si napojíte úplne samoobslužne bez akejkoľvek registrácie, zaradenie doplnku do obchodu doplnkov samoobslužné nie je. Napíšte na integracie@kros.sk a uveďte:

Na základe toho KROS pridelí pluginId/partnerId a dohodne technické detaily zvoleného spôsobu autentifikácie. Až potom má zmysel pripravovať manifest.json a balík na nahratie.

manifest.json

manifest.json je jediný zdroj pravdy o tom, ako sa doplnok volá, čo robí, kto je jeho partner a ako sa doň prihlasuje. Má štyri povinné najvyššie objekty:

Objekt Polia
plugin id, partnerId, name, version, changelog, requiresReconfiguration
display shortDescription (10 – 150 znakov), detail.description (markdown, 50 – 20 000 znakov), categories (1 – 3 položky), tags (najviac 10)
partner name, website, privacyPolicyUrl, contact (aspoň jeden kanál), license
authentication jeden z dvoch spôsobov — pozri nižšie

plugin.id je stabilný identifikátor doplnku, jeho stredný segment sa musí zhodovať s plugin.partnerId. plugin.changelog je pri prvej verzii null, pri každej ďalšej verzii je povinný. partner.contact musí niesť aspoň jeden kontaktný kanál — e-mail, support URL alebo vyplnené website.

Dva spôsoby autentifikácie v manifeste

Pole authentication.method je presne jedno z dvoch:

Príklad manifestu so spôsobom token-broker (skrátené o nepovinné polia):

manifest.json
{
  "manifestVersion": "1.0.0",
  "plugin": {
    "id": "sk.partner-id.doplnok-id",
    "partnerId": "partner-id",
    "name": "Názov doplnku",
    "version": "1.0.0",
    "changelog": null,
    "requiresReconfiguration": false
  },
  "display": {
    "shortDescription": "Krátky popis doplnku (10 – 150 znakov).",
    "categories": ["accounting"],
    "tags": ["priklad", "doplnok"],
    "detail": { "description": "## Názov doplnku\n\nMarkdown popis, 50 – 20000 znakov." }
  },
  "partner": {
    "name": "Partner s.r.o.",
    "website": "https://partner.example.com",
    "privacyPolicyUrl": "https://partner.example.com/privacy",
    "contact": { "emails": ["support@partner.example.com"] },
    "license": { "type": "proprietary", "url": "https://partner.example.com/eula" }
  },
  "authentication": {
    "method": "token-broker",
    "tokenBroker": {
      "baseUrl": "https://doplnok.partner.example.com",
      "apiKeySecretRef": "Plugins:sk.partner-id.doplnok-id:ApiKey",
      "apiKey": "VLOZ_SEM_API_KEY"
    }
  }
}

API kľúč je zdieľané tajomstvo

Hodnota authentication.tokenBroker.apiKey je zdieľaný secret medzi KROSom a vaším doplnkom. Musí k vám prísť bezpečným kanálom (nikdy e-mailom v čistom texte) a nesmie sa nikdy commitnúť do repozitára — ani do príkladov, ani do konfigurácie, ktorá sa verzuje spolu s kódom. V manifeste, ktorý nahrávate, drží miesto placeholder ako vyššie; skutočnú hodnotu vkladajte až v mieste, kde beží doplnok (secret store, premenné prostredia).

Balík

Endpoint na nahratie doplnku prijíma .zip archív, ktorý má v koreňovom adresári súbor manifest.json (a spravidla ikonu doplnku). Samotný manifest.json bez zabalenia do .zip sa nahrať nedá.

categories je špecifické pre nasadenie

Zoznam hodnôt povolených v display.categories nie je univerzálny naprieč všetkými nasadeniami KROS platformy — konkrétne nasadenie môže mať inú podmnožinu (alebo inú sadu) kategórií. Pred vyplnením manifestu si zoznam hodnôt overte proti cieľovému nasadeniu, ktorému doplnok posielate; nespoliehajte sa na to, že hodnota, ktorá fungovala inde, bude prijatá aj tu.