Skip to main content

PluginManifestDto

Plugin manifest from the plugin itself

adminSetupInstructionsstring | nullnullable

Admin-facing setup instructions (e.g., how to create OAuth app, set client ID)

authorstring | nullnullable

Author

capabilities objectrequired

Plugin capabilities

externalIdSourcestring | nullnullable

External ID source for matching sync entries to series (e.g., "api:anilist")

metadataProviderstring[]

Content types this plugin can provide metadata for (e.g., ["series", "book"])

releaseSourceboolean

Whether the plugin declares the release_source capability (announces new chapter / volume releases for tracked series).

userReadSyncboolean

Can sync user reading progress

userRecommendationProviderboolean

Can provide personalized recommendations

wantsDetailedProgressboolean

Whether the plugin consumes the per-book reading-progress breakdown on the sync entries it receives. Only meaningful when user_read_sync is true.

wantsFullMetadataboolean

Whether the plugin consumes enriched series data (bibliographic metadata, custom metadata) on the sync/recommendation entries it receives.

configSchema object

Configuration schema documenting available config options

descriptionstring | nullnullable

Human-readable description of the configuration

fields object[]required

List of configuration fields

  • Array [
  • default

    Default value if not provided

    descriptionstring | nullnullable

    Description of what this field does

    example

    Example value for documentation

    keystringrequired

    Field name (key in JSON config)

    labelstringrequired

    Human-readable label

    requiredboolean

    Whether this field is required

    typestringrequired

    Field type — free-form documentation hint. Common values: "number", "string", "boolean", "string-array", "object". The host never validates stored config against this; it forwards the raw JSON to the plugin.

  • ]
  • contentTypesstring[]required

    Supported content types

    descriptionstring | nullnullable

    Description

    displayNamestringrequired

    Display name for UI

    homepagestring | nullnullable

    Homepage URL

    namestringrequired

    Unique identifier

    oauth object

    OAuth 2.0 configuration (if plugin supports OAuth)

    authorizationUrlstringrequired

    OAuth 2.0 authorization endpoint URL

    pkcebooleanrequired

    Whether to use PKCE (Proof Key for Code Exchange)

    scopesstring[]

    Required OAuth scopes

    tokenUrlstringrequired

    OAuth 2.0 token endpoint URL

    userInfoUrlstring | nullnullable

    Optional user info endpoint URL

    protocolVersionstringrequired

    Protocol version

    requiredCredentials object[]

    Required credentials

  • Array [
  • credentialTypestringrequired

    Input type for UI

    descriptionstring | nullnullable

    Description for the user

    keystringrequired

    Credential key (e.g., "api_key")

    labelstringrequired

    Display label (e.g., "API Key")

    requiredboolean

    Whether this credential is required

    sensitiveboolean

    Whether to mask the value in UI

  • ]
  • scopesstring[]

    Supported scopes

    searchUriTemplatestring | nullnullable

    URI template for searching on the plugin's website

    userSetupInstructionsstring | nullnullable

    User-facing setup instructions (e.g., how to connect or get a personal token)

    versionstringrequired

    Semantic version

    PluginManifestDto
    {
    "adminSetupInstructions": "string",
    "author": "string",
    "capabilities": {
    "externalIdSource": "string",
    "metadataProvider": [
    "string"
    ],
    "releaseSource": true,
    "userReadSync": true,
    "userRecommendationProvider": true,
    "wantsDetailedProgress": true,
    "wantsFullMetadata": true
    },
    "configSchema": {
    "description": "string",
    "fields": [
    {
    "description": "string",
    "key": "string",
    "label": "string",
    "required": true,
    "type": "string"
    }
    ]
    },
    "contentTypes": [
    "string"
    ],
    "description": "string",
    "displayName": "string",
    "homepage": "string",
    "name": "string",
    "oauth": {
    "authorizationUrl": "string",
    "pkce": true,
    "scopes": [
    "string"
    ],
    "tokenUrl": "string",
    "userInfoUrl": "string"
    },
    "protocolVersion": "string",
    "requiredCredentials": [
    {
    "credentialType": "string",
    "description": "string",
    "key": "string",
    "label": "string",
    "required": true,
    "sensitive": true
    }
    ],
    "scopes": [
    "string"
    ],
    "searchUriTemplate": "string",
    "userSetupInstructions": "string",
    "version": "string"
    }