Skip to content

manifest.json reference

This page details the attributes of a Castopod Plugin’s manifest, which must be a JSON file.

name (required)

The plugin name, including ‘vendor-name/’ prefix. Examples:

  • acme/hello-world
  • adaures/click

The name must be lowercase and consist of words separated by -, . or _. The complete name should match ^[a-z0-9]([_.-]?[a-z0-9]+)*\/[a-z0-9]([_.-]?[a-z0-9]+)*$.

version (required)

The plugin’s semantic version (eg. 1.0.0) - see https://semver.org/

description

The plugin’s description. This helps people discover your plugin when listed in repositories.

authors

Array one or more persons having authored the plugin. A person is an object with a required “name” field and optional “email” and “url” fields:

{
"name": "Jean Deau",
"email": "jean.deau@example.com",
"url": "https://example.com/"
}

Or you can shorten the object into a single string:

"Jean Deau <jean.deau@example.com> (https://example.com/)"

homepage

The URL to the project homepage.

license

Specify a license for your plugin so that people know how they are permitted to use it, and any restrictions you’re placing on it.

private

Whether or not to publish the plugin in public directories. If set to true, directories should refuse to publish the plugin.

keywords

Array of strings to help your plugin get discovered when listed in repositories.

hooks

List of hooks used by the plugin. If the hook is not specified, Castopod will not run it.

settings

Declare settings forms for persisting user data. The plugin’s settings forms can be declared at three levels: general, podcast, and episode.

Each level accepts one or more fields, identified by a key.

{
"settings": {
"general": { // general settings form
"field-key": {
"type": "text", // default field type: a text input
"label": "Enter a text"
},
},
"podcast": {}, // settings form for each podcast
"episode": {}, // settings form for each episode
}
}

The general, podcast, and episode settings are of Fields object with each property being a field key and the value being a Field object.

Field object

A field is a form element:

PropertyTypeNote
typecheckbox | datetime | email | markdown | number | radio-group | select-multiple | select | text | textarea | toggler | urlDefault is text
label (required)stringCan be translated (see i18n)
hintstringCan be translated (see i18n)
helperstringCan be translated (see i18n)
optionalbooleanDefault is false
optionsOptionsRequired for radio-group, select-multiple, and select types.

Options object

The Options object properties are option keys and the value is an Option.

Option object
PropertyTypeNote
label (required)stringCan be translated (see i18n)
hintstringCan be translated (see i18n)

files

Array of file patterns that describes the entries to be included when your plugin is installed.

repository

Repository where the plugin’s code lives. Helpful for people who want to contribute.