← Addonium

17. Example Manifests

17.1 Open Addon: plain, public, no auth

{
  "addonium": "1.0",
  "id": "club.example.openradio",
  "name": "Open Radio",
  "version": "1.0.0",
  "description": "A public collection of Creative Commons tracks.",
  "type": "open",
  "auth": null,
  "baseUrl": "https://openradio.example.com",
  "distribution": ["manifest"],
  "resources": ["search", "stream"],
  "types": ["track"],
  "storesData": false
}

17.2 Locked Addon: tokenized URL, no client restriction

{
  "addonium": "1.0",
  "id": "com.example.premiumsource",
  "name": "Premium Source",
  "version": "3.2.0",
  "type": "locked",
  "auth": {
    "method": "url-token",
    "tokenGrant": "self-serve",
    "grantUrl": "https://example.com/account/addon-token"
  },
  "baseUrl": "https://api.example.com/t/{token}",
  "distribution": ["manifest"],
  "resources": ["search", "stream", "library"],
  "storesData": true
}

17.3 Locked Addon: compiled module + strict client allowlist

{
  "addonium": "1.0",
  "id": "com.example.walledgarden",
  "name": "Walled Garden Source",
  "version": "0.9.1",
  "type": "locked",
  "auth": { "method": "module-key" },
  "distribution": ["module"],
  "resources": ["search", "stream"],
  "clients": {
    "enforced": true,
    "allow": ["com.myplayer.official"],
    "identify": "header",
    "header": "X-Addonium-Client",
    "onDeny": { "status": 403, "message": "Only the official client may use this addon." }
  },
  "storesData": false
}