diff --git a/json-schema/config-schema.json b/json-schema/config-schema.json index 64a6b559..c3c831f4 100644 --- a/json-schema/config-schema.json +++ b/json-schema/config-schema.json @@ -65,12 +65,12 @@ "type": "string" }, "timeout": { - "description": "Connection timeout for this Plex server", + "description": "Connection timeout in seconds for this Plex server", "type": "integer", "minimum": 0 }, "db_cache": { - "description": "Sets DB Cache value for this Plex server", + "description": "Sets DB Cache value for this Plex server in MB", "oneOf": [ { "type": "integer" }, { "type": "string", "pattern": "^$" } @@ -116,7 +116,7 @@ "minimum": 0 }, "db_cache": { - "description": "Sets DB Cache value for this Plex server", + "description": "Sets DB Cache value for this Plex server in MB", "oneOf": [ { "type": "integer" }, { "type": "string", "pattern": "^$" } @@ -178,7 +178,7 @@ "cache_expiration": { "type": "integer", "minimum": 1, - "description": "An integer greater than 0" + "description": "An integer greater than 0 in days" } }, "required": [ @@ -242,7 +242,7 @@ "cache_expiration": { "type": "integer", "minimum": 1, - "description": "An integer greater than 0" + "description": "An integer greater than 0 in days" } }, "required": [ @@ -261,7 +261,7 @@ "cache_expiration": { "type": "integer", "minimum": 1, - "description": "An integer greater than 0" + "description": "An integer greater than 0 in days" } }, "required": [ @@ -320,7 +320,7 @@ "cache_expiration": { "type": "integer", "minimum": 1, - "description": "An integer greater than 0" + "description": "An integer greater than 0 in days" }, "username": { "type": "string" @@ -594,58 +594,73 @@ "additionalProperties": false, "properties": { "cache": { - "type": "boolean" + "type": "boolean", + "description": "Used to control PMM's cache database. Allow Plex Meta Manager to create and maintain a local cache database for faster subsequent processing. The cache file is created in the same directory as the configuration file." }, "cache_expiration": { "type": "integer", "minimum": 1, - "description": "An integer greater than 0" + "description": "Used to control how long data is cached for. Set the number of days before each cache mapping expires and has to be re-cached. An integer greater than 0 in days" }, "run_order": { + "description": "Used to specify the run order of the library components. Specify the run order of the library components [Library Operations, Collection Files and Overlay Files]", "type": "array", "uniqueItems": true, "items": {"enum": ["operations", "metadata", "collections", "overlays"]} }, "asset_directory": { + "description": "Used to define where local assets are located. Specify the directories where assets (posters, backgrounds, etc) are located.", "oneOf": [ { "type": "string"}, { "type": "array", "uniqueItems": true, "items": {"type": "string" }} ] }, "asset_folders": { + "description": "Used to control the asset directory folder structure. While true, PMM will search the asset_directory for a dedicated folder per item vs while false will look for an image.", "type": "boolean" }, "asset_depth": { + "description": "Used to control the depth of search in the asset directory. At each asset level, PMM will look for either medianame.ext [such as Star Wars.png] or a dedicated folder containing poster.ext. i.e. /Star Wars/poster.png and /Star Wars.png are both asset depth 0, whilst /Movies/Star Wars/poster.png and /Movies/Star Wars.png are both asset level 1.", "type": "integer", "minimum": 0 }, "create_asset_folders": { + "description": "Used to automatically create asset folders when none exist. Whilst searching for assets, if an asset folder cannot be found within the asset_directory one will be created. Asset Searches can happen in a number of ways.", "type": "boolean" }, "prioritize_assets": { + "description": "Used to prioritize asset_directory images over all other images types. When determining which image to use on an item prioritize the asset_directory over all other images types.", "type": "boolean" }, "dimensional_asset_rename": { + "description": "Used to automatically rename asset files based on their dimensions. Whilst searching for assets, scan the folders within the asset_directory and if an asset poster (i.e. /ASSET_NAME/poster.ext) was not found, rename the first image found that has a height greater than or equal to its width to poster.ext. If an asset background (i.e. /ASSET_NAME/background.ext), rename the first image found that has a width greater than its height to background.ext.", "type": "boolean" }, "download_url_assets": { + "description": "Used to download url images into the asset directory. Whilst searching for assets, download images set within Collection/Metadata/Playlist files( i.e. images set by url_poster or url_background) into the asset folder if none are already present.", "type": "boolean" }, "show_missing_season_assets": { + "description": " Used to show any missing season assets. Whilst searching for assets, when scanning for assets for a TV Show, if Season posters are found (i.e. /ASSET_NAME/Season##.ext), notify the user of any seasons which do not have an asset image.", "type": "boolean" }, "show_missing_episode_assets": { + "description": "Used to show any missing episode assets. Whilst searching for assets, when scanning for assets for a TV Show, if an Episode Title Card is found (i.e. /ASSET_NAME/S##E##.ext), notify the user of any episodes which do not have an asset image.", "type": "boolean" }, "show_asset_not_needed": { + "description": "Used to show/hide the update not needed messages. Whilst searching for assets, show or hide the update not needed messages.", "type": "boolean" }, "sync_mode": { + "description": "Used to set the sync_mode for collections and playlists. Sets the sync_mode for collections and playlists. Setting the sync_mode directly in a collection or playlist definition will override the sync_mode for that definition.", "enum": ["sync", "append"] }, "minimum_items": { + "description": "Used to control minimum items requires to build a collection/playlist. Set the minimum number of items that must be found in order to build or update a collection/playlist.", "type": "integer", "minimum": 1 }, "default_collection_order": { + "description": "Used to set the collection_order for every collection run. Set the collection_order for every collection run by PMM unless the collection has a specific collection_order", "type": ["string", "null"], "enum": [ "added.asc", "added.desc", "audience_rating.asc", @@ -661,40 +676,52 @@ ] }, "delete_below_minimum": { + "description": "Used to delete collections below minimum_items. When a collection is run, delete the collection if it is below the minimum number specified by minimum_items.", "type": "boolean" }, "delete_not_scheduled": { + "description": "Used to delete collections not scheduled. If a collection is skipped due to it not being scheduled, delete the collection.", "type": "boolean" }, "run_again_delay": { + "description": "Used to control the number of minutes to delay running run_again collections. Set the number of minutes to delay running run_again collections after daily run is finished. For example, if a collection adds items to Sonarr/Radarr, the library can automatically re-run 'X' amount of time later so that any downloaded items are processed.", "type": "integer", "minimum": 0 }, "missing_only_released": { + "description": "Used to filter unreleased items from missing lists. Whilst running a collection or playlist, when PMM handles missing items to either report it to the user, report it to a file, or send it to Radarr/Sonarr all unreleased items will be filtered out.", "type": "boolean" }, "only_filter_missing": { + "description": "Used to have the filter only apply to missing items. Only items missing from a collection will be filtered. Only specific filters can filter missing. See Filters for more information.", "type": "boolean" }, "show_unmanaged": { + "description": "Used to show collections not managed by PMM. List all collections not managed by Plex Meta Manager at the end of each run.", "type": "boolean" }, "show_unconfigured": { + "description": "Used to show collections not in the current run. List all collections not configured in the current Plex Meta Manager run at the end of each run.", "type": "boolean" }, "show_filtered": { + "description": "Used to show filtered items. List all items which have been filtered out of a collection or playlist (i.e. if it doesn't meet the filter criteria)", "type": "boolean" }, "show_options": { + "description": "Used to show attribute options from plex. While show_options is true the available options for an attribute when using plex_search, smart_filter or filters will be shown. i.e. a smart_filter on the genre attribute will return all of the attributes within the specified library.", "type": "boolean" }, "show_missing": { + "description": "Used to show missing items from collections or playlists. While show_missing is true items missing from collections or playlists will be displayed.", "type": "boolean" }, "show_missing_assets": { + "description": "Used to print a message when assets are missing. Display missing asset warnings for items, collections, and playlists.", "type": "boolean" }, "save_report": { + "description": "Used to save a report YAML file. Save a report of the items added, removed, filtered, or missing from collections to a YAML file in the same directory as the file run.", "type": "boolean" }, "tvdb_language": { @@ -720,34 +747,100 @@ "uig", "ukr", "urd", "uzb", "ven", "vie", "vol", "wln", "wol", "xho", "yid", "yor", "zha", "zho", "zul" ], - "description": "This field can be either null or a valid ISO 639-2 language code." + "description": "Specify the language to query TVDb in. This field can be either null or a valid ISO 639-2 language code." }, "ignore_ids": { - "type": "null" + "description": "List of TMDb/TVDb IDs to ignore. Set a null, a single TMDb/TVDb ID, or a comma-separated string of TMDb/TVDb IDs to ignore in all collections.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "pattern": "^(\\d+)(,(\\d+))*$" + } + ] }, "ignore_imdb_ids": { - "type": "null" + "description": "List of IMDb IDs to ignore. Set a null, a single IMDb ID, or a comma-separated string of IMDb IDs to ignore in all collections.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "string", + "pattern": "^(tt\\d{7})(,(tt\\d{7}))*$" + } + ] }, "item_refresh_delay": { + "description": "Time to wait between each item_refresh. Specify the amount of time to wait between each item_refresh of every movie/show in a collection/playlist.", "type": "integer", "minimum": 0 }, "playlist_sync_to_users": { - "type": [ "string", "null" ] + "description": "Set the default playlist sync_to_users. To Sync a playlist to only yourself, leave playlist_sync_to_users blank/null. Therefore, leaving it blank, 'all', a list of users, or a comma-separated string of users is accepted", + "anyOf": [ + { + "type": "string", + "enum": ["all"] + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + { + "type": "string", + "pattern": "^([^,]+)(,[^,]+)*$" + }, + { + "type": "null" + } + ] }, "playlist_exclude_users": { - "type": "null" + "description": "Set the default playlist exclude_users. Provide a null value, a list of users, or a comma-separated string of users to be excluded in the playlist.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + { + "type": "string", + "pattern": "^([^,]+)(,[^,]+)*$" + } + ] }, "playlist_report": { + "description": "Used to print out a playlist report. Set playlist_report to true to print out a playlist report at the end of the log.", "type": "boolean" }, "verify_ssl": { + "description": "Turn SSL Verification on or off.", "type": "boolean" }, "custom_repo": { - "type": "null" + "description": "Used to set up the custom repo file block type. Specify where the repo attribute's base is when defining collection_files, metadata_files, playlist_file, and overlay_files.", + "oneOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] }, "check_nightly": { + "description": "Will check nightly for updates instead of develop.", "type": "boolean" } },