Manifest reference

Every field of turbodl-plugin.json, generated from the JSON Schema that validates it.

This page has no en version yet — the original text below is shown as it is in the repository. Contributions are welcome.
docs/plugins/turbodl-plugin.schema.jsonview on GitHubraw file

Machine-readable descriptor placed at the root of a TurboDL plugin repository.

FieldType Notes
manifestVersionstringrequiredManifest schema version.
1.0
idstringrequiredMust equal the plugin's Plugin.id. Lowercase, dot-separated <category>.<name>.
pattern: ^[a-z0-9]+(\.[a-z0-9][a-z0-9-]*)+$
namestringrequired
descriptionstring
versionstringrequiredPlugin release version (semantic).
pattern: ^\d+\.\d+\.\d+([-+].*)?$
authorstring
homepagestring
licensestring
categorystringrequiredWhich shelf the plugin sits on. turbodl-protocol is for a plugin that declares the protocols/schemes it handles (the `protocols` field; it may also implement a DownloadBackend); turbodl-backend is for a plugin whose identity is implementing a backend; turbodl-loader is for a plugin that loads plugins written in another language.
turbodl-backendturbodl-protocolturbodl-adapterturbodl-parserturbodl-hookturbodl-loader
capabilitiesarrayCapability ids this plugin provides, in namespaced form <namespace>.cap.<name> (the TurboDL project's own namespace is dev.turbodl.cap.*, e.g. dev.turbodl.cap.hls). The namespace keeps two vendors' same-named capabilities from colliding. A capability is a market/diagnostics label only: it grants NO permission and changes no behavior. Legacy bare strings such as turbodl-hls (or turbodl-parser) do NOT match and are rejected; capability GitHub topics keep the turbodl-* spelling (see MARKET.md).
protocolsarrayProtocols/schemes this plugin declares it can handle, e.g. ["hls"], ["magnet","bt","ed2k"], ["ftp","sftp","webdavs"]. One plugin MAY declare several: the ecosystem model is one plugin for many protocols, not one plugin per protocol. The host builds a load-time scheme -> plugin index from these declarations (host.protocols), used for discovery, market filtering, diagnostics and conflict reporting. A declaration grants NO permission and does not by itself route downloads: a DownloadBackend (see extensionPoints) still decides what handles a request. Names are lowercase URL-scheme-like tokens; note a content type is not a URL scheme (an .m3u8 URL's scheme is http(s)), so declare the name the market should know the plugin by.
turbodlobjectrequired
entryobjectrequired
artifactobject
extensionPointsarrayExtension-point ids this plugin registers, e.g. turbo.downloadBackend.
servicesarrayService ids this plugin publishes.

Minimal manifest

turbodl-plugin.json
{
  "manifestVersion": "1.0",
  "id": "parser.example",
  "name": "Example parser",
  "description": "Turns example:// links into download requests.",
  "version": "0.1.0",
  "author": "you",
  "homepage": "https://github.com/you/turbodl-plugin-example",
  "license": "MIT",
  "category": "turbodl-parser",
  "capabilities": [
    "dev.turbodl.cap.parser"
  ],
  "protocols": [
    "example"
  ],
  "turbodl": {
    "apiMajor": 1,
    "requiredApiVersion": "1.0.0"
  },
  "entry": {
    "language": "kotlin",
    "pluginClass": "com.example.ExamplePlugin"
  },
  "extensionPoints": [
    "turbo.linkParser"
  ]
}

Download the schema itself: https://turbodl.dev/schemas/turbodl-plugin.schema.json

← All documentation